chainlesschain 0.166.130 → 0.166.132
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.
- package/README.md +30 -4
- package/package.json +2 -2
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/AIOps-CHItp4vg.js +1 -0
- package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +1 -0
- package/src/assets/web-panel/assets/{ActionButton-Dzv1ReHF.js → ActionButton-nhMNWW_d.js} +1 -1
- package/src/assets/web-panel/assets/Analytics-DRc81BBI.js +3 -0
- package/src/assets/web-panel/assets/Analytics-Dr-1kvaM.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-BTBIIl1e.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-CVt7HMkp.js +3 -0
- package/src/assets/web-panel/assets/Artifacts-BuJgG5jf.js +1 -0
- package/src/assets/web-panel/assets/Artifacts-Dohtjyfl.css +1 -0
- package/src/assets/web-panel/assets/Audit-DDnViLtj.css +1 -0
- package/src/assets/web-panel/assets/Audit-msNg0aH-.js +1 -0
- package/src/assets/web-panel/assets/BackgroundAgents-BpcV8yWC.js +1 -0
- package/src/assets/web-panel/assets/BackgroundAgents-CH3Uc9sF.css +1 -0
- package/src/assets/web-panel/assets/Backup-CYh10zO3.css +1 -0
- package/src/assets/web-panel/assets/Backup-P53DADwG.js +1 -0
- package/src/assets/web-panel/assets/BaseInput-DFxT2yWN.js +1 -0
- package/src/assets/web-panel/assets/Chat-B5JvvQJb.css +1 -0
- package/src/assets/web-panel/assets/Chat-BXoHisHW.js +7 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DMGtSdDx.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-B5uzaLLP.js → Checkbox-B4g_ckJq.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +1 -0
- package/src/assets/web-panel/assets/Codegen-C6SSSOfp.js +1 -0
- package/src/assets/web-panel/assets/{Col-D3I2kUGu.js → Col-IO1NEUYL.js} +1 -1
- package/src/assets/web-panel/assets/Community-C2RejeOY.css +1 -0
- package/src/assets/web-panel/assets/Community-CdEBl93F.js +1 -0
- package/src/assets/web-panel/assets/{Compact-5GigOmb8.js → Compact-DYs0a9k7.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-BPnk7948.js +1 -0
- package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +1 -0
- package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +1 -0
- package/src/assets/web-panel/assets/Cowork-VLOTGbza.js +6 -0
- package/src/assets/web-panel/assets/Cron-_9GgQLJo.js +2 -0
- package/src/assets/web-panel/assets/Crosschain-B21yn0qy.js +1 -0
- package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +1 -0
- package/src/assets/web-panel/assets/DID-BX6k3jZi.css +1 -0
- package/src/assets/web-panel/assets/DID-mBeDgRZ7.js +2 -0
- package/src/assets/web-panel/assets/Dashboard-BckYYzhP.js +3 -0
- package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +1 -0
- package/src/assets/web-panel/assets/Dropdown-DEedqFiE.js +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-CMs0k9TB.js +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
- package/src/assets/web-panel/assets/EvolutionSettings-B00Qd0fN.js +1 -0
- package/src/assets/web-panel/assets/EvolutionSettings-BnQ91YHJ.css +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-DxMTAMa8.js +1 -0
- package/src/assets/web-panel/assets/Federation-B-UZw0LO.js +1 -0
- package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +1 -0
- package/src/assets/web-panel/assets/FormItemContext-CkafazEw.js +1 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-DEUG25ZJ.js +1 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
- package/src/assets/web-panel/assets/Git-D7dr9oz9.js +2 -0
- package/src/assets/web-panel/assets/{Git-BdHhxBWR.css → Git-DPuaGtg7.css} +1 -1
- package/src/assets/web-panel/assets/Governance-BoipmXaM.css +1 -0
- package/src/assets/web-panel/assets/Governance-DKlUJ1wg.js +1 -0
- package/src/assets/web-panel/assets/Inference-BJKqplap.js +1 -0
- package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-B78fB-bz.js +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +1 -0
- package/src/assets/web-panel/assets/Logs-DJGcHYH_.js +2 -0
- package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +1 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-BAxj61I3.css +1 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-DkcG_MxW.js +1 -0
- package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +1 -0
- package/src/assets/web-panel/assets/Marketplace-ucTbwByD.js +1 -0
- package/src/assets/web-panel/assets/McpTools-Cu1xZYYk.js +2 -0
- package/src/assets/web-panel/assets/McpTools-DSGHWYS_.css +1 -0
- package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +1 -0
- package/src/assets/web-panel/assets/Memory-DCGpXmi-.js +2 -0
- package/src/assets/web-panel/assets/MobileBridge-BQ-Uwwg7.css +1 -0
- package/src/assets/web-panel/assets/MobileBridge-BnKr0aAS.js +1 -0
- package/src/assets/web-panel/assets/MobileProjects-C5UvYJTP.js +1 -0
- package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
- package/src/assets/web-panel/assets/Mtc-D1UUl4WH.js +6 -0
- package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-D3aa8XP4.js +19 -0
- package/src/assets/web-panel/assets/Multisig-DiXdfJjO.js +7 -0
- package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +1 -0
- package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +1 -0
- package/src/assets/web-panel/assets/NLProgramming-DbWABgSE.js +1 -0
- package/src/assets/web-panel/assets/Notes-BP1DPl-R.js +7 -0
- package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-xaB6ONe7.js +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-D1uNcz3b.js +1 -0
- package/src/assets/web-panel/assets/Organization-BM3Lh8Q8.css +1 -0
- package/src/assets/web-panel/assets/Organization-DMLDGaf1.js +4 -0
- package/src/assets/web-panel/assets/{Overflow-ky9UfGv4.js → Overflow-DH4QPEoI.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-C0w0P4A3.js → OverrideContext-DLR1AtLy.js} +1 -1
- package/src/assets/web-panel/assets/P2P-Bl4OS10o.js +2 -0
- package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +1 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-D9XSE2YI.js +7 -0
- package/src/assets/web-panel/assets/Permissions-CUaPlr6d.js +4 -0
- package/src/assets/web-panel/assets/Permissions-Diejgkbs.css +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-Ba92dZk-.js +3 -0
- package/src/assets/web-panel/assets/PersonalDataHub-C_xhspRy.css +1 -0
- package/src/assets/web-panel/assets/Pipeline-Bh2okm-8.js +1 -0
- package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +1 -0
- package/src/assets/web-panel/assets/Privacy-Bmq3p4gC.js +1 -0
- package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +1 -0
- package/src/assets/web-panel/assets/ProjectInit-BPu2fdKR.js +2 -0
- package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
- package/src/assets/web-panel/assets/ProjectSettings-D6ABLpmt.js +2 -0
- package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
- package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
- package/src/assets/web-panel/assets/Projects-qWHEve0z.js +1 -0
- package/src/assets/web-panel/assets/Providers-CpAXh_6c.css +1 -0
- package/src/assets/web-panel/assets/Providers-D9DI-2hc.js +1 -0
- package/src/assets/web-panel/assets/{QrScannerModal-er_HkLCI.js → QrScannerModal-CxifoeD5.js} +1 -1
- package/src/assets/web-panel/assets/QrScannerModal-DFrn7rxS.css +1 -0
- package/src/assets/web-panel/assets/QuickAsk-DC1BvwR7.js +1 -0
- package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +1 -0
- package/src/assets/web-panel/assets/Recommend-CKqbMB5o.js +1 -0
- package/src/assets/web-panel/assets/RemoteSession-BGGzPdS5.js +5 -0
- package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +1 -0
- package/src/assets/web-panel/assets/Reputation-DH90O9-5.js +1 -0
- package/src/assets/web-panel/assets/Row-h7ovueJc.js +1 -0
- package/src/assets/web-panel/assets/RssFeed-Cze7YLaG.css +1 -0
- package/src/assets/web-panel/assets/RssFeed-DaHxXTZg.js +3 -0
- package/src/assets/web-panel/assets/Search-B6RalzTB.css +1 -0
- package/src/assets/web-panel/assets/Search-Bn6Nqpn4.js +1 -0
- package/src/assets/web-panel/assets/Security-13K57V_v.css +1 -0
- package/src/assets/web-panel/assets/Security-ClbBmPJi.js +4 -0
- package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +1 -0
- package/src/assets/web-panel/assets/Services-ChHLQwRn.js +2 -0
- package/src/assets/web-panel/assets/{Skeleton-CrFs6rUL.js → Skeleton-DfN6BFzt.js} +1 -1
- package/src/assets/web-panel/assets/Skills-BdjRyorN.css +1 -0
- package/src/assets/web-panel/assets/Skills-C926wDev.js +1 -0
- package/src/assets/web-panel/assets/Sla-DJzi1l1M.js +1 -0
- package/src/assets/web-panel/assets/Sla-K19oOyQc.css +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-_GSyVjm_.js +1 -0
- package/src/assets/web-panel/assets/SyncSettings-B67xnERe.js +1 -0
- package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
- package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +1 -0
- package/src/assets/web-panel/assets/Tasks-BaYZadcG.js +1 -0
- package/src/assets/web-panel/assets/Templates-BsMmCdZI.css +1 -0
- package/src/assets/web-panel/assets/Templates-Bu8kN1Xt.js +1 -0
- package/src/assets/web-panel/assets/Tenant-BM9qufw1.js +1 -0
- package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +1 -0
- package/src/assets/web-panel/assets/Terminal-MEdd5DjB.js +3 -0
- package/src/assets/web-panel/assets/Terminal-qPp9MaPu.css +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-C27kL2oU.js +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
- package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +1 -0
- package/src/assets/web-panel/assets/Tokens-Cvjd98VC.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-CXrW4Nry.js → Trigger-CLym84HI.js} +1 -1
- package/src/assets/web-panel/assets/Trust-Bv2JTaNN.js +1 -0
- package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +1 -0
- package/src/assets/web-panel/assets/UkeySign-CSCkNbtm.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-BFDXB4xh.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +1 -0
- package/src/assets/web-panel/assets/Wallet-CMEFrG_b.js +4 -0
- package/src/assets/web-panel/assets/Wallet-Dw8uV4Ug.css +1 -0
- package/src/assets/web-panel/assets/WebAuthn-DKx6xPPl.css +1 -0
- package/src/assets/web-panel/assets/WebAuthn-x4eO_Q4y.js +5 -0
- package/src/assets/web-panel/assets/WorkflowEditor-ClWEPgV1.js +1 -0
- package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +1 -0
- package/src/assets/web-panel/assets/{_getTag-DnrRH4E6.js → _getTag-BVc6NQ_K.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BpJsXlTK.js → chat-BdYOI4gM.js} +1 -1
- package/src/assets/web-panel/assets/{collapseMotion-CqM1QOwM.js → collapseMotion-B4IZiILV.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CUNg0-fh.js → colors-DcTBrGvS.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-C3tFHnhu.js → compact-item-Dn2ktVuj.js} +1 -1
- package/src/assets/web-panel/assets/createContext-XTreuyqp.js +1 -0
- package/src/assets/web-panel/assets/{debounce-CFGTTtN3.js → debounce-D9xTw4Sx.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +1 -0
- package/src/assets/web-panel/assets/echarts-CDp6K7pj.js +19 -0
- package/src/assets/web-panel/assets/{hasIn-CU6RIciB.js → hasIn-CFRNsYQd.js} +1 -1
- package/src/assets/web-panel/assets/{icons-DG5UD-6K.js → icons-DlxlFL4g.js} +4 -4
- package/src/assets/web-panel/assets/index-3RqDry-K.js +71 -0
- package/src/assets/web-panel/assets/{index-BPWJw4Ji.js → index-8METW_Wr.js} +1 -1
- package/src/assets/web-panel/assets/index-BBd64wj8.js +31 -0
- package/src/assets/web-panel/assets/index-BEyVNbNE.js +3 -0
- package/src/assets/web-panel/assets/index-BMLpP8QQ.js +1 -0
- package/src/assets/web-panel/assets/{index-BzhobTgZ.js → index-BSqydcDa.js} +1 -1
- package/src/assets/web-panel/assets/index-BV6LojRv.js +21 -0
- package/src/assets/web-panel/assets/index-BbMWvjLZ.js +1 -0
- package/src/assets/web-panel/assets/{index-KgR1f2Gq.js → index-Brc0BF-k.js} +2 -2
- package/src/assets/web-panel/assets/{index-D4njcYFw.js → index-CG9YLDmI.js} +1 -1
- package/src/assets/web-panel/assets/{index-6EwPIfXu.js → index-CNHWMMDX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEIoRm_c.js → index-COuEJdmr.js} +3 -3
- package/src/assets/web-panel/assets/{index-BG4zuFf0.js → index-CRW3AWdS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BOlAutGy.js → index-CUT4h5JB.js} +2 -2
- package/src/assets/web-panel/assets/index-CXMa7Z-S.js +1 -0
- package/src/assets/web-panel/assets/index-CbaPXyNc.js +19 -0
- package/src/assets/web-panel/assets/{index-Cq93VfoF.css → index-CfX1DEtk.css} +1 -1
- package/src/assets/web-panel/assets/{index-X6e0cGRU.js → index-CjHA_Q7s.js} +1 -1
- package/src/assets/web-panel/assets/index-CsnYp4qF.js +1 -0
- package/src/assets/web-panel/assets/index-D45vulkq.js +12 -0
- package/src/assets/web-panel/assets/index-D9kPBEqD.js +55 -0
- package/src/assets/web-panel/assets/index-DDTSgpXz.js +1 -0
- package/src/assets/web-panel/assets/index-DFl_a0n5.js +1 -0
- package/src/assets/web-panel/assets/index-DNdiAymC.js +1 -0
- package/src/assets/web-panel/assets/{index-BJjEAoDb.js → index-DQEu7uW0.js} +1 -1
- package/src/assets/web-panel/assets/index-DW9XncMy.js +21 -0
- package/src/assets/web-panel/assets/index-Daa1yCt_.js +1 -0
- package/src/assets/web-panel/assets/index-DdVpoNEQ.js +12 -0
- package/src/assets/web-panel/assets/index-Dhi4Oybt.js +1 -0
- package/src/assets/web-panel/assets/index-DoVoNjtJ.js +1 -0
- package/src/assets/web-panel/assets/{index-111hR8WZ.js → index-Vo7A4aiN.js} +4 -4
- package/src/assets/web-panel/assets/{index-lo9rgpyj.js → index-XdlYkgCa.js} +1 -1
- package/src/assets/web-panel/assets/{index-1L0tt7G2.js → index-ir2ZwWz5.js} +2 -2
- package/src/assets/web-panel/assets/index-kzyCd8a0.js +3 -0
- package/src/assets/web-panel/assets/{index-CyyhilXV.js → index-lnTt0Jps.js} +2 -2
- package/src/assets/web-panel/assets/{index-CLQjdKmE.js → index-ma-rJkfE.js} +1 -1
- package/src/assets/web-panel/assets/index-oE4jTpHK.js +13 -0
- package/src/assets/web-panel/assets/{index-K2Uqqkr1.js → index-r5sNECM5.js} +1 -1
- package/src/assets/web-panel/assets/index-uT4fRDzU.js +1 -0
- package/src/assets/web-panel/assets/index-xlS8pDS2.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-FI8D7E2x.js → initDefaultProps-mdL0oeZa.js} +1 -1
- package/src/assets/web-panel/assets/{isPlainObject-BWRMT62c.js → isPlainObject-_gz-soRW.js} +1 -1
- package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
- package/src/assets/web-panel/assets/motion-ZgVCKcEX.js +11 -0
- package/src/assets/web-panel/assets/{move-Vl1vUReW.js → move-A_28O5T2.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-6Cu2aFME.js → mtc-parser-0zlMjabo.js} +1 -1
- package/src/assets/web-panel/assets/{omit-VRKL8iSO.js → omit-DF7mU3yG.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DZfWsOe0.js → pickAttrs-Cmt8liJP.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-qmcOUc4W.js → placementArrow-DaMDC57b.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BLB6SsSw.js → responsiveObserve-CHw_f2d3.js} +1 -1
- package/src/assets/web-panel/assets/{slide-41jdYeSH.js → slide-DJS9fFQq.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Yn8OQ5ey.js → statusUtils-Bk3XdZwh.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-4CEwz9Zd.js → styleChecker-DMybAFsA.js} +1 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-_tbIIFMu.js +1 -0
- package/src/assets/web-panel/assets/{useFs-Bugo8HuF.js → useFs-KPklVptS.js} +1 -1
- package/src/assets/web-panel/assets/{useMergedState-DXbJa_zE.js → useMergedState-d-EXs3xd.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-B-q2ElB0.js → usePersonalDataHub-C7FrKDhD.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-BrCfMLMc.js → useRefs-DHeCQehi.js} +1 -1
- package/src/assets/web-panel/assets/{useState-CnxtbLoC.js → useState-Dlgl7fUg.js} +1 -1
- package/src/assets/web-panel/assets/vendor-BXcBOG8b.js +1 -0
- package/src/assets/web-panel/assets/vnode-DB3JBusp.js +1 -0
- package/src/assets/web-panel/assets/warning-Pq00owYb.js +1 -0
- package/src/assets/web-panel/assets/{zoom-DM1y_KKP.js → zoom-C8rAdf81.js} +1 -1
- package/src/assets/web-panel/index.html +4 -4
- package/src/command-help-index.json +1 -1
- package/src/commands/agent.js +1 -1
- package/src/commands/governed-skill-marketplace.js +24 -10
- package/src/commands/llm.js +4 -3
- package/src/data/changelog.json +27 -1
- package/src/harness/worktree-isolator.js +4 -1
- package/src/lib/compaction-host-provenance.js +24 -0
- package/src/lib/context-memory-kernel/durable-memory-port.js +46 -34
- package/src/lib/context-memory-kernel/live-compaction.js +12 -3
- package/src/lib/context-memory-kernel/memory-query-bundle.js +375 -0
- package/src/lib/context-memory-kernel/memory-query-control.js +28 -0
- package/src/lib/context-memory-kernel/memory-service.js +30 -16
- package/src/lib/context-memory-kernel/memory-shard-snapshots.js +63 -0
- package/src/lib/context-memory-kernel/message-adapter.js +27 -6
- package/src/lib/context-memory-kernel/provider-context.js +103 -27
- package/src/lib/context-memory-kernel/segmented-memory-port.js +347 -138
- package/src/lib/cost-budget.js +2 -0
- package/src/lib/ephemeral-worktree-scope.js +24 -0
- package/src/lib/evolution/evolution-deployment-loader.js +6 -4
- package/src/lib/evolution/governed-skill-marketplace-abort.js +14 -0
- package/src/lib/evolution/governed-skill-marketplace-candidate.js +10 -2
- package/src/lib/evolution/governed-skill-marketplace-cli-host.js +47 -20
- package/src/lib/evolution/governed-skill-marketplace.js +47 -24
- package/src/lib/goal-condition-engine.js +20 -3
- package/src/lib/goal-verification-command.js +221 -0
- package/src/lib/goal-verification-plan.js +372 -0
- package/src/lib/llm-connection-probe.js +12 -5
- package/src/lib/llm-onboarding-catalog.json +1 -1
- package/src/lib/llm-pricing.js +34 -8
- package/src/lib/mcp-tool-catalog-authority.js +244 -0
- package/src/lib/model-capabilities.js +6 -0
- package/src/lib/model-catalog-review.js +3 -0
- package/src/lib/model-context-catalog.js +44 -2
- package/src/lib/openai-responses.js +35 -6
- package/src/lib/sub-agent-context.js +12 -4
- package/src/lib/subagent-inheritance.js +162 -2
- package/src/lib/usage-pricing-context.js +34 -17
- package/src/repl/agent-repl.js +34 -2
- package/src/runtime/agent-core.js +335 -18
- package/src/runtime/compaction-host-context.js +72 -0
- package/src/runtime/headless-runner.js +133 -37
- package/src/runtime/headless-stream.js +38 -21
- package/src/runtime/mcp-agent-catalog.js +257 -0
- package/src/runtime/mcp-config.js +18 -69
- package/src/runtime/mcp-tool-search.js +16 -1
- package/src/runtime/message-roles.js +67 -3
- package/src/runtime/provider-stream-state.js +35 -1
- package/src/runtime/system-prompt.js +9 -0
- package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +0 -1
- package/src/assets/web-panel/assets/AIOps-o-rFKEYL.js +0 -1
- package/src/assets/web-panel/assets/Analytics-Bt7H_jrh.js +0 -3
- package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +0 -1
- package/src/assets/web-panel/assets/AppLayout-CgynsRFP.js +0 -9
- package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +0 -1
- package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +0 -1
- package/src/assets/web-panel/assets/Artifacts-gghOGDyE.js +0 -1
- package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +0 -1
- package/src/assets/web-panel/assets/Audit-DBXn-AZ6.js +0 -1
- package/src/assets/web-panel/assets/BackgroundAgents--dxPftKa.js +0 -1
- package/src/assets/web-panel/assets/BackgroundAgents-Dq2340Kl.css +0 -1
- package/src/assets/web-panel/assets/Backup-D9Zf_2tH.js +0 -1
- package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +0 -1
- package/src/assets/web-panel/assets/BaseInput-DDTOjovq.js +0 -1
- package/src/assets/web-panel/assets/Chat-2ETqdBLn.js +0 -8
- package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DSg2Xs8G.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +0 -1
- package/src/assets/web-panel/assets/Codegen-4ieEEIwt.js +0 -1
- package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +0 -1
- package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +0 -1
- package/src/assets/web-panel/assets/Community-DeYxFMJb.js +0 -1
- package/src/assets/web-panel/assets/Compliance-DLVjbVUh.js +0 -1
- package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +0 -1
- package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +0 -1
- package/src/assets/web-panel/assets/Cowork-DfUKa0T5.js +0 -6
- package/src/assets/web-panel/assets/Cron-_RpktpO5.js +0 -2
- package/src/assets/web-panel/assets/Crosschain-7x6xdbwH.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +0 -1
- package/src/assets/web-panel/assets/DID-DVsYcgvs.css +0 -1
- package/src/assets/web-panel/assets/DID-ccVhToC1.js +0 -2
- package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-DhygcaoK.js +0 -3
- package/src/assets/web-panel/assets/Dropdown-DFplwXK7.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-Bm01soCN.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-C4v--DkD.js +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-ChQXDBA3.js +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +0 -1
- package/src/assets/web-panel/assets/Federation-C0yomE-M.js +0 -1
- package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +0 -1
- package/src/assets/web-panel/assets/FormItemContext-DtT3ZEZK.js +0 -2
- package/src/assets/web-panel/assets/GenericCardRenderer-DgITtFRv.js +0 -1
- package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +0 -1
- package/src/assets/web-panel/assets/Git-CCY42R8S.js +0 -2
- package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +0 -1
- package/src/assets/web-panel/assets/Governance-N66Bwvqg.js +0 -1
- package/src/assets/web-panel/assets/Inference-BkbPuR_2.js +0 -1
- package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-B3PibXdA.js +0 -1
- package/src/assets/web-panel/assets/Logs-CUtNB_N6.js +0 -2
- package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-D-V4dOe3.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +0 -1
- package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +0 -1
- package/src/assets/web-panel/assets/Marketplace-DLNJb6Nr.js +0 -1
- package/src/assets/web-panel/assets/McpTools-2zGjJb5K.js +0 -4
- package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +0 -1
- package/src/assets/web-panel/assets/Memory-9rNZ1EvR.js +0 -2
- package/src/assets/web-panel/assets/Memory-CleW_R6V.css +0 -1
- package/src/assets/web-panel/assets/MobileBridge-Cw7sAAgn.js +0 -1
- package/src/assets/web-panel/assets/MobileBridge-D3Arxfeg.css +0 -1
- package/src/assets/web-panel/assets/MobileProjects-8XACrqqy.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +0 -1
- package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +0 -1
- package/src/assets/web-panel/assets/Mtc-mg02JNy-.js +0 -6
- package/src/assets/web-panel/assets/MtcAudit-B1Vkhj2l.js +0 -19
- package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +0 -1
- package/src/assets/web-panel/assets/Multisig-BQEeA7GG.js +0 -13
- package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +0 -1
- package/src/assets/web-panel/assets/NLProgramming-BIbkjZV3.js +0 -1
- package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +0 -1
- package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +0 -1
- package/src/assets/web-panel/assets/Notes-DIwhkZNY.js +0 -7
- package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +0 -1
- package/src/assets/web-panel/assets/NotificationSettings-Cj9175ce.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-IfNpXT2R.js +0 -1
- package/src/assets/web-panel/assets/Organization-DPFp6G9o.js +0 -4
- package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +0 -1
- package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +0 -1
- package/src/assets/web-panel/assets/P2P-tXck8GLq.js +0 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-DSvpQl9k.js +0 -7
- package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +0 -1
- package/src/assets/web-panel/assets/Permissions-CKPkdLj-.js +0 -4
- package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-DnqXc12l.js +0 -9
- package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +0 -1
- package/src/assets/web-panel/assets/Pipeline-BKjFU_kd.js +0 -1
- package/src/assets/web-panel/assets/Privacy-ChC-J5Tn.js +0 -1
- package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +0 -1
- package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +0 -1
- package/src/assets/web-panel/assets/ProjectInit-ByFZG9sY.js +0 -2
- package/src/assets/web-panel/assets/ProjectSettings-Bbv1Kiw-.js +0 -2
- package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +0 -1
- package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +0 -1
- package/src/assets/web-panel/assets/Projects-QYyGW31-.js +0 -1
- package/src/assets/web-panel/assets/Providers-C6q_fvea.css +0 -1
- package/src/assets/web-panel/assets/Providers-CJLnWw0r.js +0 -1
- package/src/assets/web-panel/assets/QrScannerModal-NwAHNfiJ.css +0 -1
- package/src/assets/web-panel/assets/QuickAsk-DoXU0np9.js +0 -1
- package/src/assets/web-panel/assets/Recommend-DCo_vuaf.js +0 -1
- package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +0 -1
- package/src/assets/web-panel/assets/RemoteSession-CLuL925Z.js +0 -5
- package/src/assets/web-panel/assets/Reputation-CNNCA_-M.js +0 -1
- package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +0 -1
- package/src/assets/web-panel/assets/Row-Vu4j631i.js +0 -1
- package/src/assets/web-panel/assets/RssFeed-C18B4xiy.js +0 -3
- package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +0 -1
- package/src/assets/web-panel/assets/Search-DxiqccE2.js +0 -1
- package/src/assets/web-panel/assets/Search-Klk29S7C.css +0 -1
- package/src/assets/web-panel/assets/Security-BmrukMHn.css +0 -1
- package/src/assets/web-panel/assets/Security-Droe_hHI.js +0 -4
- package/src/assets/web-panel/assets/Services-CwmmyXzq.js +0 -2
- package/src/assets/web-panel/assets/Services-DAnVNhUG.css +0 -1
- package/src/assets/web-panel/assets/Skills-BUu9owbR.css +0 -1
- package/src/assets/web-panel/assets/Skills-Dp-d2miK.js +0 -1
- package/src/assets/web-panel/assets/Sla-2DFXVbK4.js +0 -1
- package/src/assets/web-panel/assets/Sla-sodqCU4a.css +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-Cdd9lCoy.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-CxQhcYSk.js +0 -2
- package/src/assets/web-panel/assets/Tasks-BHWVRfXx.js +0 -1
- package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +0 -1
- package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +0 -1
- package/src/assets/web-panel/assets/Templates-DNFk3a5_.js +0 -1
- package/src/assets/web-panel/assets/Tenant-B6X6dPo8.js +0 -1
- package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +0 -1
- package/src/assets/web-panel/assets/Terminal-BuUNoLGM.js +0 -3
- package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-DThrBYj8.js +0 -1
- package/src/assets/web-panel/assets/Tokens-CA_u4Blu.js +0 -1
- package/src/assets/web-panel/assets/Tokens-CynVae-o.css +0 -1
- package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +0 -1
- package/src/assets/web-panel/assets/Trust-DHcLpNy3.js +0 -1
- package/src/assets/web-panel/assets/UkeySign-B_fni4C2.js +0 -1
- package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +0 -1
- package/src/assets/web-panel/assets/VideoEditing-g9nf2EhS.js +0 -1
- package/src/assets/web-panel/assets/Wallet-C8pOjIve.js +0 -4
- package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +0 -1
- package/src/assets/web-panel/assets/WebAuthn-BaKNjxZt.js +0 -5
- package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +0 -1
- package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +0 -1
- package/src/assets/web-panel/assets/WorkflowEditor-CX030Wb1.js +0 -1
- package/src/assets/web-panel/assets/createContext-B8rTvO61.js +0 -1
- package/src/assets/web-panel/assets/devWarning-B4_IVU_n.js +0 -1
- package/src/assets/web-panel/assets/echarts-C61Vn3mP.js +0 -25
- package/src/assets/web-panel/assets/index--6BUI55w.js +0 -1
- package/src/assets/web-panel/assets/index-5Q1bepcM.js +0 -1
- package/src/assets/web-panel/assets/index-B10Ia2KL.js +0 -21
- package/src/assets/web-panel/assets/index-B1SLBLli.js +0 -3
- package/src/assets/web-panel/assets/index-B8_VQAav.js +0 -1
- package/src/assets/web-panel/assets/index-BMuPJra-.js +0 -1
- package/src/assets/web-panel/assets/index-BOCjph-k.js +0 -12
- package/src/assets/web-panel/assets/index-BpBaOWmV.js +0 -1
- package/src/assets/web-panel/assets/index-CDlHvQtw.js +0 -1
- package/src/assets/web-panel/assets/index-CPF7Vqri.js +0 -55
- package/src/assets/web-panel/assets/index-CPmgKQcl.js +0 -1
- package/src/assets/web-panel/assets/index-CcpMHPWd.js +0 -21
- package/src/assets/web-panel/assets/index-Cyksnofp.js +0 -1
- package/src/assets/web-panel/assets/index-Dc9pcin6.js +0 -1
- package/src/assets/web-panel/assets/index-DfAC55QA.js +0 -19
- package/src/assets/web-panel/assets/index-DgNCfwvg.js +0 -1
- package/src/assets/web-panel/assets/index-DvfhIBNZ.js +0 -1
- package/src/assets/web-panel/assets/index-Hbzd9WeI.js +0 -1
- package/src/assets/web-panel/assets/index-IiS7WoUl.js +0 -13
- package/src/assets/web-panel/assets/index-Xa6TlaD7.js +0 -31
- package/src/assets/web-panel/assets/index-YczWc2_0.js +0 -12
- package/src/assets/web-panel/assets/index-h_ANnbR8.js +0 -3
- package/src/assets/web-panel/assets/index-k7QsBwyo.js +0 -75
- package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +0 -1
- package/src/assets/web-panel/assets/motion-B1hpJYSD.js +0 -11
- package/src/assets/web-panel/assets/useFlexGapSupport-BClv53kR.js +0 -1
- package/src/assets/web-panel/assets/vendor-Bn1JzzAn.js +0 -42
- package/src/assets/web-panel/assets/vnode-ejVeFJ0x.js +0 -1
|
@@ -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}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as b,I as f,J as h,U as d,S as R,V as E,c as n,K as c,o as N,P as k,F as V,Q as O,R as B}from"./vendor-Bn1JzzAn.js";import{u as j,_ as D,d as S}from"./index-k7QsBwyo.js";import{u as F}from"./useShellMode-CgR0wCYM.js";import{R as L}from"./icons-DG5UD-6K.js";const p={enabled:!0,sound:!0,badge:!0,desktop:!0};function x(s){if(s&&s.ok===!1)throw new Error(s.error||"notification-settings handler failed");return s?.result??s}const u={settings:b({...p})};function T(){const s=j(),t=F().isEmbedded;async function _(){if(!t)return u.settings.value={...p},u.settings.value;const a=await s.sendRaw({type:"notification-settings.get"},1e4),o=x(a);if(o?.success===!1)throw new Error(o.error||"notification-settings.get failed");return u.settings.value={...p,...o?.settings||{}},u.settings.value}async function e(a){if(!a||typeof a!="object")throw new Error("patch is required");if(!t)throw new Error("通知设置仅在嵌入式 web-shell 中可写");const o=await s.sendRaw({type:"notification-settings.update",settings:a},1e4),i=x(o);if(i?.success===!1)throw new Error(i.error||"notification-settings.update failed");return u.settings.value={...p,...i?.settings||{}},u.settings.value}return{settings:u.settings,isEmbedded:t,load:_,update:e,DEFAULTS:p}}const A={__name:"NotificationSettings",setup(s,{expose:t}){t();const{settings:_,isEmbedded:e,load:a,update:o}=T(),i=b(!1),l=b(!1),g=b("");async function v(){i.value=!0;try{await a()}catch(m){S.error("加载失败: "+(m?.message||String(m)))}finally{i.value=!1}}async function y(m,r){if(e){l.value=!0;try{await o({[m]:r}),g.value=new Date().toLocaleTimeString(),S.success("已保存")}catch(C){S.error("保存失败: "+(C?.message||String(C))),await a().catch(()=>{})}finally{l.value=!1}}}N(v);const w={settings:_,isEmbedded:e,load:a,update:o,loading:i,saving:l,lastSaved:g,reload:v,onToggle:y,ref:b,onMounted:N,get message(){return S},get ReloadOutlined(){return L},get useNotificationSettings(){return T}};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}},I={class:"footer-row"},J={key:0,class:"last-saved"};function M(s,t,_,e,a,o){const i=f("a-alert"),l=f("a-switch"),g=f("a-form-item"),v=f("a-form"),y=f("a-divider"),w=f("a-button"),m=f("a-card");return k(),h("div",null,[t[9]||(t[9]=d("div",{class:"page-head"},[d("div",null,[d("h2",{class:"page-title"},"通知设置"),d("p",{class:"page-sub"},"控制应用通知行为 · 与桌面 V5/V6 设置同源")])],-1)),e.isEmbedded?E("v-if",!0):(k(),R(i,{key:0,type:"info","show-icon":"",style:{"margin-bottom":"16px"},message:"浏览器模式只读",description:"纯浏览器没有 Electron AppConfig 后端,本页只能展示默认值。请使用桌面壳 (cc desktop) 写入。"})),n(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:c(()=>[n(v,{layout:"horizontal","label-col":{span:6},"wrapper-col":{span:18}},{default:c(()=>[n(g,{label:"启用通知"},{default:c(()=>[n(l,{checked:e.settings.enabled,disabled:!e.isEmbedded||e.saving,onChange:t[0]||(t[0]=r=>e.onToggle("enabled",r))},null,8,["checked","disabled"]),t[4]||(t[4]=d("span",{class:"hint"},"关闭后所有通知静默",-1))]),_:1}),e.settings.enabled?(k(),h(V,{key:0},[n(g,{label:"通知声音"},{default:c(()=>[n(l,{checked:e.settings.sound,disabled:!e.isEmbedded||e.saving,onChange:t[1]||(t[1]=r=>e.onToggle("sound",r))},null,8,["checked","disabled"]),t[5]||(t[5]=d("span",{class:"hint"},"桌面通知伴随系统提示音",-1))]),_:1}),n(g,{label:"角标提示"},{default:c(()=>[n(l,{checked:e.settings.badge,disabled:!e.isEmbedded||e.saving,onChange:t[2]||(t[2]=r=>e.onToggle("badge",r))},null,8,["checked","disabled"]),t[6]||(t[6]=d("span",{class:"hint"},"在应用图标 / 任务栏角标显示未读数",-1))]),_:1}),n(g,{label:"桌面通知"},{default:c(()=>[n(l,{checked:e.settings.desktop,disabled:!e.isEmbedded||e.saving,onChange:t[3]||(t[3]=r=>e.onToggle("desktop",r))},null,8,["checked","disabled"]),t[7]||(t[7]=d("span",{class:"hint"},"系统级 toast (Windows / macOS / Linux 原生通知)",-1))]),_:1})],64)):E("v-if",!0)]),_:1}),n(y),d("div",I,[n(w,{loading:e.loading,onClick:e.reload},{icon:c(()=>[n(e.ReloadOutlined)]),default:c(()=>[t[8]||(t[8]=O(" 重新加载 ",-1))]),_:1},8,["loading"]),e.lastSaved?(k(),h("span",J,"最近保存: "+B(e.lastSaved),1)):E("v-if",!0)])]),_:1})])}const z=D(A,[["render",M],["__scopeId","data-v-ae0392e9"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/NotificationSettings.vue"]]);export{z as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.order-card[data-v-5ed5524d]{padding:12px 16px;background:#fff;border:1px solid #f0f0f0;border-radius:8px;margin-bottom:8px}.head[data-v-5ed5524d]{display:flex;gap:8px;align-items:center;margin-bottom:8px;padding-bottom:8px;border-bottom:1px dashed #f0f0f0}.time[data-v-5ed5524d]{font-size:12px;color:#999;font-variant-numeric:tabular-nums}.row[data-v-5ed5524d]{display:flex;gap:12px;padding:4px 0;font-size:13px}.row .key[data-v-5ed5524d]{width:70px;color:#999;flex-shrink:0}.row .val[data-v-5ed5524d]{color:#333;word-break:break-word}.row.amount-row .amount[data-v-5ed5524d]{font-weight:600;color:#d48806;font-size:15px}.row .mono[data-v-5ed5524d]{font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;color:#666}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-k7QsBwyo.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),b=a(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},j={class:"row"},B={class:"val"},D={class:"row amount-row"},I={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},H={key:1,class:"row"};function J(p,r,o,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",j,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",B,n(e.itemText),1)]),s("div",D,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",I,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",H,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const K=S(k,[["render",J],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{I as z,J as v,U as P,R as d,c as t,K as n,o as be,b as S,r as m,P as c,Q as _,V as f,S as O,F as _e,a2 as we}from"./vendor-Bn1JzzAn.js";import{_ as Fe,b as ze,u as xe,t as q,d as u}from"./index-k7QsBwyo.js";import{b as qe,ak as Ne,at as De,R as Re,A as Be,aQ as Ve,O as Je}from"./icons-DG5UD-6K.js";const We={__name:"Organization",setup(ke,{expose:s}){s();const{t:r}=ze(),e=xe(),N=m("orgs"),J=m(!1);async function I(){J.value=!0;try{N.value==="orgs"?await A():N.value==="members"?(await A(),C.value&&(await E(),await H())):N.value==="approvals"&&await F()}finally{J.value=!1}}function D(o){o==="orgs"&&k.value.length===0&&A(),o==="members"&&k.value.length===0&&A(),o==="approvals"&&G.value.length===0&&F()}const L=m(!1),k=m([]),j=m(!1),M=m(!1),h=m(""),R=m(""),U=m(!1),x=m(!1),w=m({}),T=m(""),B=S(()=>[{title:r("organization.orgColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:r("organization.orgColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:r("organization.orgColumns.owner"),key:"owner",dataIndex:"owner",width:"140px"},{title:r("organization.orgColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:r("organization.orgColumns.memberCount"),key:"memberCount",dataIndex:"memberCount",width:"90px"}]),V=S(()=>k.value.map(o=>({label:o.name,value:o.id})));async function A(){L.value=!0;try{const{output:o}=await e.execute("org list --json",15e3),i=q(o);Array.isArray(i)?k.value=i.map((l,p)=>({key:l.id||p,id:l.id||"-",name:l.name||"-",owner:l.owner||"-",description:l.description||"",memberCount:l.memberCount??l.members??0})):k.value=W(o)}catch(o){u.error(r("organization.messages.loadOrgsFailed",{err:o.message}))}finally{L.value=!1}}function W(o){const i=[],l=o.split(`
|
|
2
|
-
`);for(const p of l){const y=p.trim();if(!y||y.startsWith("─")||y.match(/^\d+ org/i))continue;const b=y.split(/\s*[|│]\s*/);b.length>=3&&i.push({key:i.length,id:b[0]||"-",name:b[1]||"-",owner:b[2]||"-",description:b[3]||"",memberCount:parseInt(b[4],10)||0})}return i}async function a(){if(!h.value.trim()){u.warning(r("organization.messages.orgNameRequired"));return}M.value=!0;try{const o=h.value.trim().replace(/"/g,'\\"'),i=R.value.trim().replace(/"/g,'\\"');let l=`org create "${o}" --json`;i&&(l=`org create "${o}" --description "${i}" --json`);const{output:p}=await e.execute(l,2e4);p.includes("error")||p.includes("失败")?u.error(r("organization.messages.orgCreateFailed",{err:p.slice(0,120)})):(u.success(r("organization.messages.orgCreateOk")),j.value=!1,h.value="",R.value="",await A())}catch(o){u.error(r("organization.messages.orgCreateFailed",{err:o.message}))}finally{M.value=!1}}async function g(o){w.value={...o},T.value="",U.value=!0,x.value=!0;try{const{output:i}=await e.execute(`org show ${o.id} --json`,15e3),l=q(i);l&&typeof l=="object"?(w.value={id:l.id||o.id,name:l.name||o.name,owner:l.owner||o.owner,description:l.description||o.description,memberCount:l.memberCount??l.members??o.memberCount,createdAt:l.createdAt||l.created||""},T.value=JSON.stringify(l,null,2)):T.value=i}catch(i){T.value=r("organization.messages.loadDetailFailed",{err:i.message})}finally{x.value=!1}}const C=m(null),Z=m(!1),$=m([]),ee=m(!1),ae=m([]),ge=m(!1),te=m(!1),K=m(""),oe=m(""),ne=m("member"),pe=m(!1),le=m(!1),Q=m(""),ie=m(""),re=m(""),he=S(()=>[{label:r("organization.members.roleAdmin"),value:"admin"},{label:r("organization.members.roleMember"),value:"member"},{label:r("organization.members.roleViewer"),value:"viewer"}]),Ce=S(()=>[{title:r("organization.memberColumns.userId"),key:"userId",dataIndex:"userId",width:"160px"},{title:r("organization.memberColumns.name"),key:"name",dataIndex:"name",width:"140px"},{title:r("organization.memberColumns.role"),key:"role",dataIndex:"role",width:"100px"},{title:r("organization.memberColumns.joinedAt"),key:"joinedAt",dataIndex:"joinedAt",width:"180px"}]),Oe=S(()=>[{title:r("organization.teamColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:r("organization.teamColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:r("organization.teamColumns.lead"),key:"lead",dataIndex:"lead",width:"140px"}]);function Te(o){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(o||"").toLowerCase()]||"default"}async function Ie(){C.value&&await Promise.all([E(),H()])}async function E(){if(C.value){Z.value=!0;try{const{output:o}=await e.execute(`org members ${C.value} --json`,15e3),i=q(o);Array.isArray(i)?$.value=i.map((l,p)=>({key:l.userId||l.id||p,userId:l.userId||l.id||"-",name:l.name||l.displayName||"-",role:l.role||"member",joinedAt:l.joinedAt||l.joined||"-"})):$.value=ue(o)}catch(o){u.error(r("organization.messages.loadMembersFailed",{err:o.message}))}finally{Z.value=!1}}}function ue(o){const i=[],l=o.split(`
|
|
3
|
-
`);for(const p of l){const y=p.trim();if(!y||y.startsWith("─")||y.match(/^\d+ member/i))continue;const b=y.split(/\s*[|│]\s*/);b.length>=3&&i.push({key:i.length,userId:b[0]||"-",name:b[1]||"-",role:b[2]||"member",joinedAt:b[3]||"-"})}return i}async function H(){if(C.value){ee.value=!0;try{const{output:o}=await e.execute(`org teams ${C.value} --json`,15e3),i=q(o);Array.isArray(i)?ae.value=i.map((l,p)=>({key:l.id||l.name||p,name:l.name||"-",description:l.description||"",lead:l.lead||l.leader||"-"})):ae.value=[]}catch(o){u.error(r("organization.messages.loadTeamsFailed",{err:o.message}))}finally{ee.value=!1}}}async function Le(){if(!K.value.trim()){u.warning(r("organization.messages.userIdRequired"));return}te.value=!0;try{const o=K.value.trim().replace(/"/g,'\\"'),i=oe.value.trim().replace(/"/g,'\\"');let l=`org invite ${C.value} ${o} --role ${ne.value}`;i&&(l+=` --name "${i}"`);const{output:p}=await e.execute(l,2e4);p.includes("error")||p.includes("失败")?u.error(r("organization.messages.inviteFailed",{err:p.slice(0,120)})):(u.success(r("organization.messages.inviteOk")),ge.value=!1,K.value="",oe.value="",ne.value="member",await E())}catch(o){u.error(r("organization.messages.inviteFailed",{err:o.message}))}finally{te.value=!1}}async function Ae(){if(!Q.value.trim()){u.warning(r("organization.messages.teamNameRequired"));return}le.value=!0;try{const o=Q.value.trim().replace(/"/g,'\\"'),i=ie.value.trim().replace(/"/g,'\\"'),l=re.value.trim().replace(/"/g,'\\"');let p=`org teams ${C.value} create "${o}"`;i&&(p+=` --description "${i}"`),l&&(p+=` --lead "${l}"`);const{output:y}=await e.execute(p,2e4);y.includes("error")||y.includes("失败")?u.error(r("organization.messages.teamCreateFailed",{err:y.slice(0,120)})):(u.success(r("organization.messages.teamCreateOk")),pe.value=!1,Q.value="",ie.value="",re.value="",await H())}catch(o){u.error(r("organization.messages.teamCreateFailed",{err:o.message}))}finally{le.value=!1}}const se=m(!1),G=m([]),ve=m(!1),de=m(!1),X=m(null),Y=m(""),me=m(""),ce=m(""),je=S(()=>[{title:r("organization.approvalColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:r("organization.approvalColumns.title"),key:"title",dataIndex:"title",width:"200px"},{title:r("organization.approvalColumns.type"),key:"type",dataIndex:"type",width:"120px"},{title:r("organization.approvalColumns.requester"),key:"requester",dataIndex:"requester",width:"140px"},{title:r("organization.approvalColumns.status"),key:"status",dataIndex:"status",width:"100px"},{title:r("organization.approvalColumns.actions"),key:"actions",width:"180px"}]);function Me(o){return{pending:"orange",approved:"green",rejected:"red"}[(o||"").toLowerCase()]||"default"}async function F(){se.value=!0;try{const{output:o}=await e.execute("org approvals --json",15e3),i=q(o);Array.isArray(i)?G.value=i.map((l,p)=>({key:l.id||p,id:l.id||"-",title:l.title||"-",type:l.type||"-",requester:l.requester||l.requestedBy||"-",status:l.status||"pending",_approving:!1,_rejecting:!1})):G.value=fe(o)}catch(o){u.error(r("organization.messages.loadApprovalsFailed",{err:o.message}))}finally{se.value=!1}}function fe(o){const i=[],l=o.split(`
|
|
4
|
-
`);for(const p of l){const y=p.trim();if(!y||y.startsWith("─")||y.match(/^\d+ approval/i))continue;const b=y.split(/\s*[|│]\s*/);b.length>=4&&i.push({key:i.length,id:b[0]||"-",title:b[1]||"-",type:b[2]||"-",requester:b[3]||"-",status:b[4]||"pending",_approving:!1,_rejecting:!1})}return i}async function Ue(o){o._approving=!0;try{const{output:i}=await e.execute(`org approve ${o.id}`,15e3);i.includes("error")||i.includes("失败")?u.error(r("organization.messages.approveFailed",{err:i.slice(0,120)})):(u.success(r("organization.messages.approveOk")),await F())}catch(i){u.error(r("organization.messages.approveFailed",{err:i.message}))}finally{o._approving=!1}}async function Pe(o){o._rejecting=!0;try{const{output:i}=await e.execute(`org reject ${o.id}`,15e3);i.includes("error")||i.includes("失败")?u.error(r("organization.messages.rejectFailed",{err:i.slice(0,120)})):(u.success(r("organization.messages.rejectOk")),await F())}catch(i){u.error(r("organization.messages.rejectFailed",{err:i.message}))}finally{o._rejecting=!1}}async function Se(){if(!X.value){u.warning(r("organization.messages.orgRequired"));return}if(!Y.value.trim()){u.warning(r("organization.messages.approvalTitleRequired"));return}de.value=!0;try{const o=Y.value.trim().replace(/"/g,'\\"'),i=me.value.trim().replace(/"/g,'\\"'),l=ce.value.trim().replace(/"/g,'\\"');let p=`org approve --submit --org ${X.value} --title "${o}"`;i&&(p+=` --type "${i}"`),l&&(p+=` --description "${l}"`);const{output:y}=await e.execute(p,2e4);y.includes("error")||y.includes("失败")?u.error(r("organization.messages.submitFailed",{err:y.slice(0,120)})):(u.success(r("organization.messages.submitOk")),ve.value=!1,X.value=null,Y.value="",me.value="",ce.value="",await F())}catch(o){u.error(r("organization.messages.submitFailed",{err:o.message}))}finally{de.value=!1}}be(()=>{A()});const ye={t:r,ws:e,activeTab:N,refreshing:J,refreshCurrentTab:I,onTabChange:D,orgLoading:L,orgList:k,showCreateOrgModal:j,creatingOrg:M,newOrgName:h,newOrgDesc:R,showDetailModal:U,detailLoading:x,detailOrg:w,detailRaw:T,orgColumns:B,orgSelectOptions:V,loadOrgList:A,parseOrgListText:W,createOrg:a,showOrgDetail:g,selectedOrgId:C,memberLoading:Z,memberList:$,teamLoading:ee,teamList:ae,showInviteModal:ge,inviting:te,inviteUserId:K,inviteName:oe,inviteRole:ne,showCreateTeamModal:pe,creatingTeam:le,newTeamName:Q,newTeamDesc:ie,newTeamLead:re,roleOptions:he,memberColumns:Ce,teamColumns:Oe,roleColor:Te,onOrgSelected:Ie,loadMembers:E,parseMemberListText:ue,loadTeams:H,inviteMember:Le,createTeam:Ae,approvalLoading:se,approvalList:G,showSubmitApprovalModal:ve,submittingApproval:de,approvalOrgId:X,approvalTitle:Y,approvalType:me,approvalDescription:ce,approvalColumns:je,approvalStatusColor:Me,loadApprovals:F,parseApprovalListText:fe,approveItem:Ue,rejectItem:Pe,submitApproval:Se,ref:m,computed:S,onMounted:be,get useI18n(){return ze},get TeamOutlined(){return Je},get UserAddOutlined(){return Ve},get AuditOutlined(){return Be},get ReloadOutlined(){return Re},get PlusOutlined(){return De},get CheckOutlined(){return Ne},get CloseOutlined(){return qe},get message(){return u},get useWsStore(){return xe},get tryParseJson(){return q}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},Ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Qe={class:"page-title"},Ee={class:"page-sub"},He={key:0,style:{"text-align":"center",padding:"60px"}},Ge={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Xe={key:1,style:{color:"#1677ff"}},Ye={key:2,style:{color:"var(--text-secondary)"}},Ze={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},$e={key:0,style:{"text-align":"center",padding:"40px"}},ea={key:1},aa={style:{"font-family":"monospace",color:"#ccc"}},ta={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},oa={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},na={key:0,style:{"text-align":"center",padding:"60px"}},la={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ia={key:1,style:{color:"#e0e0e0"}},ra={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},sa={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},da={style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},ma={key:0,style:{"text-align":"center",padding:"40px"}},ca={key:0,style:{color:"#e0e0e0"}},ga={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},pa={key:2,style:{color:"var(--text-secondary)"}},ua={key:0,style:{"text-align":"center",padding:"60px"}},va={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},fa={key:1,style:{color:"#e0e0e0"}},ya={key:3,style:{color:"var(--text-secondary)"}},ba={key:1,style:{color:"var(--text-muted)","font-size":"12px"}};function _a(ke,s,r,e,N,J){const I=z("a-button"),D=z("a-space"),L=z("a-spin"),k=z("a-tag"),j=z("a-empty"),M=z("a-table"),h=z("a-descriptions-item"),R=z("a-descriptions"),U=z("a-modal"),x=z("a-input"),w=z("a-form-item"),T=z("a-form"),B=z("a-tab-pane"),V=z("a-select"),A=z("a-textarea"),W=z("a-tabs");return c(),v("div",null,[P("div",Ke,[P("div",null,[P("h2",Qe,d(e.t("organization.title")),1),P("p",Ee,d(e.t("organization.subtitle")),1)]),t(I,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[_(" "+d(e.t("organization.refresh")),1)]),_:1},8,["loading"])]),t(W,{activeKey:e.activeTab,"onUpdate:activeKey":s[22]||(s[22]=a=>e.activeTab=a),type:"card",onChange:e.onTabChange},{default:n(()=>[f(" Tab 1: Organization List "),t(B,{key:"orgs"},{tab:n(()=>[t(e.TeamOutlined),_(" "+d(e.t("organization.tabs.orgs")),1)]),default:n(()=>[t(D,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(I,{type:"primary",onClick:s[0]||(s[0]=a=>e.showCreateOrgModal=!0)},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[_(" "+d(e.t("organization.orgs.createButton")),1)]),_:1})]),_:1}),e.orgLoading?(c(),v("div",He,[t(L,{size:"large"})])):(c(),O(M,{key:1,columns:e.orgColumns,"data-source":e.orgList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":a=>({onClick:()=>e.showOrgDetail(a)})},{bodyCell:n(({column:a,record:g})=>[a.key==="id"?(c(),v("span",Ge,d(g.id),1)):f("v-if",!0),a.key==="name"?(c(),v("a",Xe,d(g.name),1)):f("v-if",!0),a.key==="owner"?(c(),v("span",Ye,d(g.owner),1)):f("v-if",!0),a.key==="description"?(c(),v("span",Ze,d(g.description),1)):f("v-if",!0),a.key==="memberCount"?(c(),O(k,{key:4,color:"blue"},{default:n(()=>[_(d(g.memberCount),1)]),_:2},1024)):f("v-if",!0)]),emptyText:n(()=>[t(j,{description:e.t("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),t(U,{open:e.showDetailModal,"onUpdate:open":s[1]||(s[1]=a=>e.showDetailModal=a),title:e.t("organization.orgs.detailTitle",{name:e.detailOrg.name||""}),footer:null,width:"640px"},{default:n(()=>[e.detailLoading?(c(),v("div",$e,[t(L)])):(c(),v("div",ea,[t(R,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:n(()=>[t(h,{label:e.t("organization.orgs.detailLabels.id")},{default:n(()=>[P("span",aa,d(e.detailOrg.id),1)]),_:1},8,["label"]),t(h,{label:e.t("organization.orgs.detailLabels.name")},{default:n(()=>[_(d(e.detailOrg.name),1)]),_:1},8,["label"]),t(h,{label:e.t("organization.orgs.detailLabels.owner")},{default:n(()=>[_(d(e.detailOrg.owner),1)]),_:1},8,["label"]),t(h,{label:e.t("organization.orgs.detailLabels.description")},{default:n(()=>[_(d(e.detailOrg.description||"-"),1)]),_:1},8,["label"]),t(h,{label:e.t("organization.orgs.detailLabels.memberCount")},{default:n(()=>[_(d(e.detailOrg.memberCount),1)]),_:1},8,["label"]),e.detailOrg.createdAt?(c(),O(h,{key:0,label:e.t("organization.orgs.detailLabels.createdAt")},{default:n(()=>[_(d(e.detailOrg.createdAt),1)]),_:1},8,["label"])):f("v-if",!0)]),_:1}),e.detailRaw?(c(),v("pre",ta,d(e.detailRaw),1)):f("v-if",!0)]))]),_:1},8,["open","title"]),t(U,{open:e.showCreateOrgModal,"onUpdate:open":s[4]||(s[4]=a=>e.showCreateOrgModal=a),title:e.t("organization.orgs.createTitle"),"confirm-loading":e.creatingOrg,onOk:e.createOrg,"ok-text":e.t("organization.orgs.createOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[t(T,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:n(()=>[t(w,{label:e.t("organization.orgs.nameLabel"),required:""},{default:n(()=>[t(x,{value:e.newOrgName,"onUpdate:value":s[2]||(s[2]=a=>e.newOrgName=a),placeholder:e.t("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.orgs.descriptionLabel")},{default:n(()=>[t(x,{value:e.newOrgDesc,"onUpdate:value":s[3]||(s[3]=a=>e.newOrgDesc=a),placeholder:e.t("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),f(" Tab 2: Member Management "),t(B,{key:"members"},{tab:n(()=>[t(e.UserAddOutlined),_(" "+d(e.t("organization.tabs.members")),1)]),default:n(()=>[P("div",oa,[t(V,{value:e.selectedOrgId,"onUpdate:value":s[5]||(s[5]=a=>e.selectedOrgId=a),placeholder:e.t("organization.members.selectPlaceholder"),style:{width:"280px"},options:e.orgSelectOptions,onChange:e.onOrgSelected},null,8,["value","placeholder","options"]),t(I,{type:"primary",disabled:!e.selectedOrgId,onClick:s[6]||(s[6]=a=>e.showInviteModal=!0)},{icon:n(()=>[t(e.UserAddOutlined)]),default:n(()=>[_(" "+d(e.t("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),e.memberLoading?(c(),v("div",na,[t(L,{size:"large"})])):e.selectedOrgId?(c(),O(M,{key:1,columns:e.memberColumns,"data-source":e.memberList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:n(({column:a,record:g})=>[a.key==="userId"?(c(),v("span",la,d(g.userId),1)):f("v-if",!0),a.key==="name"?(c(),v("span",ia,d(g.name),1)):f("v-if",!0),a.key==="role"?(c(),O(k,{key:2,color:e.roleColor(g.role)},{default:n(()=>[_(d(g.role),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="joinedAt"?(c(),v("span",ra,d(g.joinedAt),1)):f("v-if",!0)]),emptyText:n(()=>[t(j,{description:e.t("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(c(),O(j,{key:2,description:e.t("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),e.selectedOrgId?(c(),v(_e,{key:3},[P("div",sa,[P("h3",da,d(e.t("organization.members.teamsTitle")),1),t(I,{size:"small",onClick:s[7]||(s[7]=a=>e.showCreateTeamModal=!0)},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[_(" "+d(e.t("organization.members.createTeamButton")),1)]),_:1})]),e.teamLoading?(c(),v("div",ma,[t(L)])):(c(),O(M,{key:1,columns:e.teamColumns,"data-source":e.teamList,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:n(({column:a,record:g})=>[a.key==="name"?(c(),v("span",ca,d(g.name),1)):f("v-if",!0),a.key==="description"?(c(),v("span",ga,d(g.description),1)):f("v-if",!0),a.key==="lead"?(c(),v("span",pa,d(g.lead),1)):f("v-if",!0)]),emptyText:n(()=>[t(j,{description:e.t("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):f("v-if",!0),t(U,{open:e.showInviteModal,"onUpdate:open":s[11]||(s[11]=a=>e.showInviteModal=a),title:e.t("organization.members.inviteTitle"),"confirm-loading":e.inviting,onOk:e.inviteMember,"ok-text":e.t("organization.members.inviteOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[t(T,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[t(w,{label:e.t("organization.members.userIdLabel"),required:""},{default:n(()=>[t(x,{value:e.inviteUserId,"onUpdate:value":s[8]||(s[8]=a=>e.inviteUserId=a),placeholder:e.t("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.nameLabel")},{default:n(()=>[t(x,{value:e.inviteName,"onUpdate:value":s[9]||(s[9]=a=>e.inviteName=a),placeholder:e.t("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.roleLabel")},{default:n(()=>[t(V,{value:e.inviteRole,"onUpdate:value":s[10]||(s[10]=a=>e.inviteRole=a),options:e.roleOptions},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(U,{open:e.showCreateTeamModal,"onUpdate:open":s[15]||(s[15]=a=>e.showCreateTeamModal=a),title:e.t("organization.members.createTeamTitle"),"confirm-loading":e.creatingTeam,onOk:e.createTeam,"ok-text":e.t("organization.members.createTeamOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[t(T,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[t(w,{label:e.t("organization.members.teamNameLabel"),required:""},{default:n(()=>[t(x,{value:e.newTeamName,"onUpdate:value":s[12]||(s[12]=a=>e.newTeamName=a),placeholder:e.t("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.teamDescLabel")},{default:n(()=>[t(x,{value:e.newTeamDesc,"onUpdate:value":s[13]||(s[13]=a=>e.newTeamDesc=a),placeholder:e.t("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.teamLeadLabel")},{default:n(()=>[t(x,{value:e.newTeamLead,"onUpdate:value":s[14]||(s[14]=a=>e.newTeamLead=a),placeholder:e.t("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),f(" Tab 3: Approval Management "),t(B,{key:"approvals"},{tab:n(()=>[t(e.AuditOutlined),_(" "+d(e.t("organization.tabs.approvals")),1)]),default:n(()=>[t(D,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(I,{type:"primary",onClick:s[16]||(s[16]=a=>e.showSubmitApprovalModal=!0)},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[_(" "+d(e.t("organization.approvals.submitButton")),1)]),_:1})]),_:1}),e.approvalLoading?(c(),v("div",ua,[t(L,{size:"large"})])):(c(),O(M,{key:1,columns:e.approvalColumns,"data-source":e.approvalList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:n(({column:a,record:g})=>[a.key==="id"?(c(),v("span",va,d(g.id),1)):f("v-if",!0),a.key==="title"?(c(),v("span",fa,d(g.title),1)):f("v-if",!0),a.key==="type"?(c(),O(k,{key:2,color:"blue"},{default:n(()=>[_(d(g.type),1)]),_:2},1024)):f("v-if",!0),a.key==="requester"?(c(),v("span",ya,d(g.requester),1)):f("v-if",!0),a.key==="status"?(c(),O(k,{key:4,color:e.approvalStatusColor(g.status)},{default:n(()=>[_(d(g.status),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="actions"?(c(),v(_e,{key:5},[(g.status||"").toLowerCase()==="pending"?(c(),O(D,{key:0},{default:n(()=>[t(I,{type:"primary",size:"small",loading:g._approving,onClick:we(C=>e.approveItem(g),["stop"])},{icon:n(()=>[t(e.CheckOutlined)]),default:n(()=>[_(" "+d(e.t("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),t(I,{danger:"",size:"small",loading:g._rejecting,onClick:we(C=>e.rejectItem(g),["stop"])},{icon:n(()=>[t(e.CloseOutlined)]),default:n(()=>[_(" "+d(e.t("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(c(),v("span",ba,"-"))],64)):f("v-if",!0)]),emptyText:n(()=>[t(j,{description:e.t("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),t(U,{open:e.showSubmitApprovalModal,"onUpdate:open":s[21]||(s[21]=a=>e.showSubmitApprovalModal=a),title:e.t("organization.approvals.submitTitle"),"confirm-loading":e.submittingApproval,onOk:e.submitApproval,"ok-text":e.t("organization.approvals.submitOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[t(T,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[t(w,{label:e.t("organization.approvals.orgLabel"),required:""},{default:n(()=>[t(V,{value:e.approvalOrgId,"onUpdate:value":s[17]||(s[17]=a=>e.approvalOrgId=a),placeholder:e.t("organization.approvals.orgPlaceholder"),options:e.orgSelectOptions},null,8,["value","placeholder","options"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.titleLabel"),required:""},{default:n(()=>[t(x,{value:e.approvalTitle,"onUpdate:value":s[18]||(s[18]=a=>e.approvalTitle=a),placeholder:e.t("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.typeLabel")},{default:n(()=>[t(x,{value:e.approvalType,"onUpdate:value":s[19]||(s[19]=a=>e.approvalType=a),placeholder:e.t("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.descLabel")},{default:n(()=>[t(A,{value:e.approvalDescription,"onUpdate:value":s[20]||(s[20]=a=>e.approvalDescription=a),placeholder:e.t("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const ka=Fe(We,[["render",_a],["__scopeId","data-v-4900dc74"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/Organization.vue"]]);export{ka as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[data-v-4900dc74] .org-row:hover td{background:var(--bg-card-hover)!important}[data-v-4900dc74] .ant-tabs-tab{color:var(--text-secondary)!important}[data-v-4900dc74] .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1677ff!important}[data-v-4900dc74] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[data-v-f34183d8] .ant-table{background:transparent}[data-v-f34183d8] .ant-select-selector{background:var(--bg-card)!important;border-color:var(--border-color)!important}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{I as d,J as y,U as u,R as l,c as t,K as a,V as p,o as Y,b as $,r,P as i,Q as g,S as O,F as ee,Z as re}from"./vendor-Bn1JzzAn.js";import{_ as se,b as te,u as ne}from"./index-k7QsBwyo.js";import{M as ie,R as ce,at as de,am as pe,S as ue}from"./icons-DG5UD-6K.js";const ye={__name:"P2P",setup(ae,{expose:c}){c();const{t:s}=te(),e=ne(),z=r(!1),T=r(""),f=r([]),L=$(()=>[{title:s("p2p.peerColumns.name"),key:"name"},{title:s("p2p.peerColumns.id"),key:"id"},{title:s("p2p.peerColumns.status"),key:"status"},{title:s("p2p.peerColumns.action"),key:"action",width:100}]);async function k(){z.value=!0,T.value="";try{const{output:n}=await e.execute("p2p peers",15e3);f.value=R(n)}catch(n){T.value=s("p2p.messages.loadPeersFailed",{err:n.message})}finally{z.value=!1}}function R(n){if(!n||n.includes("No peers")||n.includes("no peers"))return[];const N=n.split(`
|
|
2
|
-
`).filter(U=>U.trim()),P=[];for(const U of N){const I=U.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(I){P.push({id:I[1],name:I[2].trim(),connected:/connected|online/i.test(I[3])});continue}const V=U.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(V){const X=V[2].trim();P.push({id:V[1],name:X||V[1].slice(0,12),connected:/connected|online/i.test(X)})}}return P}const D=r(!1),M=r(!1),m=r(""),_=r("");async function C(){if(m.value.trim()){M.value=!0,_.value="";try{const{output:n}=await e.execute(`p2p pair "${m.value.trim()}"`,3e4);_.value=n,await k()}catch(n){_.value=s("p2p.messages.pairFailed",{err:n.message})}finally{M.value=!1}}}const E=r(!1),S=r(!1),b=r(void 0),w=r(""),x=r("");function o(n){b.value=n.id,w.value="",x.value="",E.value=!0}async function v(){if(!(!b.value||!w.value.trim())){S.value=!0,x.value="";try{const{output:n}=await e.execute(`p2p send ${b.value} "${w.value.trim()}"`,15e3);x.value=n||s("p2p.send.messageDefault")}catch(n){x.value=s("p2p.messages.sendFailed",{err:n.message})}finally{S.value=!1}}}const B=r(!1),j=r(""),A=r(!1),J=r(""),H=r(0),K=r(""),h=r(""),Q=r(!1),W=r(!1);async function F(){B.value=!0,j.value="";try{const{output:n}=await e.execute("sync status",15e3);Z(n)}catch(n){j.value=s("p2p.messages.loadSyncFailed",{err:n.message})}finally{B.value=!1}}function Z(n){if(!n){J.value=s("p2p.sync.unknown");return}A.value=/synced|online|up.to.date/i.test(n),J.value=A.value?s("p2p.sync.synced"):s("p2p.sync.notSynced");const N=n.match(/pending[:\s]+(\d+)/i);H.value=N?parseInt(N[1]):0;const P=n.match(/last[:\s]+(.+)/i);P&&(K.value=P[1].trim())}async function oe(){Q.value=!0,h.value="";try{const{output:n}=await e.execute("sync push",3e4);h.value=n||s("p2p.sync.pushDefault"),await F()}catch(n){h.value=s("p2p.messages.pushFailed",{err:n.message})}finally{Q.value=!1}}async function le(){W.value=!0,h.value="";try{const{output:n}=await e.execute("sync pull",3e4);h.value=n||s("p2p.sync.pullDefault"),await F()}catch(n){h.value=s("p2p.messages.pullFailed",{err:n.message})}finally{W.value=!1}}async function q(){await Promise.all([k(),F()])}Y(q);const G={t:s,ws:e,peersLoading:z,peersError:T,peers:f,peerColumns:L,loadPeers:k,parsePeersOutput:R,showPairModal:D,pairLoading:M,pairDeviceName:m,pairResult:_,doPair:C,showSendModal:E,sendLoading:S,sendTarget:b,sendMessage:w,sendResult:x,openSendTo:o,doSend:v,syncLoading:B,syncError:j,syncOnline:A,syncStatusText:J,syncPending:H,lastSyncTime:K,syncOutput:h,pushLoading:Q,pullLoading:W,loadSync:F,parseSyncStatus:Z,syncPush:oe,syncPull:le,refreshAll:q,ref:r,computed:$,onMounted:Y,get useI18n(){return te},get SyncOutlined(){return ue},get SendOutlined(){return pe},get PlusOutlined(){return de},get ReloadOutlined(){return ce},get MobileOutlined(){return ie},get useWsStore(){return ne}};return Object.defineProperty(G,"__isScriptSetup",{enumerable:!1,value:!0}),G}},ve={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},fe={class:"page-title"},me={class:"page-sub"},ge={key:0,style:{"text-align":"center",padding:"30px"}},_e={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},be={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},xe={key:0,style:{"text-align":"center",padding:"30px"}},he={key:0,style:{"margin-top":"16px"}},ke={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Se={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},we={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Pe={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},Oe={key:0,style:{"margin-top":"12px"}},Le={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},Me={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Ce={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},ze={key:0,style:{"margin-top":"12px"}},Te={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function Re(ae,c,s,e,z,T){const f=d("a-button"),L=d("a-space"),k=d("a-spin"),R=d("a-empty"),D=d("a-tag"),M=d("a-table"),m=d("a-card"),_=d("a-statistic"),C=d("a-col"),E=d("a-row"),S=d("a-input"),b=d("a-modal"),w=d("a-select-option"),x=d("a-select");return i(),y("div",null,[u("div",ve,[u("div",null,[u("h2",fe,l(e.t("p2p.title")),1),u("p",me,l(e.t("p2p.subtitle")),1)]),t(f,{type:"primary",ghost:"",loading:e.peersLoading,onClick:e.refreshAll},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.refresh")),1)]),_:1},8,["loading"])]),p(" P2P Devices Section "),t(m,{title:e.t("p2p.peers.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:a(()=>[t(L,null,{default:a(()=>[t(f,{size:"small",onClick:c[0]||(c[0]=o=>e.showPairModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.PlusOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.peers.pairButton")),1)]),_:1}),t(f,{size:"small",onClick:c[1]||(c[1]=o=>e.showSendModal=!0),disabled:e.peers.length===0,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SendOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.peers.sendButton")),1)]),_:1},8,["disabled"])]),_:1})]),default:a(()=>[e.peersLoading?(i(),y("div",ge,[t(k)])):e.peers.length===0?(i(),O(R,{key:1,description:e.t("p2p.peers.emptyText")},null,8,["description"])):(i(),O(M,{key:2,columns:e.peerColumns,"data-source":e.peers,pagination:!1,size:"small","row-key":"id"},{bodyCell:a(({column:o,record:v})=>[o.key==="status"?(i(),O(D,{key:0,color:v.connected?"green":"default"},{default:a(()=>[g(l(v.connected?e.t("p2p.peers.online"):e.t("p2p.peers.offline")),1)]),_:2},1032,["color"])):p("v-if",!0),o.key==="name"?(i(),O(L,{key:1},{default:a(()=>[t(e.MobileOutlined,{style:{color:"var(--text-muted)"}}),u("span",null,l(v.name||v.id),1)]),_:2},1024)):p("v-if",!0),o.key==="id"?(i(),y("span",_e,l(v.id.length>16?v.id.slice(0,16)+"...":v.id),1)):p("v-if",!0),o.key==="action"?(i(),O(f,{key:3,size:"small",type:"link",onClick:B=>e.openSendTo(v)},{default:a(()=>[t(e.SendOutlined),g(" "+l(e.t("p2p.peers.rowSend")),1)]),_:1},8,["onClick"])):p("v-if",!0)]),_:1},8,["columns","data-source"])),e.peersError?(i(),y("div",be,l(e.peersError),1)):p("v-if",!0)]),_:1},8,["title"]),p(" Sync Section "),t(m,{title:e.t("p2p.sync.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[t(D,{color:e.syncOnline?"green":"default"},{default:a(()=>[g(l(e.syncOnline?e.t("p2p.sync.synced"):e.t("p2p.sync.notSynced")),1)]),_:1},8,["color"])]),default:a(()=>[e.syncLoading?(i(),y("div",xe,[t(k)])):(i(),y(ee,{key:1},[t(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("p2p.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(L,null,{default:a(()=>[t(f,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SyncOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.sync.pushButton")),1)]),_:1},8,["loading"]),t(f,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SyncOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(i(),y("div",he,[u("div",ke,l(e.t("p2p.sync.outputLabel")),1),u("pre",Se,l(e.syncOutput),1)])):p("v-if",!0)],64)),e.syncError?(i(),y("div",we,l(e.syncError),1)):p("v-if",!0)]),_:1},8,["title"]),p(" Pair Modal "),t(b,{open:e.showPairModal,"onUpdate:open":c[3]||(c[3]=o=>e.showPairModal=o),title:e.t("p2p.pair.title"),"confirm-loading":e.pairLoading,onOk:e.doPair,"ok-text":e.t("p2p.pair.ok"),"cancel-text":e.t("common.cancel")},{default:a(()=>[u("div",Pe,l(e.t("p2p.pair.intro")),1),t(S,{value:e.pairDeviceName,"onUpdate:value":c[2]||(c[2]=o=>e.pairDeviceName=o),placeholder:e.t("p2p.pair.placeholder"),onPressEnter:e.doPair},null,8,["value","placeholder"]),e.pairResult?(i(),y("div",Oe,[u("pre",Le,l(e.pairResult),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" Send Modal "),t(b,{open:e.showSendModal,"onUpdate:open":c[6]||(c[6]=o=>e.showSendModal=o),title:e.t("p2p.send.title"),"confirm-loading":e.sendLoading,onOk:e.doSend,"ok-text":e.t("p2p.send.ok"),"cancel-text":e.t("common.cancel")},{default:a(()=>[u("div",Me,l(e.t("p2p.send.targetLabel")),1),t(x,{value:e.sendTarget,"onUpdate:value":c[4]||(c[4]=o=>e.sendTarget=o),style:{width:"100%","margin-bottom":"16px"},placeholder:e.t("p2p.send.targetPlaceholder")},{default:a(()=>[(i(!0),y(ee,null,re(e.peers,o=>(i(),O(w,{key:o.id,value:o.id},{default:a(()=>[g(l(o.name||o.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"]),u("div",Ce,l(e.t("p2p.send.messageLabel")),1),t(S,{value:e.sendMessage,"onUpdate:value":c[5]||(c[5]=o=>e.sendMessage=o),placeholder:e.t("p2p.send.messagePlaceholder"),onPressEnter:e.doSend},null,8,["value","placeholder"]),e.sendResult?(i(),y("div",ze,[u("pre",Te,l(e.sendResult),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Fe=se(ye,[["render",Re],["__scopeId","data-v-f34183d8"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/P2P.vue"]]);export{Fe as default};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-DSg2Xs8G.js","./vendor-Bn1JzzAn.js","./index-k7QsBwyo.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-IfNpXT2R.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-DThrBYj8.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-Bm01soCN.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-DgITtFRv.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as ue,r as R,b as w,I as g,P as u,J as O,U as v,c,S as C,V as E,_ as J,F as V,Z as se,a0 as ae,R as j,K as m,Q as b,W as L,o as M}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-B-q2ElB0.js";import{_ as D,e as F,d as P}from"./index-k7QsBwyo.js";import{aa as q,ag as H,M as Q,aI as z,v as G,aH as K,aq as W,ac as Y,e as de,d as fe,k as pe,ai as me,aA as _e,R as ye}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Z=300,X=ue("pdhBrowser",()=>{const r=R({...I}),t=R([]),n=R(null),e=R(!1),o=R(!1),a=R(null),l=R(null),s=R(!1),i=R({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const x=w(()=>t.value.length>0),A=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function y(){const S=++d;e.value=!0,a.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,l.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;a.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,a.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,l.value=p.mode||l.value}catch(p){a.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function le(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Z)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...I},t.value=[],n.value=null,a.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:a,mode:l,shortQuery:s,facets:i,hasResults:x,canLoadMore:A,search:y,loadMore:k,setFilter:le,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Z}}),ge=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["meeting-","system"],["vscode","system"],["vscodium","system"],["jetbrains-ide","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["hbuilderx","system"],["local-files","system"],["cursor","ai-chat"],["claude-code","ai-chat"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:Y,social:W,email:K,shopping:G,travel:z,system:Q,"ai-chat":H,other:q};function a(i){return o[i]||q}function l(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:a,badgeStyle:l,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return Y},get PlayCircleOutlined(){return W},get MailOutlined(){return K},get ShoppingOutlined(){return G},get CarOutlined(){return z},get MobileOutlined(){return Q},get RobotOutlined(){return H},get CATEGORIES(){return ge},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,a){const l=g("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:J(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(l,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:J(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(ae(e.iconFor(s)),{class:"icon"})),v("span",we,j(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(l,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Ee={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,a=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),l=w(()=>Object.entries(e.facets.byAdapter||{}).sort((y,k)=>k[1]-y[1]).map(([y,k])=>({value:y,label:`${y} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function x(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[y,k]=h;o("set-filter","since",y?+y:null),o("set-filter","until",k?+k:null)}const A={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:x,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Re={class:"pdh-filter-bar"},je={key:1,class:"hint"},xe={key:2,class:"hint"};function Ae(r,t,n,e,o,a){const l=g("a-input-search"),s=g("a-select"),i=g("a-range-picker"),d=g("a-button");return u(),O("div",Re,[c(l,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):E("v-if",!0),n.shortQuery?(u(),O("span",je,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",xe,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):E("v-if",!0)])}const Le=D(Ee,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>F(()=>import("./ChatBubbleRenderer-DSg2Xs8G.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-IfNpXT2R.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-DThrBYj8.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=L(()=>F(()=>import("./EmailListRenderer-Bm01soCN.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=L(()=>F(()=>import("./GenericCardRenderer-DgITtFRv.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return a;default:return l}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:a,GenericCardRenderer:l,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,a){return u(),C(ae(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
|
|
3
|
-
`)+`
|
|
4
|
-
`}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const a=Number.isFinite(o.occurredAt)?o.occurredAt:null,l=a?new Date(a).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",a!=null?String(a):"",l,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
|
|
5
|
-
`)+`
|
|
6
|
-
`}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
|
|
7
|
-
`)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),a=document.createElement("a");return a.href=o,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),a=String(n.getDate()).padStart(2,"0"),l=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${a}${s}.${l}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function a(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function l({key:i}){try{const d=a(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:a,onClick:l,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,a){const l=g("a-button"),s=g("a-menu-item"),i=g("a-menu"),d=g("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(l,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+j(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function a(s,i){n.setFilter(s,i)}M(()=>{!n.hasResults&&!n.isLoading&&n.search()});const l={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:a,onMounted:M,computed:w,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}},Ne={class:"pdh-browser-page"},Je={class:"page-header"},Me={class:"main-pane"},Ue={class:"results-summary"},He={key:0},Qe={key:0},ze={key:1},Ge={class:"loaded-of"},Ke={class:"results-list"},We={key:2,class:"load-more"};function Ye(r,t,n,e,o,a){const l=g("a-tag"),s=g("a-button"),i=g("a-space"),d=g("a-col"),_=g("a-spin"),x=g("a-alert"),A=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Je,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(l,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(l,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):E("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=y=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Me,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=y=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",He,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,j(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",Qe,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,j(e.categoryLabel(e.store.filters.category)),1),v("strong",null,j(e.store.facets.byCategory[e.store.filters.category]||0),1)])):E("v-if",!0),e.store.filters.q?(u(),O("span",ze,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,j(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):E("v-if",!0),v("span",Ge," / 已显示 "+j(e.store.results.length),1)],64))]),e.store.error?(u(),C(x,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):E("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):E("v-if",!0),v("div",Ke,[(u(!0),O(V,null,se(e.store.results,(y,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${y.id}`,event:y},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",We,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=y=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):E("v-if",!0)])]),_:1})]),_:1})])}const nt=D(Ve,[["render",Ye],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.pdh-sidebar[data-v-6b62a22e]{background:#fff;border-radius:8px;padding:12px 8px;border:1px solid #f0f0f0}.sidebar-title[data-v-6b62a22e]{font-size:12px;color:#999;padding:4px 8px 8px;font-weight:600;letter-spacing:.5px}.cat-item[data-v-6b62a22e]{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .15s;margin-bottom:2px}.cat-item[data-v-6b62a22e]:hover{background:#f5f5f5}.cat-item.active[data-v-6b62a22e]{background:#1677ff;color:#fff}.cat-item.dim[data-v-6b62a22e]{opacity:.45}.cat-item .icon[data-v-6b62a22e]{font-size:16px}.cat-item .label[data-v-6b62a22e]{flex:1;font-size:14px}.pdh-filter-bar[data-v-d7cce6e9]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;flex-wrap:wrap}.hint[data-v-d7cce6e9]{font-size:12px;color:#999;display:flex;align-items:center;gap:4px}.pdh-browser-page[data-v-0f7c02cd]{padding:16px;height:100%;background:#f5f5f5;overflow-y:auto}.page-header[data-v-0f7c02cd]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.page-title[data-v-0f7c02cd]{margin:0 0 4px;font-size:18px}.page-sub[data-v-0f7c02cd]{margin:0;color:#999;font-size:13px}.browser-layout[data-v-0f7c02cd]{align-items:flex-start}.main-pane[data-v-0f7c02cd]{display:flex;flex-direction:column;gap:12px}.results-summary[data-v-0f7c02cd]{font-size:13px;color:#666;padding:4px 4px 8px}.results-summary .loaded-of[data-v-0f7c02cd]{margin-left:8px;color:#999}.load-more[data-v-0f7c02cd]{margin-top:12px}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{I as m,J as p,U as E,c as n,K as a,o as ee,r as y,P as i,Q as k,V as f,S as R,R as v,F as J,Z as q}from"./vendor-Bn1JzzAn.js";import{_ as ne,u as te,d as G,t as Z}from"./index-k7QsBwyo.js";import{R as se,A as oe,f as le,Z as ie}from"./icons-DG5UD-6K.js";const re={__name:"Permissions",setup(ae,{expose:r}){r();const I=te(),e=y("roles"),z=y(!1);async function H(){z.value=!0;try{e.value==="roles"?await w():e.value==="audit"&&await u()}finally{z.value=!1}}function S(s){s==="roles"&&b.value.length===0&&w(),s==="audit"&&P.value.length===0&&u()}const O=y(!1),b=y([]),U=[{title:"角色名",key:"name",dataIndex:"name",width:"160px"},{title:"描述",key:"description",dataIndex:"description",width:"240px"},{title:"权限",key:"permissions",dataIndex:"permissions"},{title:"用户数",key:"userCount",dataIndex:"userCount",width:"100px"}];async function w(){O.value=!0;try{const{output:s}=await I.execute("auth roles --json",15e3);b.value=K(s,A)}catch(s){G.error("加载角色列表失败: "+s.message)}finally{O.value=!1}}function A(s){const o=[],c=s.split(`
|
|
2
|
-
`);for(const _ of c){const l=_.trim();if(!l||l.startsWith("─")||l.match(/^Role/i))continue;const d=l.split(/\s*[|│]\s*/);d.length>=2?o.push({key:o.length,name:d[0]||"-",description:d[1]||"",permissions:d[2]?d[2].split(/[,;\s]+/).filter(Boolean):[],userCount:d[3]&&parseInt(d[3],10)||0}):l.length>2&&o.push({key:o.length,name:l.slice(0,60),description:"",permissions:[],userCount:0})}return o}const T=y(""),C=y(""),j=y(!1),L=y(null),M=["note:read","note:write","admin:*","skill:execute"];async function V(){if(!(!T.value.trim()||!C.value.trim())){j.value=!0,L.value=null;try{const s=`auth check ${T.value.trim()} "${C.value.trim()}"`,{output:o}=await I.execute(s,15e3),c=o.toLowerCase(),_=c.includes("allow")||c.includes("granted")||c.includes("true")||c.includes("yes"),l=c.includes("denied")||c.includes("reject")||c.includes("false")||c.includes("no permission");L.value={allowed:_&&!l,detail:o.trim()||(_?"用户拥有该权限":"用户没有该权限")}}catch(s){L.value={allowed:!1,detail:"检查失败: "+s.message}}finally{j.value=!1}}}const N=y(!1),P=y([]),B=y([]),F=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function t(s){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(s||"").toLowerCase()]||"default"}async function u(){N.value=!0;try{const[s,o]=await Promise.all([I.execute("audit log --json",15e3),I.execute("audit stats --json",15e3)]);P.value=K(s.output,W),B.value=Q(o.output)}catch(s){G.error("加载审计日志失败: "+s.message)}finally{N.value=!1}}function W(s){const o=[],c=s.split(`
|
|
3
|
-
`);for(const _ of c){const l=_.trim();if(!l||l.startsWith("─")||l.startsWith("Audit")||l.startsWith("Recent"))continue;const d=l.split(/\s*[|│]\s*/);if(d.length>=3){o.push({key:o.length,timestamp:d[0]||"-",event:d[1]||"-",user:d[2]||"-",level:d[3]||"info",detail:d.slice(4).join(" ")||""});continue}const x=l.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(x){const h=x[2],g=h.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);o.push({key:o.length,timestamp:x[1],event:h.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:g?g[1].toLowerCase():"info",detail:""})}else l.length>3&&!l.match(/^\d+ event/i)&&o.push({key:o.length,timestamp:"-",event:l.slice(0,80),user:"-",level:"info",detail:""})}return o}function Q(s){const o=Z(s);if(o&&typeof o=="object"&&!Array.isArray(o)){const x=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(o).slice(0,4).map(([h,g],D)=>({label:h,value:typeof g=="number"?g:String(g),color:x[D%x.length]}))}const c=[],_=s.split(`
|
|
4
|
-
`),l=["#1677ff","#52c41a","#faad14","#ff4d4f"];let d=0;for(const x of _){const h=x.trim();if(!h||h.startsWith("─")||h.startsWith("Audit"))continue;const g=h.match(/^(.+?)\s*[:=]\s*(.+)$/);if(g){const D=g[1].trim(),Y=g[2].trim(),$=Y.match(/^(\d+)/);c.push({label:D,value:$?parseInt($[1],10):Y,color:l[d%l.length]}),d++}}return c.length===0&&c.push({label:"总事件数",value:P.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),c}function K(s,o){const c=Z(s);return Array.isArray(c)?c.map((_,l)=>({key:l,..._})):o(s)}ee(()=>{w()});const X={ws:I,activeTab:e,refreshing:z,refreshCurrentTab:H,onTabChange:S,rolesLoading:O,rolesList:b,rolesColumns:U,loadRoles:w,parseRolesText:A,checkUserId:T,checkPermission:C,checking:j,checkResult:L,quickPermissions:M,doCheck:V,auditLoading:N,auditEvents:P,auditStats:B,auditColumns:F,levelColor:t,loadAudit:u,parseAuditLogText:W,parseAuditStatsOutput:Q,parseJsonOutput:K,ref:y,onMounted:ee,get LockOutlined(){return ie},get CheckCircleOutlined(){return le},get AuditOutlined(){return oe},get ReloadOutlined(){return se},get message(){return G},get useWsStore(){return te},get tryParseJson(){return Z}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},ce={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ue={key:0,style:{"text-align":"center",padding:"60px"}},de={key:0,style:{color:"#e0e0e0","font-weight":"500"}},me={key:1,style:{color:"var(--text-secondary)"}},pe={key:0,style:{"margin-top":"16px"}},fe={key:0,style:{"text-align":"center",padding:"60px"}},ye={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},ve={key:1,style:{color:"#e0e0e0"}},_e={key:2,style:{color:"var(--text-secondary)"}},ge={key:4,style:{color:"var(--text-muted)","font-size":"12px"}};function ke(ae,r,I,e,z,H){const S=m("a-button"),O=m("a-spin"),b=m("a-tag"),U=m("a-empty"),w=m("a-table"),A=m("a-tab-pane"),T=m("a-input"),C=m("a-form-item"),j=m("a-space"),L=m("a-form"),M=m("a-alert"),V=m("a-card"),N=m("a-statistic"),P=m("a-col"),B=m("a-row"),F=m("a-tabs");return i(),p("div",null,[E("div",ce,[r[4]||(r[4]=E("div",null,[E("h2",{class:"page-title"},"权限管理"),E("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),n(S,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:a(()=>[n(e.ReloadOutlined)]),default:a(()=>[r[3]||(r[3]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),n(F,{activeKey:e.activeTab,"onUpdate:activeKey":r[2]||(r[2]=t=>e.activeTab=t),type:"card",onChange:e.onTabChange},{default:a(()=>[f(" Tab 1: Roles "),n(A,{key:"roles"},{tab:a(()=>[n(e.LockOutlined),r[5]||(r[5]=k(" 角色列表 ",-1))]),default:a(()=>[e.rolesLoading?(i(),p("div",ue,[n(O,{size:"large"})])):(i(),R(w,{key:1,columns:e.rolesColumns,"data-source":e.rolesList,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:a(({column:t,record:u})=>[t.key==="name"?(i(),p("span",de,v(u.name),1)):f("v-if",!0),t.key==="description"?(i(),p("span",me,v(u.description),1)):f("v-if",!0),t.key==="permissions"?(i(),p(J,{key:2},[(i(!0),p(J,null,q((u.permissions||[]).slice(0,5),W=>(i(),R(b,{key:W,color:"blue",style:{"margin-bottom":"2px"}},{default:a(()=>[k(v(W),1)]),_:2},1024))),128)),(u.permissions||[]).length>5?(i(),R(b,{key:0,color:"default"},{default:a(()=>[k(" +"+v(u.permissions.length-5),1)]),_:2},1024)):f("v-if",!0)],64)):f("v-if",!0),t.key==="userCount"?(i(),R(b,{key:3,color:u.userCount>0?"green":"default"},{default:a(()=>[k(v(u.userCount??0),1)]),_:2},1032,["color"])):f("v-if",!0)]),emptyText:a(()=>[n(U,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),f(" Tab 2: Permission Check "),n(A,{key:"check"},{tab:a(()=>[n(e.CheckCircleOutlined),r[6]||(r[6]=k(" 权限检查 ",-1))]),default:a(()=>[n(V,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:a(()=>[n(L,{"label-col":{span:5},"wrapper-col":{span:19}},{default:a(()=>[n(C,{label:"用户 ID",required:""},{default:a(()=>[n(T,{value:e.checkUserId,"onUpdate:value":r[0]||(r[0]=t=>e.checkUserId=t),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),n(C,{label:"权限",required:""},{default:a(()=>[n(T,{value:e.checkPermission,"onUpdate:value":r[1]||(r[1]=t=>e.checkPermission=t),placeholder:"note:read"},null,8,["value"])]),_:1}),n(C,{"wrapper-col":{offset:5,span:19}},{default:a(()=>[n(j,{wrap:""},{default:a(()=>[n(S,{type:"primary",loading:e.checking,disabled:!e.checkUserId.trim()||!e.checkPermission.trim(),onClick:e.doCheck},{icon:a(()=>[n(e.CheckCircleOutlined)]),default:a(()=>[r[7]||(r[7]=k(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),p(J,null,q(e.quickPermissions,t=>n(S,{key:t,size:"small",onClick:u=>e.checkPermission=t},{default:a(()=>[k(v(t),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),e.checkResult!==null?(i(),p("div",pe,[n(M,{message:e.checkResult.allowed?"权限允许":"权限拒绝",description:e.checkResult.detail,type:e.checkResult.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):f("v-if",!0)]),_:1})]),_:1}),f(" Tab 3: Audit Logs "),n(A,{key:"audit"},{tab:a(()=>[n(e.AuditOutlined),r[8]||(r[8]=k(" 审计日志 ",-1))]),default:a(()=>[n(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[(i(!0),p(J,null,q(e.auditStats,t=>(i(),R(P,{xs:12,sm:6,key:t.label},{default:a(()=>[n(V,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[n(N,{title:t.label,value:t.value,"value-style":{color:t.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.auditLoading?(i(),p("div",fe,[n(O,{size:"large"})])):(i(),R(w,{key:1,columns:e.auditColumns,"data-source":e.auditEvents,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:a(({column:t,record:u})=>[t.key==="timestamp"?(i(),p("span",ye,v(u.timestamp),1)):f("v-if",!0),t.key==="event"?(i(),p("span",ve,v(u.event),1)):f("v-if",!0),t.key==="user"?(i(),p("span",_e,v(u.user),1)):f("v-if",!0),t.key==="level"?(i(),R(b,{key:3,color:e.levelColor(u.level)},{default:a(()=>[k(v(u.level),1)]),_:2},1032,["color"])):f("v-if",!0),t.key==="detail"?(i(),p("span",ge,v(u.detail),1)):f("v-if",!0)]),emptyText:a(()=>[n(U,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}const we=ne(re,[["render",ke],["__scopeId","data-v-73bcb987"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/Permissions.vue"]]);export{we as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[data-v-73bcb987] .perm-row:hover td{background:var(--bg-card-hover)!important}[data-v-73bcb987] .ant-tabs-tab{color:var(--text-secondary)!important}[data-v-73bcb987] .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1677ff!important}[data-v-73bcb987] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.hint[data-v-4ed94be5]{font-size:12px;color:var(--text-color-secondary, #888)}.vendor-card[data-v-4ed94be5]{cursor:pointer;border:1px solid transparent;transition:border-color .15s}.vendor-card.selected[data-v-4ed94be5]{border-color:#1677ff}.vendor-head[data-v-4ed94be5]{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.vendor-actions[data-v-4ed94be5]{margin-top:6px;display:flex;justify-content:flex-end}.kv[data-v-4ed94be5]{font-size:12px}.howto[data-v-4ed94be5]{margin:0;padding-left:20px;font-size:13px}.howto li[data-v-4ed94be5]{margin-bottom:4px}kbd[data-v-4ed94be5]{background:#f0f0f0;border:1px solid #d9d9d9;border-radius:3px;padding:0 4px;font-family:monospace;font-size:12px}.hint[data-v-2f50c8a7],.kv[data-v-2f50c8a7]{font-size:12px;color:var(--text-color-secondary, #888)}.probe-result[data-v-2f50c8a7]{margin-top:8px}code[data-v-2f50c8a7]{background:#f0f0f0;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:12px}.pdh-page[data-v-92d13942]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-92d13942]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-92d13942]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-92d13942]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-92d13942]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-92d13942]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-92d13942]{white-space:pre-wrap;font-size:14px;line-height:1.7;background:var(--bg-elevated, #fafafa);padding:12px;border-radius:6px;border-left:3px solid #1677ff}.hint[data-v-92d13942]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-92d13942]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-92d13942]{color:#52c41a;font-weight:600}.amount-out[data-v-92d13942]{color:#ff4d4f;font-weight:600}
|