chainlesschain 0.162.3 → 0.162.8
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/bin/chainlesschain.js +0 -0
- package/package.json +2 -2
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-BHcJlF4M.js → AIOps-aMUJYSpU.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-QNqNYP_E.js → ActionButton-OR0lRZdD.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DWrmU2MM.js → Analytics-BfMp4CEg.js} +2 -2
- package/src/assets/web-panel/assets/{AppLayout-0BXhjvFX.js → AppLayout-DsCuOVxT.js} +2 -2
- package/src/assets/web-panel/assets/{Audit-Cns_OJ3y.js → Audit-_AgBKCnk.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BWXKm8S2.js → Backup-DuMKrzQE.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DMtM90I4.js → BaseInput-6If50B9h.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CPSQIJkd.js → Chat-LKExaE9D.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-CdoTzEcu.js → Checkbox-lAve8IZ7.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DiMm-2CJ.js → Codegen-BGRrXyxs.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Dw8uRsh8.js → Col-B8xEKq-w.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DF6oPrrt.js → Community-CHHfDSp6.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DDeBOvFc.js → Compact-C2lhX-05.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-cpcX8foc.js → Compliance-DfVk77IC.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BnF4dCvO.js → Cowork-BQhdnULG.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-CNm5yzGt.js → Cron-D97i0_EI.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-1fdaoWnO.js → Crosschain-Cve_HQ-5.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CgWgrQjr.js → DID-B7BoWEdP.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-dGcTq_hg.js → Dashboard-DF2CkjR8.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CMcWp2f1.js → Dropdown-D4Z1jwWu.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BVmtVOzD.js → Federation-DwvTsJFa.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BTuMR6zf.js → FormItemContext-BDiTma_8.js} +1 -1
- package/src/assets/web-panel/assets/{Git-2itzzOWU.js → Git-B8EfEU-1.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BD5nFtjx.js → Governance-bQA7Tept.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BqTjotuw.js → Inference-D34fMYbV.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CkJCUp_X.js → KnowledgeGraph-B_8bBmGM.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BezIQuu3.js → Logs-CwJhYTVt.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-BQi8NC94.js → Marketplace-BD3uuzww.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-UDm4tI8g.js → McpTools-D_Zwvily.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-b3k3SJXP.js → Memory-jVF57XHl.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-CHysUGzj.js → MobileBridge-ClAtqJaU.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-H5DjqNIw.js → MobileProjects-B19KSA4P.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-B-kn2cbZ.js → Mtc-DxajYtbq.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-BSeDGJAO.js → MtcAudit-DlKwbPGL.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-BSwWbNCn.js → Multisig-DuBQn3FV.js} +2 -2
- package/src/assets/web-panel/assets/{NLProgramming-B7fTKT9-.js → NLProgramming-oRBlzbNU.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CE7Dxyik.js → Notes-HOvoKAEz.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-BrWPb12X.js → NotificationSettings-bArFAv3j.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BvMcmpZ-.js → Organization-B4s1Rn39.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-9VpUiyX3.js → Overflow-C2_V35KO.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CZiZLuH6.js → P2P-BZ3EQxna.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-7xPYU8o3.js → Permissions-Bo5AXf7h.js} +1 -1
- package/src/assets/web-panel/assets/PersonalDataHub-BK7I0Rsb.css +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-Gw18y83j.js +1 -0
- package/src/assets/web-panel/assets/{Pipeline-BXmWkBtJ.js → Pipeline-_733qEBF.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Bowi-wqF.js → Privacy-BLYBBxeR.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BW1Xj7_l.js → ProjectInit-C8cQg8oo.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-pDbBvJFG.js → ProjectSettings-Bahm9oQJ.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-D32hRs2K.js → Projects-BsqCBs7g.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-fvnKRdFc.js → Providers-BRJ9jKvG.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DBZrimTb.js → QuickAsk-B5eH5ufy.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B_leuPdE.js → Recommend-D4rYVV0L.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-9YJu2Q0s.js → Reputation-h1wjkVly.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BwDaJw-R.js → Row-DuvWW403.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CCwGtGbs.js → RssFeed-B-NY4txM.js} +1 -1
- package/src/assets/web-panel/assets/{Search-CLdXqpfz.js → Search-CLjqgYPf.js} +1 -1
- package/src/assets/web-panel/assets/{Security-_It0GsWS.js → Security-_KySjOq5.js} +1 -1
- package/src/assets/web-panel/assets/{Services-jBxBWGGT.js → Services-CN9GmECL.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-DR_EuFFW.js → Skeleton-Bcu8eqiJ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DsHcMNEk.js → Skills-3oeFeeEN.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Be0UaX-h.js → Sla-CGTcZtVL.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-uUhDyyHj.js → SpeechSettings-BCXs-HN2.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CUAwaSnj.js → SyncSettings-FGSbecSU.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-CUVZww9Q.js → Tasks-_12fFaUS.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-WLZcNzJ_.js → Templates-BhfiSNuq.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-FgN0uYm6.js → Tenant-Bk08XHaK.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-BzLHjHyj.js → Terminal-BN4P8zso.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-z7lyRr40.js → Tokens-C1FHxUfU.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-HxLdC9ne.js → Trigger-DKmcgMsg.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DggmMxpI.js → Trust-gSo8e3sa.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-BO-pKTZ_.js → UkeySign-DxdzNrTS.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DdLdJ9Ps.js → VideoEditing-CZ_IqAw_.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-F8EfdQDN.js → Wallet-ztJldhlc.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-Bi2Kf8Ev.js → WebAuthn-IWR5yaHJ.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-DUHk4Y0A.js → WorkflowEditor-BC7bHrH9.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BMz8ik6R.js → chat-bWCVi480.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DTTx1bVY.js → colors-tk9UcMJh.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BjZyyKpa.js → compact-item-DvrBqRW0.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-D0Ztn7R_.js → createContext-Dh48yEoJ.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-BeXm1bJ2.js → hasIn-DhFZqw2W.js} +1 -1
- package/src/assets/web-panel/assets/icons-CLQTHa5-.js +57 -0
- package/src/assets/web-panel/assets/{index-CuDNPqlD.js → index-B1Km9jHJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIoinlAY.js → index-B5sCqkrI.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1CV-6q1.js → index-BBn2bAO4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqkwXe3s.js → index-BMhrHykJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DB1i3Cfr.js → index-BQg3zkF3.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1coHqyT.js → index-BdM_h28f.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXSXIknb.js → index-BfZhEeCu.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRNxWV3i.js → index-BgKxsNPN.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_juAGfN.js → index-BqCbH37-.js} +4 -4
- package/src/assets/web-panel/assets/index-Btv3yJqH.js +1 -0
- package/src/assets/web-panel/assets/{index-aBdRRXWO.js → index-C-T0Izic.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDmMBKM_.js → index-C1q29SZg.js} +1 -1
- package/src/assets/web-panel/assets/{index-tUIluCPu.js → index-C2LSgP0_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DfxUN2LB.js → index-C5Q_AIon.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHuIMHcS.js → index-C8NvrPso.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxIq_rps.js → index-CCiWpUyi.js} +1 -1
- package/src/assets/web-panel/assets/{index-OjH2wDtW.js → index-CDVk418O.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiAjZ9Iq.js → index-CE7s9aDu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUFpZk0I.js → index-CGmfKi-O.js} +1 -1
- package/src/assets/web-panel/assets/{index-CobyvwP0.js → index-CH7lkYCZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-JTN4jzka.js → index-Ci_43YbF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDRzvi5v.js → index-CugbuyeG.js} +1 -1
- package/src/assets/web-panel/assets/index-D6Nx0oIG.js +1 -0
- package/src/assets/web-panel/assets/{index-BWRsbH6v.js → index-DCeSV2ph.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLJnAsec.js → index-DI382M6n.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGudWWwE.js → index-DTbb54GX.js} +2 -2
- package/src/assets/web-panel/assets/{index-DTzwBmBS.js → index-DVMUHzwr.js} +1 -1
- package/src/assets/web-panel/assets/{index-By4zsU8r.js → index-DeWB6vZV.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnATlZR7.js → index-Dja_xcjz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Da_XUjv2.js → index-DmyUdBoW.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6Isxhje.js → index-DyzV-4bw.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dx7XPVkb.js → index-JcMiXnz7.js} +1 -1
- package/src/assets/web-panel/assets/{index-NppMuZBM.js → index-OGb7oHqA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLDHcuz4.js → index-ORgr-yOQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMvkBq2d.js → index-PbHsGeoK.js} +1 -1
- package/src/assets/web-panel/assets/{index-nwkYgoRS.js → index-R68d0WjD.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-niPBwZ.js → index-Z1-a86y7.js} +1 -1
- package/src/assets/web-panel/assets/{index-xN0WCVmC.js → index-g_WPIICs.js} +1 -1
- package/src/assets/web-panel/assets/{index-BODKOjRZ.js → index-uvwXPlKL.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DE_gVS_i.js → initDefaultProps-lrtHMmWq.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BiRUGscQ.js → motion-Dna0fLLD.js} +1 -1
- package/src/assets/web-panel/assets/{move-DMEzVMJZ.js → move-B77ZnXvW.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DBh74Ui4.js → omit-CLI0u4xr.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D6PQbWuo.js → pickAttrs-CsvVxvao.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BYkdt9jF.js → placementArrow-gCZvBkZg.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-C2ES6P0V.js → responsiveObserve-B4d5HJeN.js} +1 -1
- package/src/assets/web-panel/assets/{slide-zGdjevxe.js → slide-DmExRlkt.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Cf6eRpR7.js → statusUtils-BkcOP5ZQ.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DZZx_bHs.js → styleChecker-tL2BFwwe.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-B6q6zt9X.js → useFlexGapSupport-C-aUgESq.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DjaBUk_P.js → useFs-KT2jItx2.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CDF4X084.js → vnode-DJz8D0zb.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-C9FCvBpV.js → zoom-BqXtO25S.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/gateways/ws/message-dispatcher.js +35 -1
- package/src/gateways/ws/personal-data-hub-protocol.js +142 -3
- package/src/lib/personal-data-hub-wiring.js +121 -0
- package/src/assets/web-panel/assets/PersonalDataHub-BoAsj3rP.js +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-C5HcGC5x.css +0 -1
- package/src/assets/web-panel/assets/icons-BFHq5fEF.js +0 -57
- package/src/assets/web-panel/assets/index-DJOgV0SI.js +0 -1
- package/src/assets/web-panel/assets/index-FpewH8xy.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as t}from"./index-
|
|
1
|
+
import{K as t}from"./index-BqCbH37-.js";import{i as s}from"./motion-Dna0fLLD.js";const m=new t("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),f=new t("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),c=new t("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),y=new t("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),p=new t("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),O=new t("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),g=new t("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),v=new t("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}}),l={"move-up":{inKeyframes:g,outKeyframes:v},"move-down":{inKeyframes:m,outKeyframes:f},"move-left":{inKeyframes:c,outKeyframes:y},"move-right":{inKeyframes:p,outKeyframes:O}},w=(n,a)=>{const{antCls:o}=n,r=`${o}-${a}`,{inKeyframes:i,outKeyframes:e}=l[a];return[s(r,i,e,n.motionDurationMid),{[`
|
|
2
2
|
${r}-enter,
|
|
3
3
|
${r}-appear
|
|
4
4
|
`]:{opacity:0,animationTimingFunction:n.motionEaseOutCirc},[`${r}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{w as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as s}from"./index-
|
|
1
|
+
import{h as s}from"./index-BqCbH37-.js";function a(n,t){const e=s({},n);for(let o=0;o<t.length;o+=1){const r=t[o];delete e[r]}return e}export{a as o};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as i}from"./index-
|
|
1
|
+
import{h as i}from"./index-BqCbH37-.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
|
|
2
2
|
alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge
|
|
3
3
|
charset checked classid classname colspan cols content contenteditable contextmenu
|
|
4
4
|
controls coords crossorigin data datetime default defer dir disabled download draggable
|
package/src/assets/web-panel/assets/{placementArrow-BYkdt9jF.js → placementArrow-gCZvBkZg.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as i}from"./index-
|
|
1
|
+
import{h as i}from"./index-BqCbH37-.js";const L=(e,o,t,n,p)=>{const r=e/2,a=0,s=r,m=t*1/Math.sqrt(2),h=r-t*(1-1/Math.sqrt(2)),b=r-o*(1/Math.sqrt(2)),u=t*(Math.sqrt(2)-1)+o*(1/Math.sqrt(2)),g=2*r-b,w=u,d=2*r-m,c=h,A=2*r-a,x=s,v=r*Math.sqrt(2)+t*(Math.sqrt(2)-2),$=t*(Math.sqrt(2)-1);return{pointerEvents:"none",width:e,height:e,overflow:"hidden","&::after":{content:'""',position:"absolute",width:v,height:v,bottom:0,insetInline:0,margin:"auto",borderRadius:{_skip_check_:!0,value:`0 0 ${o}px 0`},transform:"translateY(50%) rotate(-135deg)",boxShadow:p,zIndex:0,background:"transparent"},"&::before":{position:"absolute",bottom:0,insetInlineStart:0,width:e,height:e/2,background:n,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*r-$}px 100%, ${$}px 100%)`,`path('M ${a} ${s} A ${t} ${t} 0 0 0 ${m} ${h} L ${b} ${u} A ${o} ${o} 0 0 1 ${g} ${w} L ${d} ${c} A ${t} ${t} 0 0 0 ${A} ${x} Z')`]},content:'""'}}},f={adjustX:1,adjustY:1},l=[0,0],j={left:{points:["cr","cl"],overflow:f,offset:[-4,0],targetOffset:l},right:{points:["cl","cr"],overflow:f,offset:[4,0],targetOffset:l},top:{points:["bc","tc"],overflow:f,offset:[0,-4],targetOffset:l},bottom:{points:["tc","bc"],overflow:f,offset:[0,4],targetOffset:l},topLeft:{points:["bl","tl"],overflow:f,offset:[0,-4],targetOffset:l},leftTop:{points:["tr","tl"],overflow:f,offset:[-4,0],targetOffset:l},topRight:{points:["br","tr"],overflow:f,offset:[0,-4],targetOffset:l},rightTop:{points:["tl","tr"],overflow:f,offset:[4,0],targetOffset:l},bottomRight:{points:["tr","br"],overflow:f,offset:[0,4],targetOffset:l},rightBottom:{points:["bl","br"],overflow:f,offset:[4,0],targetOffset:l},bottomLeft:{points:["tl","bl"],overflow:f,offset:[0,4],targetOffset:l},leftBottom:{points:["br","bl"],overflow:f,offset:[-4,0],targetOffset:l}},M={adjustX:1,adjustY:1},O={adjustX:0,adjustY:0},T=[0,0];function k(e){return typeof e=="boolean"?e?M:O:i(i({},O),e)}function Y(e){const{arrowWidth:o=4,horizontalArrowShift:t=16,verticalArrowShift:n=8,autoAdjustOverflow:p,arrowPointAtCenter:r}=e,a={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(t+o),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(n+o)]},topRight:{points:["br","tc"],offset:[t+o,-4]},rightTop:{points:["tl","cr"],offset:[4,-(n+o)]},bottomRight:{points:["tr","bc"],offset:[t+o,4]},rightBottom:{points:["bl","cr"],offset:[4,n+o]},bottomLeft:{points:["tl","bc"],offset:[-(t+o),4]},leftBottom:{points:["br","cl"],offset:[-4,n+o]}};return Object.keys(a).forEach(s=>{a[s]=r?i(i({},a[s]),{overflow:k(p),targetOffset:T}):i(i({},j[s]),{overflow:k(p)}),a[s].ignoreShake=!0}),a}function _(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return e.map(t=>`${o}${t}`).join(",")}const X=8;function B(e){const o=X,{sizePopupArrow:t,contentRadius:n,borderRadiusOuter:p,limitVerticalRadius:r}=e,a=t/2-Math.ceil(p*(Math.sqrt(2)-1)),s=(n>12?n+2:12)-a,m=r?o-a:s;return{dropdownArrowOffset:s,dropdownArrowOffsetVertical:m}}function q(e,o){const{componentCls:t,sizePopupArrow:n,marginXXS:p,borderRadiusXS:r,borderRadiusOuter:a,boxShadowPopoverArrow:s}=e,{colorBg:m,showArrowCls:h,contentRadius:b=e.borderRadiusLG,limitVerticalRadius:u}=o,{dropdownArrowOffsetVertical:g,dropdownArrowOffset:w}=B({sizePopupArrow:n,contentRadius:b,borderRadiusOuter:a,limitVerticalRadius:u}),d=n/2+p;return{[t]:{[`${t}-arrow`]:[i(i({position:"absolute",zIndex:1,display:"block"},L(n,r,a,m,s)),{"&:before":{background:m}})],[[`&-placement-top ${t}-arrow`,`&-placement-topLeft ${t}-arrow`,`&-placement-topRight ${t}-arrow`].join(",")]:{bottom:0,transform:"translateY(100%) rotate(180deg)"},[`&-placement-top ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"},[`&-placement-topLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-topRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-bottom ${t}-arrow`,`&-placement-bottomLeft ${t}-arrow`,`&-placement-bottomRight ${t}-arrow`].join(",")]:{top:0,transform:"translateY(-100%)"},[`&-placement-bottom ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"},[`&-placement-bottomLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-bottomRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-left ${t}-arrow`,`&-placement-leftTop ${t}-arrow`,`&-placement-leftBottom ${t}-arrow`].join(",")]:{right:{_skip_check_:!0,value:0},transform:"translateX(100%) rotate(90deg)"},[`&-placement-left ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"},[`&-placement-leftTop ${t}-arrow`]:{top:g},[`&-placement-leftBottom ${t}-arrow`]:{bottom:g},[[`&-placement-right ${t}-arrow`,`&-placement-rightTop ${t}-arrow`,`&-placement-rightBottom ${t}-arrow`].join(",")]:{left:{_skip_check_:!0,value:0},transform:"translateX(-100%) rotate(-90deg)"},[`&-placement-right ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"},[`&-placement-rightTop ${t}-arrow`]:{top:g},[`&-placement-rightBottom ${t}-arrow`]:{bottom:g},[_(["&-placement-topLeft","&-placement-top","&-placement-topRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingBottom:d},[_(["&-placement-bottomLeft","&-placement-bottom","&-placement-bottomRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingTop:d},[_(["&-placement-leftTop","&-placement-left","&-placement-leftBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingRight:{_skip_check_:!0,value:d}},[_(["&-placement-rightTop","&-placement-right","&-placement-rightBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingLeft:{_skip_check_:!0,value:d}}}}}export{X as M,Y as a,B as b,q as g,j as p,L as r};
|
package/src/assets/web-panel/assets/{responsiveObserve-C2ES6P0V.js → responsiveObserve-B4d5HJeN.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as o,h}from"./index-
|
|
1
|
+
import{I as o,h}from"./index-BqCbH37-.js";import{f as x}from"./vendor-M5lGV-wr.js";const b=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{b as r,w as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as n}from"./index-
|
|
1
|
+
import{K as n}from"./index-BqCbH37-.js";import{i as e}from"./motion-Dna0fLLD.js";const m=new n("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),f=new n("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),c=new n("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),l=new n("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),y=new n("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),p=new n("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),O=new n("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),d=new n("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),g={"slide-up":{inKeyframes:m,outKeyframes:f},"slide-down":{inKeyframes:c,outKeyframes:l},"slide-left":{inKeyframes:y,outKeyframes:p},"slide-right":{inKeyframes:O,outKeyframes:d}},K=(t,r)=>{const{antCls:a}=t,i=`${a}-${r}`,{inKeyframes:s,outKeyframes:o}=g[r];return[e(i,s,o,t.motionDurationMid),{[`
|
|
2
2
|
${i}-enter,
|
|
3
3
|
${i}-appear
|
|
4
4
|
`]:{transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:t.motionEaseOutQuint},[`${i}-leave`]:{animationTimingFunction:t.motionEaseInQuint}}]};export{f as a,c as b,m as c,K as i,l as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./index-
|
|
1
|
+
import{i as e}from"./index-BqCbH37-.js";function r(a,s,t){return e({[`${a}-status-success`]:s==="success",[`${a}-status-warning`]:s==="warning",[`${a}-status-error`]:s==="error",[`${a}-status-validating`]:s==="validating",[`${a}-has-feedback`]:t})}const c=(a,s)=>s||a;export{c as a,r as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as d}from"./index-
|
|
1
|
+
import{A as d}from"./index-BqCbH37-.js";const i=()=>d()&&window.document.documentElement,c=e=>{if(d()&&window.document.documentElement){const t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(r=>r in n.style)}return!1},u=(e,t)=>{if(!c(e))return!1;const n=document.createElement("div"),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function s(e,t){return!Array.isArray(e)&&t!==void 0?u(e,t):c(e)}let o;const p=()=>{if(!i())return!1;if(o!==void 0)return o;const e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),o=e.scrollHeight===1,document.body.removeChild(e),o};export{i as c,p as d,s as i};
|
package/src/assets/web-panel/assets/{useFlexGapSupport-B6q6zt9X.js → useFlexGapSupport-C-aUgESq.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as o}from"./styleChecker-
|
|
1
|
+
import{d as o}from"./styleChecker-tL2BFwwe.js";import{o as t,s}from"./vendor-M5lGV-wr.js";const r=(()=>{const e=s(!1);return t(()=>{e.value=o()}),e});export{r as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as d}from"./index-
|
|
1
|
+
import{u as d}from"./index-BqCbH37-.js";import{u as c}from"./useShellMode-CgR0wCYM.js";function u({accept:l=""}={}){return new Promise(a=>{if(typeof document>"u"){a({canceled:!0,path:null,content:null});return}const n=document.createElement("input");n.type="file",l&&(n.accept=l),n.style.display="none",document.body.appendChild(n);let o=!1;const i=()=>{n.parentNode&&n.parentNode.removeChild(n)},r=()=>{if(o)return;o=!0;const e=n.files&&n.files[0];if(!e){i(),a({canceled:!0,path:null,content:null});return}const t=new FileReader;t.onload=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:typeof t.result=="string"?t.result:""})},t.onerror=()=>{i(),a({canceled:!1,path:e.name,size:e.size,content:null,reason:"read_failed"})},t.readAsText(e)};n.addEventListener("change",r),n.click()})}function f(l,{defaultPath:a="download.txt"}={}){if(typeof document>"u")return{canceled:!0,path:null};const n=new Blob([l],{type:"text/plain"}),o=URL.createObjectURL(n),i=document.createElement("a");return i.href=o,i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o),{canceled:!1,path:a}}function p(l){if(!Array.isArray(l))return"";const a=[];for(const n of l)if(Array.isArray(n.extensions))for(const o of n.extensions)a.push(`.${o.replace(/^\./,"")}`);return a.join(",")}function m(){const l=d();async function a(r={}){if(c().isEmbedded){const e=await l.sendRaw({type:"fs.openDialog",title:r.title,filters:r.filters},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDialog failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,content:t.content??null,size:t.size,reason:t.reason}}return u({accept:p(r.filters)})}async function n(r,e={}){if(typeof r!="string")throw new Error("content must be a string");if(c().isEmbedded){const t=await l.sendRaw({type:"fs.saveDialog",title:e.title,defaultPath:e.defaultPath,filters:e.filters,content:r},6e4);if(t&&t.ok===!1)throw new Error(t.error||"fs.saveDialog failed");const s=t?.result??t;return{canceled:!!s.canceled,path:s.path??null}}return f(r,{defaultPath:e.defaultPath})}async function o(r,e={}){const t=JSON.stringify(r,null,2),s={...e,defaultPath:e.defaultPath||"data.json",filters:e.filters||[{name:"JSON",extensions:["json"]}]};return n(t,s)}async function i(r={}){if(!c().isEmbedded)return{canceled:!0,path:null,initialized:!1,unsupported:!0};const e=await l.sendRaw({type:"fs.openDirectory",title:r.title},6e4);if(e&&e.ok===!1)throw new Error(e.error||"fs.openDirectory failed");const t=e?.result??e;return{canceled:!!t.canceled,path:t.path??null,initialized:!!t.initialized}}return{pickFileText:a,saveText:n,saveJson:o,pickDirectory:i}}export{m as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as i,h as a,w as l}from"./index-
|
|
1
|
+
import{M as i,h as a,w as l}from"./index-BqCbH37-.js";import{a5 as o,k as d,C as g,F as f,A as p}from"./vendor-M5lGV-wr.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object"),n}function v(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function N(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>d(r)?!(r.type===g||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,v as b,c,N as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as o}from"./index-
|
|
1
|
+
import{K as o}from"./index-BqCbH37-.js";import{i as f}from"./motion-Dna0fLLD.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
|
|
2
2
|
${t}-enter,
|
|
3
3
|
${t}-appear
|
|
4
4
|
`]:{transform:"scale(0)",opacity:0,animationTimingFunction:n.motionEaseOutCirc,"&-prepare":{transform:"none"}},[`${t}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{h as i,c as z};
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
// Injected by web-ui-server.js at serve time
|
|
9
9
|
window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
|
|
10
10
|
</script>
|
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-BqCbH37-.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-M5lGV-wr.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="./assets/icons-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="./assets/icons-CLQTHa5-.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-CfX1DEtk.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
SESSION_CORE_STREAMING_HANDLERS,
|
|
4
4
|
} from "./session-core-protocol.js";
|
|
5
5
|
import { VIDEO_HANDLERS, VIDEO_STREAMING_HANDLERS } from "./video-protocol.js";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
PERSONAL_DATA_HUB_HANDLERS,
|
|
8
|
+
PERSONAL_DATA_HUB_STREAMING_HANDLERS,
|
|
9
|
+
} from "./personal-data-hub-protocol.js";
|
|
7
10
|
|
|
8
11
|
export function createWsMessageDispatcher(server) {
|
|
9
12
|
return {
|
|
@@ -228,6 +231,37 @@ export function createWsMessageDispatcher(server) {
|
|
|
228
231
|
};
|
|
229
232
|
}
|
|
230
233
|
|
|
234
|
+
// Phase 5.7 — streaming sync routes. Adapter progress events are
|
|
235
|
+
// pushed as `<topic>.event` messages tagged with the request id;
|
|
236
|
+
// the final report comes as `<topic>.end`.
|
|
237
|
+
for (const streamType of Object.keys(
|
|
238
|
+
PERSONAL_DATA_HUB_STREAMING_HANDLERS,
|
|
239
|
+
)) {
|
|
240
|
+
routes[streamType] = async () => {
|
|
241
|
+
const sender = (payload) => server._send(ws, { id, ...payload });
|
|
242
|
+
try {
|
|
243
|
+
const out = await PERSONAL_DATA_HUB_STREAMING_HANDLERS[streamType](
|
|
244
|
+
message,
|
|
245
|
+
sender,
|
|
246
|
+
);
|
|
247
|
+
server._send(ws, {
|
|
248
|
+
id,
|
|
249
|
+
type: `${streamType}.end`,
|
|
250
|
+
...(out && out.result !== undefined
|
|
251
|
+
? { result: out.result }
|
|
252
|
+
: out || {}),
|
|
253
|
+
});
|
|
254
|
+
} catch (err) {
|
|
255
|
+
server._send(ws, {
|
|
256
|
+
id,
|
|
257
|
+
type: "error",
|
|
258
|
+
code: "PERSONAL_DATA_HUB_STREAM_ERROR",
|
|
259
|
+
message: err?.message || String(err),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
231
265
|
// Phase I — Hosted Session API (session-core, memory, beta, usage)
|
|
232
266
|
for (const sessionCoreType of Object.keys(SESSION_CORE_HANDLERS)) {
|
|
233
267
|
routes[sessionCoreType] = async () => {
|
|
@@ -122,12 +122,151 @@ export const PERSONAL_DATA_HUB_HANDLERS = {
|
|
|
122
122
|
|
|
123
123
|
"personal-data-hub.event-detail": async (msg) =>
|
|
124
124
|
withHub((hub) => hub.eventDetail(msg.eventId)),
|
|
125
|
+
|
|
126
|
+
// ─── Phase 6 — Alipay bill import ─────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
"personal-data-hub.register-alipay": async (msg) =>
|
|
129
|
+
withHub(
|
|
130
|
+
async (hub) =>
|
|
131
|
+
await hub.registerAlipayAdapter({
|
|
132
|
+
account: msg.account,
|
|
133
|
+
opts: msg.opts || {},
|
|
134
|
+
}),
|
|
135
|
+
),
|
|
136
|
+
|
|
137
|
+
"personal-data-hub.unregister-alipay": async (msg) =>
|
|
138
|
+
withHub(async (hub) => await hub.unregisterAlipayAdapter(msg.email)),
|
|
139
|
+
|
|
140
|
+
"personal-data-hub.list-alipay-accounts": async () =>
|
|
141
|
+
withHub((hub) => hub.listAlipayAccounts()),
|
|
142
|
+
|
|
143
|
+
"personal-data-hub.import-alipay-bill": async (msg) =>
|
|
144
|
+
withHub(
|
|
145
|
+
async (hub) =>
|
|
146
|
+
await hub.importAlipayBill({
|
|
147
|
+
zipPath: msg.zipPath,
|
|
148
|
+
csvPath: msg.csvPath,
|
|
149
|
+
zipPassword: msg.zipPassword,
|
|
150
|
+
}),
|
|
151
|
+
),
|
|
152
|
+
|
|
153
|
+
// ─── Phase 8 — EntityResolver review / merge / unmerge ───────────────
|
|
154
|
+
|
|
155
|
+
"personal-data-hub.review-queue-list": async (msg) =>
|
|
156
|
+
withHub((hub) => hub.vault.listReviewQueue({ limit: msg.limit || 50 })),
|
|
157
|
+
|
|
158
|
+
"personal-data-hub.review-decision": async (msg) =>
|
|
159
|
+
withHub((hub) => {
|
|
160
|
+
if (!hub.entityResolver) throw new Error("EntityResolver not wired");
|
|
161
|
+
return hub.entityResolver.applyUserDecision({
|
|
162
|
+
reviewId: msg.reviewId,
|
|
163
|
+
decision: msg.decision,
|
|
164
|
+
});
|
|
165
|
+
}),
|
|
166
|
+
|
|
167
|
+
"personal-data-hub.manual-merge": async (msg) =>
|
|
168
|
+
withHub((hub) => {
|
|
169
|
+
if (!hub.entityResolver) throw new Error("EntityResolver not wired");
|
|
170
|
+
return hub.entityResolver.manualMerge({ aId: msg.aId, bId: msg.bId });
|
|
171
|
+
}),
|
|
172
|
+
|
|
173
|
+
"personal-data-hub.manual-unmerge": async (msg) =>
|
|
174
|
+
withHub((hub) => {
|
|
175
|
+
if (!hub.entityResolver) throw new Error("EntityResolver not wired");
|
|
176
|
+
return hub.entityResolver.manualUnmerge(msg.personId);
|
|
177
|
+
}),
|
|
178
|
+
|
|
179
|
+
"personal-data-hub.resolver-drain": async (msg) =>
|
|
180
|
+
withHub(async (hub) => {
|
|
181
|
+
if (!hub.entityResolver) throw new Error("EntityResolver not wired");
|
|
182
|
+
return await hub.entityResolver.drain({ limit: msg.limit || 50 });
|
|
183
|
+
}),
|
|
184
|
+
|
|
185
|
+
"personal-data-hub.resolver-stats": async () =>
|
|
186
|
+
withHub((hub) => ({
|
|
187
|
+
queue: hub.vault.resolveQueueStats(),
|
|
188
|
+
mergeGroups: hub.vault.stats().mergeGroups,
|
|
189
|
+
reviewQueue:
|
|
190
|
+
hub.vault.listReviewQueue({ limit: 1 }).length > 0
|
|
191
|
+
? hub.vault.listReviewQueue({ limit: 1000 }).length
|
|
192
|
+
: 0,
|
|
193
|
+
})),
|
|
194
|
+
|
|
195
|
+
"personal-data-hub.merge-group-members": async (msg) =>
|
|
196
|
+
withHub((hub) => hub.vault.getMergeGroupMembers(msg.personId)),
|
|
197
|
+
|
|
198
|
+
// ─── Phase 11 — internal analysis skills ─────────────────────────────
|
|
199
|
+
|
|
200
|
+
"personal-data-hub.skills-list": async () =>
|
|
201
|
+
withHub((hub) => hub.analysisSkillNames || []),
|
|
202
|
+
|
|
203
|
+
"personal-data-hub.run-skill": async (msg) =>
|
|
204
|
+
withHub(async (hub) => await hub.runSkill(msg.name, msg.options || {})),
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Phase 5.7 — streaming handlers. Same call pattern as session-core
|
|
209
|
+
* streaming: handler receives `sender(payload)` to push intermediate
|
|
210
|
+
* `{ type: "personal-data-hub.<topic>.event", ... }` messages while
|
|
211
|
+
* sync is in flight, then the dispatcher wraps the final return with
|
|
212
|
+
* `.end`. Adapter progress phases (connecting / fetching / done / error)
|
|
213
|
+
* surface here; UI subscribes via the composable.
|
|
214
|
+
*/
|
|
215
|
+
export const PERSONAL_DATA_HUB_STREAMING_HANDLERS = {
|
|
216
|
+
"personal-data-hub.sync-adapter-stream": async (msg, sender) => {
|
|
217
|
+
const hub = await getHub();
|
|
218
|
+
const original = hub.registry.onSyncEvent;
|
|
219
|
+
hub.registry.onSyncEvent = (evt) => {
|
|
220
|
+
try {
|
|
221
|
+
sender({
|
|
222
|
+
type: "personal-data-hub.sync-adapter-stream.event",
|
|
223
|
+
event: evt,
|
|
224
|
+
});
|
|
225
|
+
} catch (_e) {}
|
|
226
|
+
if (typeof original === "function") {
|
|
227
|
+
try {
|
|
228
|
+
original(evt);
|
|
229
|
+
} catch (_e) {}
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
try {
|
|
233
|
+
const report = await hub.registry.syncAdapter(
|
|
234
|
+
msg.name,
|
|
235
|
+
msg.options || {},
|
|
236
|
+
);
|
|
237
|
+
return { result: report };
|
|
238
|
+
} finally {
|
|
239
|
+
hub.registry.onSyncEvent = original;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
"personal-data-hub.sync-all-stream": async (msg, sender) => {
|
|
244
|
+
const hub = await getHub();
|
|
245
|
+
const original = hub.registry.onSyncEvent;
|
|
246
|
+
hub.registry.onSyncEvent = (evt) => {
|
|
247
|
+
try {
|
|
248
|
+
sender({ type: "personal-data-hub.sync-all-stream.event", event: evt });
|
|
249
|
+
} catch (_e) {}
|
|
250
|
+
if (typeof original === "function") {
|
|
251
|
+
try {
|
|
252
|
+
original(evt);
|
|
253
|
+
} catch (_e) {}
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
try {
|
|
257
|
+
const reports = await hub.registry.syncAll(msg.options || {});
|
|
258
|
+
return { result: reports };
|
|
259
|
+
} finally {
|
|
260
|
+
hub.registry.onSyncEvent = original;
|
|
261
|
+
}
|
|
262
|
+
},
|
|
125
263
|
};
|
|
126
264
|
|
|
127
265
|
/**
|
|
128
266
|
* Topic names this protocol owns — exported so the dispatcher can list /
|
|
129
267
|
* advertise them to clients via a capabilities probe.
|
|
130
268
|
*/
|
|
131
|
-
export const PERSONAL_DATA_HUB_TOPICS = Object.freeze(
|
|
132
|
-
Object.keys(PERSONAL_DATA_HUB_HANDLERS),
|
|
133
|
-
)
|
|
269
|
+
export const PERSONAL_DATA_HUB_TOPICS = Object.freeze([
|
|
270
|
+
...Object.keys(PERSONAL_DATA_HUB_HANDLERS),
|
|
271
|
+
...Object.keys(PERSONAL_DATA_HUB_STREAMING_HANDLERS),
|
|
272
|
+
]);
|
|
@@ -41,6 +41,12 @@ const {
|
|
|
41
41
|
FileKeyProvider,
|
|
42
42
|
generateKeyHex,
|
|
43
43
|
EmailAdapter,
|
|
44
|
+
AlipayBillAdapter,
|
|
45
|
+
EntityResolver,
|
|
46
|
+
EntityResolverEmbeddingStage,
|
|
47
|
+
EntityResolverLLMStage,
|
|
48
|
+
runAnalysisSkill,
|
|
49
|
+
ANALYSIS_SKILL_NAMES,
|
|
44
50
|
} = hub;
|
|
45
51
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
46
52
|
import { getElectronUserDataDir } from "./paths.js";
|
|
@@ -125,10 +131,31 @@ async function initHub() {
|
|
|
125
131
|
ragSink = new CcRagSink({ bm25: _bm25 });
|
|
126
132
|
}
|
|
127
133
|
|
|
134
|
+
// Phase 8 — EntityResolver pipeline
|
|
135
|
+
const entityResolver = new EntityResolver({ vault });
|
|
136
|
+
try {
|
|
137
|
+
if (llm) {
|
|
138
|
+
const llmStage = new EntityResolverLLMStage({
|
|
139
|
+
llm,
|
|
140
|
+
acceptNonLocal: false,
|
|
141
|
+
});
|
|
142
|
+
entityResolver._llmStage = llmStage.asStageFn();
|
|
143
|
+
}
|
|
144
|
+
const embeddingStage = new EntityResolverEmbeddingStage({
|
|
145
|
+
ollamaUrl: process.env.CC_HUB_OLLAMA_URL || "http://localhost:11434",
|
|
146
|
+
model: process.env.CC_HUB_OLLAMA_EMBED_MODEL || "nomic-embed-text",
|
|
147
|
+
vault,
|
|
148
|
+
});
|
|
149
|
+
entityResolver._embeddingStage = embeddingStage.asStageFn();
|
|
150
|
+
} catch (_err) {
|
|
151
|
+
// Fall back to rule-only — registry still works
|
|
152
|
+
}
|
|
153
|
+
|
|
128
154
|
const registry = new AdapterRegistry({
|
|
129
155
|
vault,
|
|
130
156
|
kgSink: kgSink ? kgSink.write.bind(kgSink) : null,
|
|
131
157
|
ragSink: ragSink ? ragSink.write.bind(ragSink) : null,
|
|
158
|
+
entityResolver,
|
|
132
159
|
});
|
|
133
160
|
|
|
134
161
|
const engine = new AnalysisEngine({
|
|
@@ -169,6 +196,21 @@ async function initHub() {
|
|
|
169
196
|
}
|
|
170
197
|
}
|
|
171
198
|
|
|
199
|
+
// Phase 6: auto-register persisted Alipay accounts.
|
|
200
|
+
const alipayAccountsPath = join(hubDir, "alipay-accounts.json");
|
|
201
|
+
const alipayAccounts = loadAlipayAccounts(alipayAccountsPath);
|
|
202
|
+
for (const cfg of alipayAccounts) {
|
|
203
|
+
try {
|
|
204
|
+
const adapter = new AlipayBillAdapter({
|
|
205
|
+
account: cfg.account,
|
|
206
|
+
...(cfg.opts || {}),
|
|
207
|
+
});
|
|
208
|
+
if (!registry.has(adapter.name)) registry.register(adapter);
|
|
209
|
+
} catch (_err) {
|
|
210
|
+
// Continue boot even if one config is corrupt
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
172
214
|
return {
|
|
173
215
|
vault,
|
|
174
216
|
registry,
|
|
@@ -179,6 +221,12 @@ async function initHub() {
|
|
|
179
221
|
hubDir,
|
|
180
222
|
keyProvider,
|
|
181
223
|
emailAccountsPath,
|
|
224
|
+
alipayAccountsPath,
|
|
225
|
+
entityResolver,
|
|
226
|
+
analysisSkillNames: ANALYSIS_SKILL_NAMES,
|
|
227
|
+
async runSkill(name, options = {}) {
|
|
228
|
+
return await runAnalysisSkill({ vault, llm }, name, options);
|
|
229
|
+
},
|
|
182
230
|
bm25: _bm25,
|
|
183
231
|
registerMockAdapter(opts = {}) {
|
|
184
232
|
if (registry.has(opts.name || "mock"))
|
|
@@ -257,6 +305,59 @@ async function initHub() {
|
|
|
257
305
|
: null,
|
|
258
306
|
};
|
|
259
307
|
},
|
|
308
|
+
|
|
309
|
+
// ─── Phase 6 — Alipay bill import ──────────────────────────────────
|
|
310
|
+
|
|
311
|
+
async registerAlipayAdapter({ account, opts = {} } = {}) {
|
|
312
|
+
if (!account || typeof account !== "object")
|
|
313
|
+
throw new Error("account required");
|
|
314
|
+
const adapter = new AlipayBillAdapter({ account, ...opts });
|
|
315
|
+
if (registry.has(adapter.name)) registry.unregister(adapter.name);
|
|
316
|
+
registry.register(adapter);
|
|
317
|
+
const accounts = loadAlipayAccounts(alipayAccountsPath);
|
|
318
|
+
const next = accounts.filter((c) => c.account.email !== account.email);
|
|
319
|
+
next.push({ account, opts, registeredAt: Date.now() });
|
|
320
|
+
saveAlipayAccounts(alipayAccountsPath, next);
|
|
321
|
+
return {
|
|
322
|
+
name: adapter.name,
|
|
323
|
+
version: adapter.version,
|
|
324
|
+
capabilities: adapter.capabilities,
|
|
325
|
+
sensitivity: adapter.dataDisclosure.sensitivity,
|
|
326
|
+
};
|
|
327
|
+
},
|
|
328
|
+
|
|
329
|
+
async unregisterAlipayAdapter(email) {
|
|
330
|
+
const accounts = loadAlipayAccounts(alipayAccountsPath);
|
|
331
|
+
const target = accounts.find((c) => c.account.email === email);
|
|
332
|
+
const next = accounts.filter((c) => c.account.email !== email);
|
|
333
|
+
saveAlipayAccounts(alipayAccountsPath, next);
|
|
334
|
+
if (target) registry.unregister("alipay-bill");
|
|
335
|
+
return { ok: true, removed: !!target };
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
listAlipayAccounts() {
|
|
339
|
+
return loadAlipayAccounts(alipayAccountsPath).map((c) => ({
|
|
340
|
+
email: c.account.email,
|
|
341
|
+
hasZipPassword: !!(
|
|
342
|
+
c.account.zipPassword ||
|
|
343
|
+
(c.opts && c.opts.zipPassword)
|
|
344
|
+
),
|
|
345
|
+
registeredAt: c.registeredAt || null,
|
|
346
|
+
}));
|
|
347
|
+
},
|
|
348
|
+
|
|
349
|
+
async importAlipayBill({ zipPath, csvPath, zipPassword } = {}) {
|
|
350
|
+
const adapter = registry.get("alipay-bill");
|
|
351
|
+
if (!adapter)
|
|
352
|
+
throw new Error(
|
|
353
|
+
"No Alipay adapter registered — call registerAlipayAdapter first",
|
|
354
|
+
);
|
|
355
|
+
return await registry.syncAdapter("alipay-bill", {
|
|
356
|
+
zipPath,
|
|
357
|
+
csvPath,
|
|
358
|
+
zipPassword,
|
|
359
|
+
});
|
|
360
|
+
},
|
|
260
361
|
};
|
|
261
362
|
}
|
|
262
363
|
|
|
@@ -280,6 +381,26 @@ function saveEmailAccounts(filePath, accounts) {
|
|
|
280
381
|
});
|
|
281
382
|
}
|
|
282
383
|
|
|
384
|
+
// ─── Alipay account persistence (Phase 6) ───────────────────────────────
|
|
385
|
+
|
|
386
|
+
function loadAlipayAccounts(filePath) {
|
|
387
|
+
try {
|
|
388
|
+
if (!existsSync(filePath)) return [];
|
|
389
|
+
const raw = readFileSync(filePath, "utf-8");
|
|
390
|
+
const parsed = JSON.parse(raw);
|
|
391
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
392
|
+
} catch (_err) {
|
|
393
|
+
return [];
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
function saveAlipayAccounts(filePath, accounts) {
|
|
398
|
+
writeFileSync(filePath, JSON.stringify(accounts, null, 2), {
|
|
399
|
+
encoding: "utf-8",
|
|
400
|
+
mode: 0o600,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
|
|
283
404
|
export async function getHub() {
|
|
284
405
|
if (_hub) return _hub;
|
|
285
406
|
if (!_initPromise) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as Oe,M as f,R as k,c as a,N as t,K as p,r as h,a as ne,L as r,O as s,u as S,P as i,S as c,a0 as ze,a1 as qe,Q as _,F as O,Y as se,Z as He,f as Ie}from"./vendor-M5lGV-wr.js";import{u as Ue,_ as Fe,d as M}from"./index-B_juAGfN.js";import{R as Ne,O as Re,ak as Ve,h as Ge,aB as Qe,m as Te,e as Be}from"./icons-BFHq5fEF.js";function Ke(P){if(!P)return P;if(P.error)throw new Error(P.error);return P.result!==void 0?P.result:P}function je(){const P=Ue(),g=(u,v={},x=3e4)=>P.sendRaw({type:u,...v},x).then(Ke);return{async health(){return await g("personal-data-hub.health",{},8e3)},async stats(){return await g("personal-data-hub.stats",{},8e3)},async listAdapters(){return await g("personal-data-hub.list-adapters",{},5e3)},async syncAdapter(u,v={}){return await g("personal-data-hub.sync-adapter",{name:u,options:v},12e4)},async syncAll(u={}){return await g("personal-data-hub.sync-all",{options:u},6e5)},async registerMock({name:u="mock",count:v=20,seed:x=1}={}){return await g("personal-data-hub.register-mock",{name:u,count:v,seed:x})},async unregister(u){return await g("personal-data-hub.unregister",{name:u})},async ask(u,v={}){return await g("personal-data-hub.ask",{question:u,options:v},18e4)},async queryEvents(u={}){return await g("personal-data-hub.query-events",u,1e4)},async recentAudit(u={}){return await g("personal-data-hub.recent-audit",u,1e4)},async testEmailAuth(u){return await g("personal-data-hub.test-email-auth",{account:u},3e4)},async registerEmail(u,v={}){return await g("personal-data-hub.register-email",{account:u,opts:v},15e3)},async unregisterEmail(u){return await g("personal-data-hub.unregister-email",{email:u},5e3)},async listEmailAccounts(){return await g("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(u){return await g("personal-data-hub.event-detail",{eventId:u},5e3)}}}const Je={class:"pdh-page"},We={class:"pdh-header"},Ye={class:"kv"},Ze={key:0,class:"kv"},Xe={key:1,class:"kv"},et={class:"kv"},tt={key:0,class:"kv hint"},at={style:{"margin-top":"12px",display:"flex","justify-content":"space-between","align-items":"center"}},lt={key:0,style:{"margin-top":"12px"}},nt={key:1,style:{"margin-top":"12px"}},st={class:"answer"},ot={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-color-secondary, #888)"}},it={key:2,style:{"margin-top":"8px"}},rt={key:2,style:{"margin-top":"12px"}},ut={key:2,style:{"margin-top":"8px"}},dt={key:1},pt={style:{"margin-left":"8px"}},ct={key:3,class:"json-pre"},vt={style:{"margin-left":"6px"}},mt={key:0,style:{"margin-left":"6px"}},ft={key:0,class:"hint",style:{"margin-top":"4px"}},yt={key:1,style:{"font-size":"11px"}},kt={__name:"PersonalDataHub",setup(P,{expose:g}){const u=je(),v=h(null),x=h(null),V=h([]),I=h(""),b=h(null),G=h(""),K=h(!1),j=h(!1),Z=h([]),D=h(null),U=h(!1),o=ne({provider:"qq",email:"",authCode:"",host:"",port:993,pdfPasswordHints:{idCardLast6:"",phoneLast6:"",cardLast6:""}}),C=h(null),J=h(!1),d=h(null),m=ne({refresh:!1,ask:!1,addMock:!1,syncAll:!1,sync:{},audit:!1,testEmail:!1,saveEmail:!1,eventDetail:!1}),oe=[{title:"名称",dataIndex:"name",key:"name",width:140},{title:"版本",dataIndex:"version",key:"version",width:80},{title:"能力",key:"capabilities"},{title:"敏感度",key:"sensitivity",width:140},{title:"操作",key:"actions",width:160,align:"right"}],ie=[{title:"时间",key:"at",dataIndex:"at",width:170},{title:"动作",dataIndex:"action",key:"action",width:200},{title:"详情",key:"details"}],re=[{title:"日期",key:"occurredAt",width:100},{title:"描述",dataIndex:"description",key:"description"},{title:"金额",key:"amount",width:140,align:"right"}];function ue(n){return n==="high"?"red":n==="medium"?"orange":"default"}function de(n){if(!n)return"";const e=n.entityCounts||{};return`events=${e.events??0} persons=${e.persons??0} | raw=${n.rawCount??0} invalid=${n.invalidCount??0} | KG triples=${n.kgTripleCount??0} RAG docs=${n.ragDocCount??0} | ${n.durationMs??0}ms`}async function $(){m.refresh=!0;try{v.value=await u.health(),x.value=await u.stats(),V.value=await u.listAdapters()}catch(n){M.error("刷新失败: "+n.message)}finally{m.refresh=!1}}async function X(){if(I.value.trim()){m.ask=!0,G.value="",b.value=null;try{b.value=await u.ask(I.value.trim(),{acceptNonLocal:K.value})}catch(n){G.value=n.message}finally{m.ask=!1}}}async function pe(){m.addMock=!0;try{await u.registerMock({count:30,seed:Date.now()%1e3}),await $(),M.success("MockAdapter 已注册(30 条 mock 数据 ready 同步)")}catch(n){M.error("注册失败: "+n.message)}finally{m.addMock=!1}}async function ce(n){m.sync[n]=!0;try{D.value=await u.syncAdapter(n),await $()}catch(e){M.error(`同步 ${n} 失败: ${e.message}`)}finally{m.sync[n]=!1}}async function ve(){m.syncAll=!0;try{const n=await u.syncAll();D.value=n?.[n.length-1]||null,await $(),M.success(`已同步 ${n?.length||0} 个 adapter`)}catch(n){M.error("同步失败: "+n.message)}finally{m.syncAll=!1}}async function me(n){try{await u.unregister(n),await $()}catch(e){M.error("移除失败: "+e.message)}}async function fe(n){if(n){m.audit=!0;try{Z.value=await u.recentAudit({limit:200})}catch(e){M.error("审计日志加载失败: "+e.message)}finally{m.audit=!1}}}const Q=Ie(()=>!(!o.email||!o.email.includes("@")||!o.authCode||o.authCode.length<4||o.provider==="custom"&&!o.host));function ye(n){return{qq:"QQ: 邮箱 → 设置 → 账户 → IMAP/SMTP → 开启 → 生成授权码",163:"163: 邮箱 → 设置 → POP3/SMTP/IMAP → 开启 IMAP/SMTP 服务 → 授权密码",189:"189: 设置 → 第三方客户端授权码",outlook:"Outlook: account.microsoft.com/security → App password",gmail:"Gmail: myaccount.google.com/apppasswords (需开启 2FA)",custom:"联系你的邮箱管理员获取 IMAP 端点 + app-password"}[n]||"请输入服务商授权码(不是登录密码)"}function ee(){o.provider="qq",o.email="",o.authCode="",o.host="",o.port=993,o.pdfPasswordHints={idCardLast6:"",phoneLast6:"",cardLast6:""},C.value=null}function te(){const n={provider:o.provider,email:o.email.trim(),authCode:o.authCode};return o.provider==="custom"&&(n.host=o.host.trim(),n.port=o.port||993,n.secure=!0),n}function ke(){const n={};for(const e of Object.keys(o.pdfPasswordHints)){const w=o.pdfPasswordHints[e];typeof w=="string"&&w.trim().length>0&&(n[e]=w.trim())}return Object.keys(n).length>0?n:null}async function ge(){if(Q.value){m.testEmail=!0,C.value=null;try{C.value=await u.testEmailAuth(te())}catch(n){C.value={ok:!1,error:n.message}}finally{m.testEmail=!1}}}async function _e(){if(!(!Q.value||!C.value?.ok)){m.saveEmail=!0;try{const n={},e=ke();e&&(n.pdfPasswordHints=e),await u.registerEmail(te(),n),M.success("邮箱账号已注册"),U.value=!1,ee(),await $()}catch(n){M.error("保存失败: "+n.message)}finally{m.saveEmail=!1}}}async function ae(n){if(n){m.eventDetail=!0,J.value=!0;try{d.value=await u.eventDetail(n)}catch(e){d.value=null,M.error("事件详情加载失败: "+e.message)}finally{m.eventDetail=!1}}}return g({showEventDetail:ae}),Oe($),(n,e)=>{const w=p("a-button"),L=p("a-space"),A=p("a-tag"),z=p("a-card"),T=p("a-col"),we=p("a-row"),he=p("a-textarea"),be=p("a-checkbox"),q=p("a-alert"),xe=p("a-popconfirm"),W=p("a-table"),le=p("a-empty"),H=p("a-select-option"),Ce=p("a-select"),E=p("a-form-item"),F=p("a-input"),Ae=p("a-tooltip"),Me=p("a-input-password"),Pe=p("a-input-number"),N=p("a-divider"),Le=p("a-form"),Y=p("a-drawer"),R=p("a-descriptions-item"),Ee=p("a-descriptions"),De=p("a-list-item-meta"),$e=p("a-list-item"),Se=p("a-list");return r(),f("div",Je,[k("div",We,[e[18]||(e[18]=k("div",null,[k("h2",{class:"page-title"},"个人数据中台"),k("p",{class:"page-sub"}," 让数据回归个人 — 各 app 数据本地加密落盘,本地 LLM 跨源分析,零云端外传。 ")],-1)),a(L,null,{default:t(()=>[a(w,{loading:m.refresh,onClick:$},{icon:t(()=>[a(S(Ne))]),default:t(()=>[e[16]||(e[16]=s(" 刷新 ",-1))]),_:1},8,["loading"]),a(w,{type:"primary",ghost:"",onClick:e[0]||(e[0]=l=>j.value=!0)},{icon:t(()=>[a(S(Re))]),default:t(()=>[e[17]||(e[17]=s(" 审计日志 ",-1))]),_:1})]),_:1})]),a(we,{gutter:16,style:{"margin-bottom":"16px"}},{default:t(()=>[a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"Vault"},{extra:t(()=>[a(A,{color:v.value?.vault?.ok?"green":"red"},{default:t(()=>[s(i(v.value?.vault?.ok?"正常":"未就绪"),1)]),_:1},8,["color"])]),default:t(()=>[k("div",Ye,"schema v"+i(v.value?.vault?.schemaVersion??"?"),1),x.value?.vault?(r(),f("div",Ze," 事件 "+i(x.value.vault.events)+" · 联系人 "+i(x.value.vault.persons),1)):c("",!0),x.value?.vault?(r(),f("div",Xe," 地点 "+i(x.value.vault.places)+" · 商品 "+i(x.value.vault.items)+" · 主题 "+i(x.value.vault.topics),1)):c("",!0)]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"本地 LLM"},{extra:t(()=>[a(A,{color:v.value?.llm?.ok?v.value.llm.isLocal?"green":"orange":"red"},{default:t(()=>[s(i(v.value?.llm?.ok?v.value.llm.isLocal?"本地":"非本地":"未就绪"),1)]),_:1},8,["color"])]),default:t(()=>[k("div",et,i(v.value?.llm?.name||"—"),1),v.value?.llm?.ok&&!v.value.llm.isLocal?(r(),f("div",tt," ⚠️ 非本地 — ask 会被隐私 gate 拒绝,除非显式 acceptNonLocal ")):c("",!0)]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"KG 索引"},{extra:t(()=>[a(A,{color:v.value?.kgSink?.ok?"green":"default"},{default:t(()=>[s(i(v.value?.kgSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:t(()=>[e[19]||(e[19]=k("div",{class:"kv"},"events / persons → cc knowledge-graph 实体 + 关系",-1))]),_:1})]),_:1}),a(T,{xs:24,sm:12,md:6},{default:t(()=>[a(z,{size:"small",title:"RAG 索引"},{extra:t(()=>[a(A,{color:v.value?.ragSink?.ok?"green":"default"},{default:t(()=>[s(i(v.value?.ragSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:t(()=>[e[20]||(e[20]=k("div",{class:"kv"},"文本 → BM25(vector 留待后续 phase)",-1))]),_:1})]),_:1})]),_:1}),a(z,{style:{"margin-bottom":"16px"}},{title:t(()=>[a(L,null,{default:t(()=>[a(S(Ge)),e[21]||(e[21]=k("span",null,"问我数据",-1))]),_:1})]),default:t(()=>[a(he,{value:I.value,"onUpdate:value":e[1]||(e[1]=l=>I.value=l),rows:2,placeholder:"例:上个月在淘宝总共花了多少?/我妈生日那周买了啥送哪儿?",onKeydown:ze(qe(X,["exact","prevent"]),["enter"])},null,8,["value","onKeydown"]),k("div",at,[a(be,{checked:K.value,"onUpdate:checked":e[2]||(e[2]=l=>K.value=l)},{default:t(()=>[...e[22]||(e[22]=[s("允许非本地 LLM (volcengine / anthropic 等)",-1)])]),_:1},8,["checked"]),a(w,{type:"primary",loading:m.ask,disabled:!I.value.trim(),onClick:X},{icon:t(()=>[a(S(Ve))]),default:t(()=>[e[23]||(e[23]=s(" 提问 ",-1))]),_:1},8,["loading","disabled"])]),G.value?(r(),f("div",lt,[a(q,{type:"error","show-icon":"",message:G.value},null,8,["message"])])):c("",!0),b.value?(r(),f("div",nt,[b.value.warning==="no-facts"?(r(),_(q,{key:0,type:"warning","show-icon":"",message:"vault 里没找到匹配的事件('no-facts')—— 先同步几个 adapter 让数据进 vault",style:{"margin-bottom":"12px"}})):b.value.warning==="hallucinated-citations"?(r(),_(q,{key:1,type:"warning","show-icon":"",message:`LLM 引用了 ${b.value.hallucinatedCitations?.length||0} 个不存在的 event id —— 模型在编造`,style:{"margin-bottom":"12px"}},null,8,["message"])):c("",!0),k("div",st,i(b.value.answer),1),k("div",ot," 引用 "+i(b.value.citations?.length||0)+" 条事实 · "+i(b.value.facts?.length||0)+" facts 入 prompt · "+i(b.value.durationMs)+"ms · "+i(b.value.model),1),b.value.citations?.length?(r(),f("div",it,[e[24]||(e[24]=k("span",{style:{"font-size":"12px",color:"var(--text-color-secondary, #888)"}},"事件链接(点击查看明细 / PDF 解密结果):",-1)),a(L,{style:{"margin-top":"4px"},wrap:""},{default:t(()=>[(r(!0),f(O,null,se(b.value.citations,l=>(r(),_(A,{key:l,color:"blue",style:{cursor:"pointer"},onClick:y=>ae(l)},{default:t(()=>[s(i(l),1)]),_:2},1032,["onClick"]))),128))]),_:1})])):c("",!0)])):c("",!0)]),_:1}),a(z,{style:{"margin-bottom":"16px"}},{title:t(()=>[a(L,null,{default:t(()=>[a(S(Te)),e[25]||(e[25]=k("span",null,"Adapters",-1))]),_:1})]),extra:t(()=>[a(L,null,{default:t(()=>[a(w,{onClick:e[3]||(e[3]=l=>U.value=!0)},{icon:t(()=>[a(S(Qe))]),default:t(()=>[e[26]||(e[26]=s(" 添加邮箱账号 ",-1))]),_:1}),a(w,{onClick:pe,loading:m.addMock},{default:t(()=>[...e[27]||(e[27]=[s(" 注册 MockAdapter(开发) ",-1)])]),_:1},8,["loading"]),a(w,{type:"primary",onClick:ve,loading:m.syncAll,disabled:!V.value.length},{default:t(()=>[...e[28]||(e[28]=[s(" 同步全部 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[V.value.length?(r(),_(W,{key:0,columns:oe,"data-source":V.value,pagination:!1,"row-key":l=>l.name,size:"middle"},{bodyCell:t(({column:l,record:y})=>[l.key==="sensitivity"?(r(),f(O,{key:0},[a(A,{color:ue(y.sensitivity)},{default:t(()=>[s(i(y.sensitivity),1)]),_:2},1032,["color"]),y.legalGate?(r(),_(A,{key:0,color:"red",style:{"margin-left":"4px"}},{default:t(()=>[...e[29]||(e[29]=[s("需法律确认",-1)])]),_:1})):c("",!0)],64)):l.key==="capabilities"?(r(!0),f(O,{key:1},se(y.capabilities,B=>(r(),_(A,{key:B,style:{"margin-right":"4px"}},{default:t(()=>[s(i(B),1)]),_:2},1024))),128)):l.key==="actions"?(r(),_(L,{key:2},{default:t(()=>[a(w,{size:"small",loading:m.sync[y.name],onClick:B=>ce(y.name)},{default:t(()=>[...e[30]||(e[30]=[s(" 同步 ",-1)])]),_:1},8,["loading","onClick"]),a(xe,{title:`从注册表移除 ${y.name}?(vault 数据不会删除)`,onConfirm:B=>me(y.name)},{default:t(()=>[a(w,{size:"small",danger:""},{default:t(()=>[...e[31]||(e[31]=[s("移除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):c("",!0)]),_:1},8,["data-source","row-key"])):(r(),_(le,{key:1,description:"无已注册 adapter — 点上方按钮注册 MockAdapter 看效果"})),D.value?(r(),f("div",rt,[a(q,{type:D.value.status==="ok"?"success":"error","show-icon":"",message:`同步 ${D.value.adapter}: ${D.value.status}`,description:de(D.value)},null,8,["type","message","description"])])):c("",!0)]),_:1}),a(Y,{open:U.value,"onUpdate:open":e[13]||(e[13]=l=>U.value=l),title:"添加邮箱账号",placement:"right",width:"560","destroy-on-close":!0,onClose:ee},{footer:t(()=>[a(L,null,{default:t(()=>[a(w,{onClick:e[12]||(e[12]=l=>U.value=!1)},{default:t(()=>[...e[41]||(e[41]=[s("取消",-1)])]),_:1}),a(w,{loading:m.testEmail,disabled:!Q.value,onClick:ge},{default:t(()=>[...e[42]||(e[42]=[s(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),a(w,{type:"primary",loading:m.saveEmail,disabled:!Q.value||!C.value?.ok,onClick:_e},{default:t(()=>[...e[43]||(e[43]=[s(" 保存并注册 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[a(q,{message:"数据回归个人 — 凭证落本地加密文件(与 vault 主密钥同目录),同步动作 100% 本地。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),a(Le,{layout:"vertical",model:o},{default:t(()=>[a(E,{label:"邮箱服务商",required:""},{default:t(()=>[a(Ce,{value:o.provider,"onUpdate:value":e[4]||(e[4]=l=>o.provider=l),placeholder:"选择服务商"},{default:t(()=>[a(H,{value:"qq"},{default:t(()=>[...e[32]||(e[32]=[s("QQ 邮箱 (imap.qq.com)",-1)])]),_:1}),a(H,{value:"163"},{default:t(()=>[...e[33]||(e[33]=[s("网易邮箱 163/126",-1)])]),_:1}),a(H,{value:"189"},{default:t(()=>[...e[34]||(e[34]=[s("189 邮箱",-1)])]),_:1}),a(H,{value:"outlook"},{default:t(()=>[...e[35]||(e[35]=[s("Outlook / Hotmail",-1)])]),_:1}),a(H,{value:"gmail"},{default:t(()=>[...e[36]||(e[36]=[s("Gmail",-1)])]),_:1}),a(H,{value:"custom"},{default:t(()=>[...e[37]||(e[37]=[s("自定义 IMAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(E,{label:"邮箱地址",required:""},{default:t(()=>[a(F,{value:o.email,"onUpdate:value":e[5]||(e[5]=l=>o.email=l),placeholder:"you@qq.com",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{required:""},{label:t(()=>[a(L,null,{default:t(()=>[e[38]||(e[38]=k("span",null,"授权码(非登录密码)",-1)),a(Ae,{title:ye(o.provider)},{default:t(()=>[a(S(Be),{style:{color:"#888"}})]),_:1},8,["title"])]),_:1})]),default:t(()=>[a(Me,{value:o.authCode,"onUpdate:value":e[6]||(e[6]=l=>o.authCode=l),placeholder:"例:QQ 邮箱 设置 → 账户 → 开启 IMAP/SMTP → 生成的授权码",autocomplete:"off"},null,8,["value"])]),_:1}),o.provider==="custom"?(r(),_(E,{key:0,label:"IMAP host"},{default:t(()=>[a(F,{value:o.host,"onUpdate:value":e[7]||(e[7]=l=>o.host=l),placeholder:"mail.example.com"},null,8,["value"])]),_:1})):c("",!0),o.provider==="custom"?(r(),_(E,{key:1,label:"端口"},{default:t(()=>[a(Pe,{value:o.port,"onUpdate:value":e[8]||(e[8]=l=>o.port=l),min:1,max:65535,"default-value":993},null,8,["value"])]),_:1})):c("",!0),a(N,{orientation:"left",plain:""},{default:t(()=>[...e[39]||(e[39]=[s("PDF 账单解密提示(可选)",-1)])]),_:1}),e[40]||(e[40]=k("p",{class:"hint"},"银行 PDF 月结大多加密;提供几个常用候选项让 Phase 5.5 自动解锁:",-1)),a(E,{label:"身份证后 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.idCardLast6,"onUpdate:value":e[9]||(e[9]=l=>o.pdfPasswordHints.idCardLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{label:"手机后 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.phoneLast6,"onUpdate:value":e[10]||(e[10]=l=>o.pdfPasswordHints.phoneLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(E,{label:"信用卡尾 6 位"},{default:t(()=>[a(F,{value:o.pdfPasswordHints.cardLast6,"onUpdate:value":e[11]||(e[11]=l=>o.pdfPasswordHints.cardLast6=l),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),C.value?(r(),f("div",ut,[a(q,{type:C.value.ok?"success":"error","show-icon":"",message:C.value.ok?"凭证有效 — 可以保存":`认证失败: ${C.value.reason||C.value.error}`},null,8,["type","message"])])):c("",!0)]),_:1},8,["model"])]),_:1},8,["open"]),a(Y,{open:J.value,"onUpdate:open":e[14]||(e[14]=l=>J.value=l),title:d.value?`事件 ${d.value.event.id}`:"加载中...",placement:"right",width:"640","destroy-on-close":!0},{default:t(()=>[d.value?(r(),f(O,{key:0},[a(Ee,{column:1,size:"small",bordered:""},{default:t(()=>[a(R,{label:"类型"},{default:t(()=>[s(i(d.value.event.subtype),1)]),_:1}),a(R,{label:"发生于"},{default:t(()=>[s(i(new Date(d.value.event.occurredAt).toLocaleString()),1)]),_:1}),a(R,{label:"actor"},{default:t(()=>[s(i(d.value.event.actor),1)]),_:1}),d.value.event.content?.title?(r(),_(R,{key:0,label:"标题"},{default:t(()=>[s(i(d.value.event.content.title),1)]),_:1})):c("",!0),d.value.event.source?.adapter?(r(),_(R,{key:1,label:"来源 adapter"},{default:t(()=>[s(i(d.value.event.source.adapter)+" @ v"+i(d.value.event.source.adapterVersion),1)]),_:1})):c("",!0)]),_:1}),d.value.classification?(r(),_(N,{key:0,orientation:"left",plain:""},{default:t(()=>[...e[44]||(e[44]=[s("分类",-1)])]),_:1})):c("",!0),d.value.classification?(r(),f("div",dt,[a(A,{color:"blue"},{default:t(()=>[s(i(d.value.classification.category),1)]),_:1}),a(A,null,{default:t(()=>[s(i(d.value.classification.layer),1)]),_:1}),k("span",pt,"置信 "+i(Math.round((d.value.classification.confidence||0)*100))+"%",1)])):c("",!0),d.value.extraction?(r(),_(N,{key:2,orientation:"left",plain:""},{default:t(()=>[s("结构化字段("+i(d.value.extraction.template)+")",1)]),_:1})):c("",!0),d.value.extraction?(r(),f("pre",ct,i(JSON.stringify(d.value.extraction.fields,null,2)),1)):c("",!0),d.value.extraction?.pdfExtraction?(r(),_(N,{key:4,orientation:"left",plain:""},{default:t(()=>[...e[45]||(e[45]=[s("PDF 解密 / 解析",-1)])]),_:1})):c("",!0),d.value.extraction?.pdfExtraction?(r(),_(Se,{key:5,"data-source":d.value.extraction.pdfExtraction,size:"small"},{renderItem:t(({item:l})=>[a($e,null,{default:t(()=>[a(De,{title:l.filename},{description:t(()=>[k("div",null,[a(A,{color:l.decrypted?"green":"red"},{default:t(()=>[s(i(l.decrypted?"已解密":"解密失败"),1)]),_:2},1032,["color"]),k("span",vt,"尝试 "+i(l.attempted)+" 次",1),l.transactionsExtracted!=null?(r(),f("span",mt," · 提取 "+i(l.transactionsExtracted)+" 条交易 ",1)):c("",!0)]),l.error?(r(),f("div",ft,i(l.error),1)):c("",!0)]),_:2},1032,["title"])]),_:2},1024)]),_:1},8,["data-source"])):c("",!0),d.value.extraction?.fields?.transactions?.length?(r(),f(O,{key:6},[a(N,{orientation:"left",plain:""},{default:t(()=>[...e[46]||(e[46]=[s("交易明细",-1)])]),_:1}),a(W,{columns:re,"data-source":d.value.extraction.fields.transactions,pagination:{pageSize:10,size:"small"},"row-key":(l,y)=>y,size:"small"},{bodyCell:t(({column:l,record:y})=>[l.key==="occurredAt"?(r(),f(O,{key:0},[s(i(new Date(y.occurredAtMs).toLocaleDateString()),1)],64)):l.key==="amount"?(r(),f("span",{key:1,class:He(y.amount.direction==="in"?"amount-in":"amount-out")},i(y.amount.direction==="in"?"+":"-")+i(y.amount.value.toFixed(2))+" "+i(y.amount.currency),3)):c("",!0)]),_:1},8,["data-source","row-key"])],64)):c("",!0)],64)):(r(),_(le,{key:1,description:"无事件数据"}))]),_:1},8,["open","title"]),a(Y,{open:j.value,"onUpdate:open":e[15]||(e[15]=l=>j.value=l),title:"审计日志(数据 lineage)",placement:"right",width:"600",onAfterOpenChange:fe},{default:t(()=>[a(W,{columns:ie,"data-source":Z.value,pagination:{pageSize:20,size:"small"},"row-key":l=>l.id,size:"small"},{bodyCell:t(({column:l,record:y})=>[l.key==="at"?(r(),f(O,{key:0},[s(i(new Date(y.at).toLocaleString()),1)],64)):l.key==="details"?(r(),f("code",yt,i(y.details||"—"),1)):c("",!0)]),_:1},8,["data-source","row-key"])]),_:1},8,["open"])])}}},ht=Fe(kt,[["__scopeId","data-v-d9f9adeb"]]);export{ht as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.pdh-page[data-v-d9f9adeb]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-d9f9adeb]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-d9f9adeb]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-d9f9adeb]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-d9f9adeb]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-d9f9adeb]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-d9f9adeb]{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-d9f9adeb]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-d9f9adeb]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-d9f9adeb]{color:#52c41a;font-weight:600}.amount-out[data-v-d9f9adeb]{color:#ff4d4f;font-weight:600}
|