chainlesschain 0.166.10 → 0.166.13
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 +33 -0
- package/bin/chainlesschain.js +5 -0
- package/package.json +4 -2
- package/src/assets/web-panel/assets/{AIOps-CLYBDAGv.js → AIOps-BN25cNOD.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CpeSttcu.js → ActionButton-Da9IP-m5.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Ba1TNLG0.js → Analytics-D7hkEvQm.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-xBy8EOeg.js → AppLayout-CCV4Xnbc.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-CJ_3TFb8.js → Artifacts-CVSnVJeA.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DUATFCG3.js → Audit-CuYdw5Ag.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BRXYPIGp.js → BackgroundAgents-DZCnK-Tf.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D8auLx7y.js → Backup-cV9FdpTy.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CBgdslQ3.js → BaseInput-BRnv6YSp.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-B32LvAiE.js → Chat-Bw5w87P4.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-CVfvAy-n.js → ChatBubbleRenderer-C0GjtUAw.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BwzBxOpC.js → Checkbox-DaoTqcdt.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-0U5vrg1H.js → Codegen-B4dYcEIi.js} +1 -1
- package/src/assets/web-panel/assets/{Col-dZ2i4aAj.js → Col-mAhuOeuD.js} +1 -1
- package/src/assets/web-panel/assets/{Community-UVvpLr8c.js → Community-BK6KEdBk.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BDNEb1Bd.js → Compact-CCglmNu5.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BrzQPxyS.js → Compliance-Cm8S4of7.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BbgGsu-9.js → Cowork-Dhs1QLMe.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-G321XPhp.js → Cron-CLlhmXWk.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CgLNUyMn.js → Crosschain-BnHVbaNs.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BAfRj18q.js → DID-UzQP9-0O.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BNIxA4TK.js → Dashboard-CBdlPClz.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BLAUmCAN.js → Dropdown-axIRPdq1.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CsnhTW22.js → EmailListRenderer-DUalW5rx.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-zcQ7Ip1n.js → FamilyGuardDashboard-Bl4W9luY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-KFwxodNU.js → Federation-C1yP-uEu.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-3CYRLEHG.js → FormItemContext-Xh6Ig5q8.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D3d9D8L9.js → GenericCardRenderer-C2cz3bt2.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BJ202nJY.js → Git-C_z63ixg.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-ClnnXVQ-.js → Governance-BYqB33_3.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DNU-PTkc.js → Inference-CEULuArm.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DJuinbuY.js → KnowledgeGraph-fgMsu-0H.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-D4No-46s.js → Logs-DO9Hdcec.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BkrK04xW.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Ba-KqRN3.js → Marketplace-B8zyLiFe.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DVoxnPgE.js → McpTools-BLAN2mWW.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-D_C8gzAZ.js → Memory-CrQcFM7u.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DnzTPcDH.js → MobileBridge-DVnyiiU-.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-qjCME5OD.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CvEHmHId.js → Mtc-4JE3C3It.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-VNJmWqmv.js → MtcAudit-CjBuak9I.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-BO0x_Vsa.js → Multisig-BtPcYQcC.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CM2gI1UY.js → NLProgramming-Cx653_Ba.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CMc1HsML.js → Notes-CkuD3YzS.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DGNmSKGM.js → NotificationSettings-BgNgU7HH.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Du-Kct3p.js → OrderTableRenderer-BTC8W0a-.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRtRZjas.js → Organization-Dmd4Hjxz.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Dp4OeWsn.js → Overflow-C_5DA-G0.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DXMJVls8.js → P2P-uwslV4XC.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-CuNgwVnX.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-D1Hbb51o.js → Permissions-CJayVX9H.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BridiDhr.js → PersonalDataHub-Cb05H5go.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-B4bUNCm1.js → Pipeline-BZlGKapZ.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BTu_HEqK.js → Privacy-BIzZWYzd.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-SVtL2hnt.js → ProjectInit-vEYYyQXQ.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B2Sh7JZ2.js → ProjectSettings-MZqTy5CC.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BwU1xalW.js → Projects-CRARUOl8.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BWdWQSDw.js → Providers-80VAK8PX.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-Brzc-Sxb.js → QrScannerModal-CzRSoIwK.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DIBz7FCe.js → QuickAsk-BpwQ2n4C.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CZ8RriIJ.js → Recommend-BC03TZ79.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-CM0KJQ3t.js → RemoteSession-DE59-jaa.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-D_wo8H0O.js → Reputation-DOHmeWyA.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D1G1fD7N.js → Row-hc5RZl1D.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-dKCVtA0K.js → RssFeed-Cv5uMP7E.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Be1D61xo.js → Search-qohu7Ug0.js} +1 -1
- package/src/assets/web-panel/assets/{Security-IbNiR6OC.js → Security-drCPFWV5.js} +4 -4
- package/src/assets/web-panel/assets/{Services-nuHK8y8p.js → Services-BAEgUeRy.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DnM5jdnC.js → Skeleton-CkJkKBlo.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DCTdoq_q.js → Skills-bMuKEpez.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DlWun-Ui.js → Sla-DxWQVHRC.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-C19kv2sd.js → SpeechSettings-BpS8idmV.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CkQIR_Hu.js → SyncSettings-BPBLlW5v.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DdbqOEbs.js → Tasks-C4SLEeUh.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-B7GpIXeo.js → Templates-r-wfU39U.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-ByEstFhY.js → Tenant-C7vjRmLN.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-BKRVID1a.js → Terminal-DdzeFCV2.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-CNS3dHNv.js → TimelineRenderer-CYyWN2KD.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BykqylCL.js → Tokens-D8A9osUg.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-ByNxq51W.js → Trigger-DBvrNlyS.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BlrFsdaS.js → Trust-DBVAGc7o.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dg26A-sd.js → UkeySign-C1vQUCRJ.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C1wUxNn0.js → VideoEditing-BKs4dah4.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-OphEUzI4.js → Wallet-ByIuj3lD.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-_8lL08hF.js → WebAuthn-DYlAFCm9.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-BnTuIvnP.js → WorkflowEditor-Dwyadd0c.js} +1 -1
- package/src/assets/web-panel/assets/{chat-3N3VLQYr.js → chat-Bm2f3s08.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Bo_G96gg.js → colors-C8ORSh7V.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DjubfjI_.js → compact-item-1iVlnsM-.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Cx_HSLCk.js → createContext-CmqNyUSL.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B69RCDDH.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D5OjAOlA.js → hasIn-rUMaX3Ul.js} +1 -1
- package/src/assets/web-panel/assets/index-9biMQ-tw.js +1 -0
- package/src/assets/web-panel/assets/{index-Bj7S5IJw.js → index-B53c3diB.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-_Cy0k_.js → index-B59OWAs7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaU60K3A.js → index-B8BrB0Ls.js} +1 -1
- package/src/assets/web-panel/assets/{index-UnpsQ6A0.js → index-BC32_0xT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BScGr1BY.js → index-BC8Wb6cy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CC7RnaPP.js → index-BCOhTILd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXJqa1-I.js → index-BFniLMn9.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-4sfa0l.js → index-BIvM-uAX.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8dPFFhy.js → index-BK-RY0-7.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVPDhmVH.js → index-BQL9r73Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqZq3zWr.js → index-BVtnizyC.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5IwN9q3.js → index-Bf1PlIHp.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz5tQ5PY.js → index-Bgw4Y2rU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmLwI-Y8.js → index-BgwLNxmr.js} +1 -1
- package/src/assets/web-panel/assets/{index-Y-H7j25u.js → index-C-J5-pGH.js} +1 -1
- package/src/assets/web-panel/assets/{index-ydnEPOzZ.js → index-C-ZIHi42.js} +1 -1
- package/src/assets/web-panel/assets/{index-HioDjvUF.js → index-C3B1S-mW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRKk1JPX.js → index-C5RfRciU.js} +1 -1
- package/src/assets/web-panel/assets/{index-x7o-2T3S.js → index-CCEyz58d.js} +1 -1
- package/src/assets/web-panel/assets/index-COie87kl.js +1 -0
- package/src/assets/web-panel/assets/{index-BvYo09C0.js → index-CTfEmKK0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCjq3g32.js → index-CfiHyVyl.js} +1 -1
- package/src/assets/web-panel/assets/{index-3_CEBEEf.js → index-CkFvuAex.js} +3 -3
- package/src/assets/web-panel/assets/{index-EZr3bvz2.js → index-D98FXb0w.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4MAnkl5.js → index-DDHk911Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgPb37tI.js → index-DJxtPFOh.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNmsP0Xf.js → index-DVJ1uKf4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBvZhdCb.js → index-Dcck8QfW.js} +1 -1
- package/src/assets/web-panel/assets/{index-B905-Mcs.js → index-DgUE51Pz.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrVjatPe.js → index-Dsve5Gkv.js} +1 -1
- package/src/assets/web-panel/assets/{index-uAcJUJkx.js → index-DvedhJeM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DD1zSPZH.js → index-DwMdWKiF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxgIE4PD.js → index-OcbzdRpT.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ce8EWU6r.js → index-fPK6GFEg.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlcbE0sX.js → index-geQinnns.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbdr8tVi.js → index-pHWA7bmM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE4XtzMl.js → index-reUHhuz8.js} +1 -1
- package/src/assets/web-panel/assets/{index-Q_vn0t8d.js → index-tqTx5wXo.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DurpENJY.js → initDefaultProps-CuA-cpkL.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CIh-z-gR.js → motion-CimmE_9b.js} +1 -1
- package/src/assets/web-panel/assets/{move-Uc_yI2NA.js → move-DlGlrltz.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DUevj5wz.js → mtc-parser-CK6BJQ07.js} +1 -1
- package/src/assets/web-panel/assets/{omit-85eMYyur.js → omit-BKjBfZfB.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-AuxDD20F.js → pickAttrs-B2chVYw9.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DOWn8dd1.js → placementArrow-BW8aLJJ3.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CPxTWodH.js → responsiveObserve-dXlPl66S.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BqvbGPjx.js → slide-hSa89S4G.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BzXKkV8d.js → statusUtils-DM6KLt-s.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-B2O7yRk3.js → styleChecker-C9MQAK15.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DRWp7px1.js → useFlexGapSupport-BpQDpP0z.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-Dp0V7sjM.js → useFs-C7rtRViA.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CyCrG3ql.js → usePersonalDataHub-Dm15xafq.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CXhoFpFo.js → vnode-mEiEytw4.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-0z3mtwEg.js → zoom-DzPxflhY.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +5 -5
- package/src/commands/agent.js +51 -20
- package/src/commands/compact.js +349 -3
- package/src/commands/context.js +72 -1
- package/src/commands/graph.js +26 -15
- package/src/commands/hmemory.js +21 -0
- package/src/commands/hook.js +256 -28
- package/src/commands/memory.js +209 -42
- package/src/commands/promcomp.js +17 -0
- package/src/commands/serve.js +94 -10
- package/src/commands/session.js +2 -3
- package/src/commands/team.js +7 -1
- package/src/data/changelog.json +28 -2
- package/src/gateways/ws/session-core-protocol.js +62 -3
- package/src/gateways/ws/session-protocol.js +123 -15
- package/src/gateways/ws/ws-agent-handler.js +157 -9
- package/src/gateways/ws/ws-session-gateway.js +204 -30
- package/src/generated/cc-agent-protocol.schema.json +2094 -4
- package/src/harness/prompt-compressor.js +5 -55
- package/src/lib/agent-sandbox.js +14 -4
- package/src/lib/agent-team/team-distributed-graph-bridge.js +3 -3
- package/src/lib/app-server/context-memory-notifications.js +54 -0
- package/src/lib/app-server/rollout-store-factory.js +115 -0
- package/src/lib/app-server/rollout-store.js +310 -23
- package/src/lib/app-server/server.js +184 -7
- package/src/lib/app-server/sqlite-rollout-store.js +59 -16
- package/src/lib/auto-mode-config.js +26 -0
- package/src/lib/causal-observability.js +13 -1
- package/src/lib/context-memory-kernel/authority.js +95 -0
- package/src/lib/context-memory-kernel/durable-memory-port.js +296 -0
- package/src/lib/context-memory-kernel/index.js +8 -0
- package/src/lib/context-memory-kernel/jsonl-session-context-port.js +232 -0
- package/src/lib/context-memory-kernel/live-compaction.js +375 -0
- package/src/lib/context-memory-kernel/memory-service.js +667 -0
- package/src/lib/context-memory-kernel/message-adapter.js +451 -0
- package/src/lib/context-memory-kernel/privacy-purge-port.js +244 -0
- package/src/lib/context-memory-kernel/provider-context.js +192 -0
- package/src/lib/context-memory-kernel/runtime.js +61 -0
- package/src/lib/direct-model-usage.js +22 -18
- package/src/lib/graph-kernel/cutover-authority-resolver.js +4 -5
- package/src/lib/graph-kernel/cutover-ledger.js +2 -2
- package/src/lib/graph-kernel/event-store.js +3 -5
- package/src/lib/graph-kernel/migration-saga.js +2 -2
- package/src/lib/graph-kernel/production-cutover-evidence.js +8 -1
- package/src/lib/hierarchical-memory.js +22 -0
- package/src/lib/hook-audit-store.js +170 -0
- package/src/lib/hook-event-bus.cjs +0 -0
- package/src/lib/hook-manager.js +25 -83
- package/src/lib/hook-runtime-adapters.js +233 -0
- package/src/lib/hook-runtime-contract.cjs +291 -0
- package/src/lib/hook-runtime-contract.js +21 -0
- package/src/lib/hook-trust.js +210 -0
- package/src/lib/hooks-v2-producers.js +52 -6
- package/src/lib/hooks-v2-runtime.js +443 -178
- package/src/lib/llm-pricing.js +10 -0
- package/src/lib/memory-manager.js +29 -4
- package/src/lib/model-context-window.js +52 -0
- package/src/lib/permanent-memory.js +17 -0
- package/src/lib/plan-mode.js +8 -4
- package/src/lib/process-execution-broker/index.js +208 -16
- package/src/lib/runtime-usage-ledger.js +20 -0
- package/src/lib/session-consolidator.js +59 -0
- package/src/lib/session-core-singletons.js +17 -4
- package/src/lib/session-hooks.js +29 -2
- package/src/lib/session-transcript-migration.js +188 -0
- package/src/lib/settings-hook-events.cjs +37 -401
- package/src/lib/settings-hook-events.js +210 -8
- package/src/lib/settings-hooks.cjs +42 -83
- package/src/lib/ws-session-manager.js +4 -1
- package/src/repl/agent-repl.js +186 -53
- package/src/runtime/agent-core.js +376 -350
- package/src/runtime/headless-runner.js +40 -33
- package/src/runtime/headless-stream.js +131 -30
- package/src/assets/web-panel/assets/MarkdownRenderer-Dt8hH_qA.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-Jg2dVUc-.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-0jYeVmyY.js +0 -7
- package/src/assets/web-panel/assets/devWarning-BX944k9E.js +0 -1
- package/src/assets/web-panel/assets/index-C_9Jt_SR.js +0 -1
- package/src/assets/web-panel/assets/index-DL2EFx7m.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
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-
|
|
2
|
-
`).filter(I=>I.trim()),P=[];for(const I of N){const U=I.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(U){P.push({id:U[1],name:U[2].trim(),connected:/connected|online/i.test(U[3])});continue}const V=I.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),Q=r(""),K=r(0),Z=r(""),h=r(""),W=r(!1),J=r(!1);async function F(){B.value=!0,j.value="";try{const{output:n}=await e.execute("sync status",15e3);q(n)}catch(n){j.value=s("p2p.messages.loadSyncFailed",{err:n.message})}finally{B.value=!1}}function q(n){if(!n){Q.value=s("p2p.sync.unknown");return}A.value=/synced|online|up.to.date/i.test(n),Q.value=A.value?s("p2p.sync.synced"):s("p2p.sync.notSynced");const N=n.match(/pending[:\s]+(\d+)/i);K.value=N?parseInt(N[1]):0;const P=n.match(/last[:\s]+(.+)/i);P&&(Z.value=P[1].trim())}async function oe(){W.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{W.value=!1}}async function le(){J.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{J.value=!1}}async function G(){await Promise.all([k(),F()])}Y(G);const H={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:Q,syncPending:K,lastSyncTime:Z,syncOutput:h,pushLoading:W,pullLoading:J,loadSync:F,parseSyncStatus:q,syncPush:oe,syncPull:le,refreshAll:G,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(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},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-Ix5cmp/repo/packages/web-panel/src/views/P2P.vue"]]);export{Fe as default};
|
|
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-CkFvuAex.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(I=>I.trim()),P=[];for(const I of N){const U=I.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(U){P.push({id:U[1],name:U[2].trim(),connected:/connected|online/i.test(U[3])});continue}const V=I.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(V){const H=V[2].trim();P.push({id:V[1],name:H||V[1].slice(0,12),connected:/connected|online/i.test(H)})}}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),Q=r(""),K=r(0),X=r(""),h=r(""),W=r(!1),J=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){Q.value=s("p2p.sync.unknown");return}A.value=/synced|online|up.to.date/i.test(n),Q.value=A.value?s("p2p.sync.synced"):s("p2p.sync.notSynced");const N=n.match(/pending[:\s]+(\d+)/i);K.value=N?parseInt(N[1]):0;const P=n.match(/last[:\s]+(.+)/i);P&&(X.value=P[1].trim())}async function oe(){W.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{W.value=!1}}async function le(){J.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{J.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:Q,syncPending:K,lastSyncTime:X,syncOutput:h,pushLoading:W,pullLoading:J,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-IRmDbX/repo/packages/web-panel/src/views/P2P.vue"]]);export{Fe as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-C0GjtUAw.js","./vendor-Bn1JzzAn.js","./index-CkFvuAex.js","./icons-DG5UD-6K.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-BTC8W0a-.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-CYyWN2KD.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-DUalW5rx.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-C2cz3bt2.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{E as ue,r as E,b as w,I as g,P as u,J as O,U as v,c,S as C,V as R,_ as M,F as V,Z as se,a0 as ae,R as x,K as m,Q as b,W as A,o as J}from"./vendor-Bn1JzzAn.js";import{u as U}from"./usePersonalDataHub-Dm15xafq.js";import{_ as I,e as L,d as P}from"./index-CkFvuAex.js";import{aa as q,ag as Q,M as z,aI as G,v as X,aH as H,aq as K,ac as W,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 T=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Y=300,Z=ue("pdhBrowser",()=>{const r=E({...T}),t=E([]),n=E(null),e=E(!1),o=E(!1),a=E(null),l=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const D=w(()=>t.value.length>0),j=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,F]=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:F.byCategory||{},byAdapter:F.byAdapter||{},bySubtype:F.bySubtype||{},total:F.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 T))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,y()},Y)}function ie(S){return r.value={...T,...S},_&&(clearTimeout(_),_=null),y()}function ce(){r.value={...T},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:D,canLoadMore:j,search:y,loadMore:k,setFilter:le,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Y}}),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:W,social:K,email:H,shopping:X,travel:G,system:z,"ai-chat":Q,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 W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return X},get CarOutlined(){return G},get MobileOutlined(){return z},get RobotOutlined(){return Q},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:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(l,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):R("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(ae(e.iconFor(s)),{class:"icon"})),v("span",we,x(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"])):R("v-if",!0)],10,Oe))),128))])}const ke=I(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-IRmDbX/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Re={__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 D(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 j={props:e,emit:o,placeholderText:a,adapterOptions:l,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:D,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Ee={class:"pdh-filter-bar"},xe={key:1,class:"hint"},De={key:2,class:"hint"};function je(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",Ee,[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})):R("v-if",!0),n.shortQuery?(u(),O("span",xe,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",De,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):R("v-if",!0)])}const Ae=I(Re,[["render",je],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-IRmDbX/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Le={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=A(()=>L(()=>import("./ChatBubbleRenderer-C0GjtUAw.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=A(()=>L(()=>import("./OrderTableRenderer-BTC8W0a-.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=A(()=>L(()=>import("./TimelineRenderer-CYyWN2KD.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),a=A(()=>L(()=>import("./EmailListRenderer-DUalW5rx.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),l=A(()=>L(()=>import("./GenericCardRenderer-C2cz3bt2.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:A,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function Ie(r,t,n,e,o,a){return u(),C(ae(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Fe=I(Le,[["render",Ie],["__file","/tmp/cc-web-panel-IRmDbX/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(Te).join(",")});return[n,...e].join(`
|
|
5
|
+
`)+`
|
|
6
|
+
`}function Te(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(" 导出 ("+x(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=I(Pe,[["render",qe],["__file","/tmp/cc-web-panel-IRmDbX/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=Z(),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)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const l={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:a,onMounted:J,computed:w,get ReloadOutlined(){return ye},get usePdhBrowserStore(){return Z},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Ae,RendererDispatcher:Fe,ExportDropdown:Be};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Qe={key:0},ze={key:0},Ge={key:1},Xe={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(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"),D=g("a-alert"),j=g("a-empty"),h=g("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(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})):R("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",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=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",Qe,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,x(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",ze,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,x(e.categoryLabel(e.store.filters.category)),1),v("strong",null,x(e.store.facets.byCategory[e.store.filters.category]||0),1)])):R("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,x(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):R("v-if",!0),v("span",Xe," / 已显示 "+x(e.store.results.length),1)],64))]),e.store.error?(u(),C(D,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):R("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(j,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):R("v-if",!0),v("div",He,[(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",Ke,[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"])])):R("v-if",!0)])]),_:1})]),_:1})])}const nt=I(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-IRmDbX/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{nt as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
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(""),N=y(!1),L=y(null),
|
|
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
|
|
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
|
|
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 M,Z as q}from"./vendor-Bn1JzzAn.js";import{_ as ne,u as te,d as G,t as Z}from"./index-CkFvuAex.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 Q(){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=J(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(""),N=y(!1),L=y(null),D=["note:read","note:write","admin:*","skill:execute"];async function V(){if(!(!T.value.trim()||!C.value.trim())){N.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{N.value=!1}}}const W=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(){W.value=!0;try{const[s,o]=await Promise.all([I.execute("audit log --json",15e3),I.execute("audit stats --json",15e3)]);P.value=J(s.output,j),B.value=X(o.output)}catch(s){G.error("加载审计日志失败: "+s.message)}finally{W.value=!1}}function j(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 X(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],K)=>({label:h,value:typeof g=="number"?g:String(g),color:x[K%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 K=g[1].trim(),Y=g[2].trim(),$=Y.match(/^(\d+)/);c.push({label:K,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 J(s,o){const c=Z(s);return Array.isArray(c)?c.map((_,l)=>({key:l,..._})):o(s)}ee(()=>{w()});const H={ws:I,activeTab:e,refreshing:z,refreshCurrentTab:Q,onTabChange:S,rolesLoading:O,rolesList:b,rolesColumns:U,loadRoles:w,parseRolesText:A,checkUserId:T,checkPermission:C,checking:N,checkResult:L,quickPermissions:D,doCheck:V,auditLoading:W,auditEvents:P,auditStats:B,auditColumns:F,levelColor:t,loadAudit:u,parseAuditLogText:j,parseAuditStatsOutput:X,parseJsonOutput:J,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(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},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,Q){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"),N=m("a-space"),L=m("a-form"),D=m("a-alert"),V=m("a-card"),W=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(M,{key:2},[(i(!0),p(M,null,q((u.permissions||[]).slice(0,5),j=>(i(),R(b,{key:j,color:"blue",style:{"margin-bottom":"2px"}},{default:a(()=>[k(v(j),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(N,{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(M,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(D,{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(M,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(W,{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-IRmDbX/repo/packages/web-panel/src/views/Permissions.vue"]]);export{we as default};
|