chainlesschain 0.162.105 → 0.162.107
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/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-DYaOYjxA.js → AIOps-B7Hz-sMT.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BRnLVtON.js → ActionButton-tIqg_ue9.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Bi5dt6xG.js → Analytics-B6DbVy_b.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-FdAkPhdh.js → AppLayout-Cm_hOXV8.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-huJ-2mSb.js → Audit-Crc94mKO.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CTAFMoyw.js → Backup-DIZVZXve.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DNh66xG2.js → BaseInput-BZWHuJyu.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-xLRQDs5G.js → Chat-BOCsYs8k.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BFRpdxeW.js → ChatBubbleRenderer-BK6OX-J4.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BEZRITX8.js → Checkbox-_bsZN_Td.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BD6xBApN.js → Codegen-Cu-YIxg5.js} +1 -1
- package/src/assets/web-panel/assets/{Col-B_Xqx3Ul.js → Col-BMM77pN6.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Bu4rj14W.js → Community-B4uw3_sc.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B17uNB4p.js → Compact-RxrnL4Ql.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DjaCMltJ.js → Compliance-CKEfGRFH.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BdE44Hek.js → Cowork-jS0AVJjh.js} +4 -4
- package/src/assets/web-panel/assets/{Cron-DZyVpxse.js → Cron-DNyVTsuS.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BeSoFHpQ.js → Crosschain-DRaSmfQP.js} +1 -1
- package/src/assets/web-panel/assets/{DID-D8GTLlQ5.js → DID-B5UTlNum.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-vAKXjb1o.js → Dashboard-OVoPMtcA.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BvgPRTyP.js → Dropdown-5OA2sbK9.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CtXq_Ttt.js → EmailListRenderer-DUJPUE_n.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-oG2LekBb.js → FamilyGuardDashboard-BKFSlqTB.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-C-oMwAUG.js → Federation-BAhgrKK6.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-rj-oMGta.js → FormItemContext-CZ8wh8ZQ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-UeOKM5KJ.js → GenericCardRenderer-Cnsg9gY4.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BOjLMgD-.js → Git-EY6xhhH-.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DVlgF083.js → Governance-CKGWi2hF.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BzpCtSRm.js → Inference-Bibz4dcl.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-5sFDbZKo.js → KnowledgeGraph-B1GhH4Rh.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BagEqu7D.js → Logs-Ce6yjdqa.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-za352FZT.js → Marketplace-0dFzmO9J.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CEavmaZU.js → McpTools-crttKADW.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-Dp0d39Y-.js → Memory-BjtmouRu.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BljVPikC.js → MobileBridge-Djm8NKL7.js} +2 -2
- package/src/assets/web-panel/assets/MobileProjects-CuWSdENU.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CO80_dbI.js → Mtc-UvDcNKPe.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-ByH4suVc.js → MtcAudit-CCUvaVsw.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-CvQ373Kp.js → Multisig-CltVDZII.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DSugxBwU.js → NLProgramming-nVqmxQ1N.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BN_R_-qG.js → Notes-gyIOnFru.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-x3Ipb8KF.js → NotificationSettings-C7VByx8y.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-CJCW-n1E.js → OrderTableRenderer-DopvBK5x.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CUo9tpab.js → Organization-VxnADtjw.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cm1ok3yr.js → Overflow-Du67ZgzE.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BPXfkljx.js → P2P-CXK6FzZK.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-bB_pMcWV.js → PdhVaultBrowser-BH6PhZwi.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-bUj1KcNM.js → Permissions-B23k4uT8.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-DODkpqmo.js → PersonalDataHub-CjiMy8De.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-DEqfqfHT.js → Pipeline-Z1KmgqP5.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-C5b_6Np-.js → Privacy-CmxIvTR1.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DSnPoDLm.js → ProjectInit-Bts__Qz3.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DjDz4FBi.js → ProjectSettings-Bd_lhQgg.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-9chbQyJR.js → Projects-DR-bmuRQ.js} +1 -1
- package/src/assets/web-panel/assets/Providers-kaD-Hp-Y.js +1 -0
- package/src/assets/web-panel/assets/{QuickAsk-BwBKTclE.js → QuickAsk-qy3iXhzr.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-mQMxq3Xc.js → Recommend-DONp9kRc.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-CL6wmEN-.js → Reputation-DDyL2Aeq.js} +1 -1
- package/src/assets/web-panel/assets/{Row-CVXQQg_a.js → Row-D8YcGPf4.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CfoKWtqq.js → RssFeed-DXUODZiL.js} +3 -3
- package/src/assets/web-panel/assets/Search-DEdHYWFg.js +1 -0
- package/src/assets/web-panel/assets/{Security-DuVGdvLC.js → Security-H-o6s5e0.js} +4 -4
- package/src/assets/web-panel/assets/{Services-vfsS-hHM.js → Services-UuIWNe9h.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-UODCxnzg.js → Skeleton-DYtxZPtS.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DVHtahH_.js → Skills-DDifBlN4.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DSoODBCc.js → Sla-D1ZAkzmU.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DiaqTk_e.js → SpeechSettings-CKjGGj0q.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-BQcVBcLi.js → SyncSettings-BGg86vP1.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-VxIkYJmg.js +1 -0
- package/src/assets/web-panel/assets/{Templates-BpnfhFKX.js → Templates-DFRL3OpQ.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-l6EIK9VO.js → Tenant-CmYigIMz.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-DjjQrZtn.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-6dWgzU5T.js → TimelineRenderer-B75R5MPw.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CmTEa0qE.js → Tokens-BQjcUYi2.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DrfC7Hb-.js → Trigger-B87osPjr.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-9SSsKJ67.js → Trust-BMNsPMGf.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-_4fg9FZz.js → UkeySign-Dh8aq9A5.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-XBXv_ieG.js → VideoEditing-BrW9UYwd.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-0eP1nq2A.js → Wallet-rVZaz6JO.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-BWs4GCCZ.js → WebAuthn-BaQ7s6Rr.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-BFSo4kVo.js → WorkflowEditor-DFo5Ff-W.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DJSs4Z3h.js → chat-BhGtd3vF.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DyNgmHM2.js → colors-C_Hs-0Q_.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-M3CZ-i2H.js → compact-item-Cxku8C7o.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-lNMonv_i.js → createContext-v6jUmogl.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BnANFH7b.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-B91aXEzF.js → hasIn-BKhLdwbQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMG7MAgn.js → index-51MhKb2G.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJsTosBw.js → index-B2IZIcKV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKiGfsRP.js → index-B3pkWuB9.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQIBwi9k.js → index-BDW_6hBP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRJ_Lszr.js → index-BElj4Od7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DyOBjEUA.js → index-BLJ91vZT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BzaXBB1A.js → index-BMCT14Fw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAd-oQMK.js → index-Bgtv4PNS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTzUzcRX.js → index-BnYbnWuX.js} +1 -1
- package/src/assets/web-panel/assets/{index-HcSrdXIY.js → index-BolB2BAg.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDOOE70-.js → index-C2PkAyeB.js} +1 -1
- package/src/assets/web-panel/assets/{index-IHn9LQeI.js → index-C2rsPZun.js} +3 -3
- package/src/assets/web-panel/assets/{index-Be_FDJks.js → index-CARZxqzf.js} +1 -1
- package/src/assets/web-panel/assets/{index-KSwJzeqG.js → index-CBL2DZwT.js} +1 -1
- package/src/assets/web-panel/assets/index-CEJN-vG4.js +1 -0
- package/src/assets/web-panel/assets/{index-Bsl-sRNN.js → index-CVAVApRf.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMUkAgqR.js → index-CYz9sJYb.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVeeHE1i.js → index-CZDVxpam.js} +1 -1
- package/src/assets/web-panel/assets/index-CeJCYDPn.js +1 -0
- package/src/assets/web-panel/assets/{index-Dz-UTFho.js → index-CfTpPsv6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmtXAPQT.js → index-CmhCbfio.js} +1 -1
- package/src/assets/web-panel/assets/{index-HIF1H3Qi.js → index-CwKGHmaT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfRRIydd.js → index-D7aePQoD.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkpZNnfb.js → index-D8-PVIyz.js} +1 -1
- package/src/assets/web-panel/assets/{index-eLphHYgM.js → index-DMiUs7VJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4tKStAX.js → index-D_vs8HEm.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxhgIY1j.js → index-DaDs425R.js} +1 -1
- package/src/assets/web-panel/assets/{index-Do3iJlSY.js → index-DfD0hdcw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DV9i6LzE.js → index-DfjaeiC1.js} +1 -1
- package/src/assets/web-panel/assets/{index-_kFxj8Iv.js → index-Dfnrfw8C.js} +1 -1
- package/src/assets/web-panel/assets/{index-dW5CK84B.js → index-DgpKinbP.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2oG0D9w.js → index-DkFQKhAE.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWuMyZbA.js → index-DpO44b89.js} +1 -1
- package/src/assets/web-panel/assets/{index-vb_z80lH.js → index-GoxGMHvm.js} +1 -1
- package/src/assets/web-panel/assets/{index-De6_AYb4.js → index-Ha3xv10h.js} +1 -1
- package/src/assets/web-panel/assets/{index-C51tOSTU.js → index-Hmuq7HiU.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cvj5N5SK.js → index-ITysWrpU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXoioS1t.js → index-Mloutg2P.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVCoAsQq.js → index-gjdcCPuc.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BKCFkUwh.js → initDefaultProps-3JYk3XrB.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CuYmQtOE.js → motion-DnWevrJa.js} +1 -1
- package/src/assets/web-panel/assets/{move-DlPzxPAW.js → move-9bW2GZpH.js} +1 -1
- package/src/assets/web-panel/assets/{omit-Ds3kQlyN.js → omit-D8ydPKdj.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-RUYRa-vv.js → pickAttrs-l5iG1eRA.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-jYZCPIVc.js → placementArrow-Bp1b6Ucy.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BsNIdQzh.js → responsiveObserve-ChTuOCcn.js} +1 -1
- package/src/assets/web-panel/assets/{slide-IDA11Awb.js → slide-Ck7EHmbe.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-D-dVqEII.js → statusUtils-Beih7s__.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-qHsriHs9.js → styleChecker-Dddg8IJR.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-Bf1CATNE.js → useFlexGapSupport-DU6cxKQF.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BaqG_--5.js → useFs-BISbGmgC.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DsEBdplG.js → usePersonalDataHub-CuO7bBz3.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-AvKcICeL.js → vnode-Cq3NWQzC.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-ClicurwO.js → zoom-BTh_EbRh.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/hub.js +13 -4
- package/src/gateways/ws/personal-data-hub-protocol.js +2 -1
- package/src/lib/__tests__/pdh-load-error.test.js +87 -0
- package/src/lib/pdh-egress.js +210 -0
- package/src/lib/pdh-load-error.js +58 -0
- package/src/lib/personal-data-hub-wiring.js +4 -38
- package/src/runtime/diagnostics.js +48 -0
- package/src/runtime/headless-stream.js +37 -1
- package/src/assets/web-panel/assets/MobileProjects-dR-6L-xU.js +0 -1
- package/src/assets/web-panel/assets/Providers-CrtYhXe4.js +0 -1
- package/src/assets/web-panel/assets/Search-BXBraFwH.js +0 -1
- package/src/assets/web-panel/assets/Tasks-w5vOQG7_.js +0 -1
- package/src/assets/web-panel/assets/Terminal-2wTdm-Qz.js +0 -3
- package/src/assets/web-panel/assets/devWarning-D7oeO7SY.js +0 -1
- package/src/assets/web-panel/assets/index-BIPYc_9M.js +0 -1
- package/src/assets/web-panel/assets/index-BRXyk-mT.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{P as Z,h as d,H as ue,G as w,t as L,$ as me,l as ge,m as ve,r as be,n as H,q as J,f as X,i as z,w as U,a7 as F}from"./index-
|
|
1
|
+
import{P as Z,h as d,H as ue,G as w,t as L,$ as me,l as ge,m as ve,r as be,n as H,q as J,f as X,i as z,w as U,a7 as F}from"./index-C2rsPZun.js";import{d as K,b as P,c as f}from"./vendor-BvqAck49.js";import{D as $e}from"./Dropdown-5OA2sbK9.js";import{b as fe,B as M}from"./index-CfTpPsv6.js";import{i as Q}from"./initDefaultProps-3JYk3XrB.js";import{ba as we,ag as G}from"./icons-DP3uiYxy.js";import{b as he,r as ye,a as Ce}from"./placementArrow-Bp1b6Ucy.js";import{i as Y}from"./move-9bW2GZpH.js";import{s as Se,a as xe,b as Pe,c as _e,i as k}from"./slide-Ck7EHmbe.js";import{i as Oe}from"./zoom-BTh_EbRh.js";import{c as W}from"./vnode-Cq3NWQzC.js";import{d as q}from"./devWarning-BnANFH7b.js";import{o as De}from"./omit-D8ydPKdj.js";import{u as Ie}from"./OverrideContext-C2r4vyBb.js";import"./Trigger-B87osPjr.js";import"./raf-Deuc0E8-.js";import"./motion-DnWevrJa.js";import"./isVisible-C7tPsqfj.js";import"./ResizeObserver.es-D6qJbdzf.js";import"./_getTag-DnrRH4E6.js";import"./index-DpO44b89.js";import"./useState-BK4hy8Ma.js";import"./compact-item-Cxku8C7o.js";import"./createContext-v6jUmogl.js";import"./Compact-RxrnL4Ql.js";const ee=()=>({arrow:me([Boolean,Object]),trigger:{type:[Array,String]},menu:L(),overlay:Z.any,visible:w(),open:w(),disabled:w(),danger:w(),autofocus:w(),align:L(),getPopupContainer:Function,prefixCls:String,transitionName:String,placement:String,overlayClassName:String,overlayStyle:L(),forceRender:w(),mouseEnterDelay:Number,mouseLeaveDelay:Number,openClassName:String,minOverlayWidthMatchTrigger:w(),destroyPopupOnHide:w(),onVisibleChange:{type:Function},"onUpdate:visible":{type:Function},onOpenChange:{type:Function},"onUpdate:open":{type:Function}}),E=fe(),Re=()=>d(d({},ee()),{type:E.type,size:String,htmlType:E.htmlType,href:String,disabled:w(),prefixCls:String,icon:Z.any,title:String,loading:E.loading,onClick:ue()}),Ne=e=>{const{componentCls:o,antCls:n,paddingXS:l,opacityLoading:a}=e;return{[`${o}-button`]:{whiteSpace:"nowrap",[`&${n}-btn-group > ${n}-btn`]:{[`&-loading, &-loading + ${n}-btn`]:{cursor:"default",pointerEvents:"none",opacity:a},[`&:last-child:not(:first-child):not(${n}-btn-icon-only)`]:{paddingInline:l}}}}},Be=e=>{const{componentCls:o,menuCls:n,colorError:l,colorTextLightSolid:a}=e,s=`${n}-item`;return{[`${o}, ${o}-menu-submenu`]:{[`${n} ${s}`]:{[`&${s}-danger:not(${s}-disabled)`]:{color:l,"&:hover":{color:a,backgroundColor:l}}}}}},Te=e=>{const{componentCls:o,menuCls:n,zIndexPopup:l,dropdownArrowDistance:a,dropdownArrowOffset:s,sizePopupArrow:b,antCls:t,iconCls:c,motionDurationMid:$,dropdownPaddingVertical:h,fontSize:y,dropdownEdgeChildPadding:p,colorTextDisabled:m,fontSizeIcon:g,controlPaddingHorizontal:C,colorBgElevated:r,boxShadowPopoverArrow:i}=e;return[{[o]:d(d({},be(e)),{position:"absolute",top:-9999,left:{_skip_check_:!0,value:-9999},zIndex:l,display:"block","&::before":{position:"absolute",insetBlock:-a+b/2,zIndex:-9999,opacity:1e-4,content:'""'},[`${o}-wrap`]:{position:"relative",[`${t}-btn > ${c}-down`]:{fontSize:g},[`${c}-down::before`]:{transition:`transform ${$}`}},[`${o}-wrap-open`]:{[`${c}-down::before`]:{transform:"rotate(180deg)"}},"\n &-hidden,\n &-menu-hidden,\n &-menu-submenu-hidden\n ":{display:"none"},[`
|
|
2
2
|
&-show-arrow${o}-placement-topLeft,
|
|
3
3
|
&-show-arrow${o}-placement-top,
|
|
4
4
|
&-show-arrow${o}-placement-topRight
|
package/src/assets/web-panel/assets/{initDefaultProps-BKCFkUwh.js → initDefaultProps-3JYk3XrB.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as s}from"./index-
|
|
1
|
+
import{h as s}from"./index-C2rsPZun.js";const n=(p,o)=>{const r=s({},p);return Object.keys(o).forEach(t=>{const e=r[t];if(e)e.type||e.default?e.default=o[t]:e.def?e.def(o[t]):r[t]={type:e,default:o[t]};else throw new Error(`not have ${t} prop`)}),r};export{n as i};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as D,e as k,d as F,q as _,o as I,w as O,n as R,f as z,c as H,s as f}from"./vendor-BvqAck49.js";import{A as p,B as A,D as C,P as j,F as q,G,h as v}from"./index-
|
|
1
|
+
import{b as D,e as k,d as F,q as _,o as I,w as O,n as R,f as z,c as H,s as f}from"./vendor-BvqAck49.js";import{A as p,B as A,D as C,P as j,F as q,G,h as v}from"./index-C2rsPZun.js";import{w as L}from"./raf-Deuc0E8-.js";let M=!1;try{const e=Object.defineProperty({},"passive",{get(){M=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}function te(e,n,o,t){if(e&&e.addEventListener){let r=t;r===void 0&&M&&(n==="touchstart"||n==="touchmove"||n==="wheel")&&(r={passive:!1}),e.addEventListener(n,o,r)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(n,o)}}}let g;function W(e){if(typeof document>"u")return 0;if(g===void 0){const n=document.createElement("div");n.style.width="100%",n.style.height="200px";const o=document.createElement("div"),t=o.style;t.position="absolute",t.top="0",t.left="0",t.pointerEvents="none",t.visibility="hidden",t.width="200px",t.height="150px",t.overflow="hidden",o.appendChild(n),document.body.appendChild(o);const r=n.offsetWidth;o.style.overflow="scroll";let a=n.offsetWidth;r===a&&(a=o.clientWidth),document.body.removeChild(o),g=r-a}return g}function N(e){const n=e.match(/^(.*)px$/),o=Number(n?.[1]);return Number.isNaN(o)?W():o}function ne(e){if(typeof document>"u"||!e||!(e instanceof Element))return{width:0,height:0};const{width:n,height:o}=getComputedStyle(e,"::-webkit-scrollbar");return{width:N(n),height:N(o)}}const T=`vc-util-locker-${Date.now()}`;let x=0;function V(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function Q(e){const n=D(()=>!!e&&!!e.value);x+=1;const o=`${T}_${x}`;k(t=>{if(p()){if(n.value){const r=W(),a=V();A(`
|
|
2
2
|
html body {
|
|
3
3
|
overflow-y: hidden;
|
|
4
4
|
${a?`width: calc(100% - ${r}px);`:""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as t}from"./index-
|
|
1
|
+
import{K as t}from"./index-C2rsPZun.js";import{i as s}from"./motion-DnWevrJa.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-C2rsPZun.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-C2rsPZun.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-jYZCPIVc.js → placementArrow-Bp1b6Ucy.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as i}from"./index-
|
|
1
|
+
import{h as i}from"./index-C2rsPZun.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-BsNIdQzh.js → responsiveObserve-ChTuOCcn.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as o,h}from"./index-
|
|
1
|
+
import{I as o,h}from"./index-C2rsPZun.js";import{b as x}from"./vendor-BvqAck49.js";const v=["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{v as r,w as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as n}from"./index-
|
|
1
|
+
import{K as n}from"./index-C2rsPZun.js";import{i as e}from"./motion-DnWevrJa.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-C2rsPZun.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-C2rsPZun.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-Bf1CATNE.js → useFlexGapSupport-DU6cxKQF.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-
|
|
1
|
+
import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-Dddg8IJR.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as d}from"./index-
|
|
1
|
+
import{u as d}from"./index-C2rsPZun.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{u as f}from"./index-
|
|
1
|
+
import{u as f}from"./index-C2rsPZun.js";function d(n){if(!n)return n;if(n.error)throw new Error(n.error);return n.result!==void 0?n.result:n}function p(n,t,a,e,r){return typeof n.onMessage!="function"||typeof n.sendRaw!="function"?n.sendRaw({type:t,...a},r).then(d):new Promise((u,s)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${t}.event`,g=`${t}.end`;let c=!1,y=()=>{};const o=(i,b)=>{if(!c){c=!0,clearTimeout(m);try{y()}catch{}i(b)}},m=setTimeout(()=>{o(s,new Error(`stream timeout (${r}ms): ${t}`))},r),h=n.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof e=="function")try{e(i.event||i)}catch{}return}if(i.type===g){o(u,d(i));return}i.type==="error"&&o(s,new Error(i.message||"stream error"))}});y=typeof h=="function"?h:()=>{},Promise.resolve(n.sendRaw({id:l,type:t,...a},r)).catch(()=>{})})}function D(){const n=f(),t=(a,e={},r=3e4)=>n.sendRaw({type:a,...e},r).then(d);return{async health(){return await t("personal-data-hub.health",{},8e3)},async stats(){return await t("personal-data-hub.stats",{},8e3)},async listAdapters(){return await t("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const e=await n.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),r=e&&e.result!==void 0?e.result:e;return r&&r.ok&&typeof r.filePath=="string"?r.filePath:null}catch{return null}},async adapterReadiness(a){return await t("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,e={}){return await t("personal-data-hub.sync-adapter",{name:a,options:e},12e4)},async syncAll(a={}){return await t("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:e=20,seed:r=1}={}){return await t("personal-data-hub.register-mock",{name:a,count:e,seed:r})},async unregister(a){return await t("personal-data-hub.unregister",{name:a})},async ask(a,e={}){return await t("personal-data-hub.ask",{question:a,options:e},18e4)},async queryEvents(a={}){return await t("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await t("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await t("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await t("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await t("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,e={}){return await t("personal-data-hub.register-email",{account:a,opts:e},15e3)},async unregisterEmail(a){return await t("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await t("personal-data-hub.list-email-accounts",{},5e3)},async eventDetail(a){return await t("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,e={},r){return await p(n,"personal-data-hub.sync-adapter-stream",{name:a,options:e},r,6e5)},async syncAllStream(a={},e){return await p(n,"personal-data-hub.sync-all-stream",{options:a},e,9e5)},async registerAlipay(a,e={}){return await t("personal-data-hub.register-alipay",{account:a,opts:e},15e3)},async unregisterAlipay(a){return await t("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await t("personal-data-hub.list-alipay-accounts",{},5e3)},async importAlipayBill({zipPath:a,csvPath:e,zipPassword:r}={}){return await t("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:e,zipPassword:r},3e5)},async reviewQueueList(a=50){return await t("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,e){return await t("personal-data-hub.review-decision",{reviewId:a,decision:e},5e3)},async manualMerge(a,e){return await t("personal-data-hub.manual-merge",{aId:a,bId:e},5e3)},async manualUnmerge(a){return await t("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await t("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await t("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await t("personal-data-hub.skills-list",{},5e3)},async runSkill(a,e={}){return await t("personal-data-hub.run-skill",{name:a,options:e},12e4)},async openAichatLogin(a,e={}){return await t("personal-data-hub.aichat-open-login",{vendor:a,opts:e},1e4)},async probeAichatCookies(a,e){return await t("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:e},1e4)},async registerAichatVendor(a,e,r={}){return await t("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:e,opts:r},3e4)},async rotateAichatLogin(a){return await t("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await t("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await t("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await t("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await t("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s}={}){return await t("personal-data-hub.register-wechat",{account:a,dbPath:e,wechatDataPath:r,fridaOpts:u,keyProviderOverride:s},45e3)},async listWechatAccounts(){return await t("personal-data-hub.list-wechat-accounts",{},5e3)},async unregisterWechat(a){return await t("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await t("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await t("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await t("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await t("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await t("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await t("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await t("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await t("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{D 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-C2rsPZun.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-BvqAck49.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","class must be string"),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=>g(r)?!(r.type===d||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-C2rsPZun.js";import{i as f}from"./motion-DnWevrJa.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,7 +8,7 @@
|
|
|
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-C2rsPZun.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-BvqAck49.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/icons-DP3uiYxy.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
|
package/src/commands/hub.js
CHANGED
|
@@ -19,6 +19,7 @@ import chalk from "chalk";
|
|
|
19
19
|
import ora from "ora";
|
|
20
20
|
import { logger } from "../lib/logger.js";
|
|
21
21
|
import { getHub, getHubMinimal } from "../lib/personal-data-hub-wiring.js";
|
|
22
|
+
import { importPdh } from "../lib/pdh-load-error.js";
|
|
22
23
|
import { getAIChatWizard } from "../lib/personal-data-hub-aichat-wizard.js";
|
|
23
24
|
|
|
24
25
|
function printJson(obj) {
|
|
@@ -974,7 +975,9 @@ async function cmdSalvage(dumpfile, options) {
|
|
|
974
975
|
// earlier social-douyin-only path mis-attributed every app to douyin.
|
|
975
976
|
const { salvageDumpToVault } = options._salvageDumpToVault
|
|
976
977
|
? { salvageDumpToVault: options._salvageDumpToVault }
|
|
977
|
-
: await
|
|
978
|
+
: await importPdh(
|
|
979
|
+
"@chainlesschain/personal-data-hub/forensics/salvage-ingest",
|
|
980
|
+
);
|
|
978
981
|
const opts = {
|
|
979
982
|
app: options.app || "douyin",
|
|
980
983
|
unaligned: options.unaligned !== false, // default-on: scattered page cache
|
|
@@ -1023,7 +1026,9 @@ async function cmdCollectQq(options) {
|
|
|
1023
1026
|
const path = require("path");
|
|
1024
1027
|
const qq = options._qqCore
|
|
1025
1028
|
? options._qqCore
|
|
1026
|
-
: await
|
|
1029
|
+
: await importPdh(
|
|
1030
|
+
"@chainlesschain/personal-data-hub/forensics/qq-nt-collect",
|
|
1031
|
+
);
|
|
1027
1032
|
|
|
1028
1033
|
if (!options.db) throw new Error("need --db <encrypted nt_msg.db>");
|
|
1029
1034
|
if (!options.uids) throw new Error("need --uids <file with u_ candidates>");
|
|
@@ -1132,7 +1137,9 @@ async function cmdCollectDb(options) {
|
|
|
1132
1137
|
const path = require("path");
|
|
1133
1138
|
const g = options._plaintextCore
|
|
1134
1139
|
? options._plaintextCore
|
|
1135
|
-
: await
|
|
1140
|
+
: await importPdh(
|
|
1141
|
+
"@chainlesschain/personal-data-hub/forensics/plaintext-db-collect",
|
|
1142
|
+
);
|
|
1136
1143
|
if (!options.app) throw new Error("need --app <key>");
|
|
1137
1144
|
let dbs = [];
|
|
1138
1145
|
if (options.db) {
|
|
@@ -1214,7 +1221,9 @@ async function cmdCollectWechat(options) {
|
|
|
1214
1221
|
const path = require("path");
|
|
1215
1222
|
const wx = options._wechatCore
|
|
1216
1223
|
? options._wechatCore
|
|
1217
|
-
: await
|
|
1224
|
+
: await importPdh(
|
|
1225
|
+
"@chainlesschain/personal-data-hub/forensics/wechat-collect",
|
|
1226
|
+
);
|
|
1218
1227
|
if (!options.db) throw new Error("need --db <EnMicroMsg.db>");
|
|
1219
1228
|
const raw = fs.readFileSync(options.db);
|
|
1220
1229
|
const readLines = (f) =>
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
getHub,
|
|
22
22
|
close as closeHub,
|
|
23
23
|
} from "../../lib/personal-data-hub-wiring.js";
|
|
24
|
+
import { importPdh } from "../../lib/pdh-load-error.js";
|
|
24
25
|
import { getAIChatWizard } from "../../lib/personal-data-hub-aichat-wizard.js";
|
|
25
26
|
import {
|
|
26
27
|
existsSync,
|
|
@@ -40,7 +41,7 @@ import { join } from "node:path";
|
|
|
40
41
|
let _ingestSnapshotFn = null;
|
|
41
42
|
async function ingestSystemDataAndroidSnapshot(hub, snapshot) {
|
|
42
43
|
if (!_ingestSnapshotFn) {
|
|
43
|
-
const pdhMod = await
|
|
44
|
+
const pdhMod = await importPdh("@chainlesschain/personal-data-hub");
|
|
44
45
|
const pdhPkg = pdhMod.default || pdhMod;
|
|
45
46
|
_ingestSnapshotFn = pdhPkg.ingestSystemDataAndroidSnapshot;
|
|
46
47
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pdh-load-error — shared rewritePdhLoadError + importPdh unit tests.
|
|
3
|
+
*
|
|
4
|
+
* This is the single source of truth for turning an incomplete-pdh-install
|
|
5
|
+
* resolution failure into an actionable repair message, used by the hub
|
|
6
|
+
* wiring, the ws system-data ingest, and the `cc hub collect-*` / `salvage`
|
|
7
|
+
* forensics commands. The rewrite must fire for a missing pdh module and pass
|
|
8
|
+
* everything else through untouched; importPdh must surface that rewrite on a
|
|
9
|
+
* failed dynamic import and otherwise return the module namespace verbatim.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { describe, it, expect } from "vitest";
|
|
13
|
+
import { rewritePdhLoadError, importPdh } from "../pdh-load-error.js";
|
|
14
|
+
|
|
15
|
+
function missingPdhModuleError() {
|
|
16
|
+
const err = new Error(
|
|
17
|
+
"Cannot find module '.../@chainlesschain/personal-data-hub/lib/adapters/wechat/index.js'",
|
|
18
|
+
);
|
|
19
|
+
err.code = "ERR_MODULE_NOT_FOUND";
|
|
20
|
+
err.url =
|
|
21
|
+
"file:///.../@chainlesschain/personal-data-hub/lib/adapters/wechat/index.js";
|
|
22
|
+
return err;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
describe("rewritePdhLoadError", () => {
|
|
26
|
+
it("rewrites a missing pdh module into the actionable repair error", () => {
|
|
27
|
+
const err = missingPdhModuleError();
|
|
28
|
+
const out = rewritePdhLoadError(err);
|
|
29
|
+
expect(out).not.toBe(err);
|
|
30
|
+
expect(out.code).toBe("PDH_INSTALL_INCOMPLETE");
|
|
31
|
+
expect(out.cause).toBe(err);
|
|
32
|
+
expect(out.message).toMatch(/incomplete/i);
|
|
33
|
+
expect(out.message).toMatch(/npm i -g chainlesschain/);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it("rewrites when the package root itself is missing (no url)", () => {
|
|
37
|
+
const err = new Error(
|
|
38
|
+
"Cannot find package '@chainlesschain/personal-data-hub' imported from x",
|
|
39
|
+
);
|
|
40
|
+
err.code = "ERR_MODULE_NOT_FOUND";
|
|
41
|
+
expect(rewritePdhLoadError(err).code).toBe("PDH_INSTALL_INCOMPLETE");
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("passes through a missing module that is NOT pdh", () => {
|
|
45
|
+
const err = new Error("Cannot find module './other.js'");
|
|
46
|
+
err.code = "ERR_MODULE_NOT_FOUND";
|
|
47
|
+
expect(rewritePdhLoadError(err)).toBe(err);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("passes through a real pdh runtime bug (TypeError)", () => {
|
|
51
|
+
const err = new TypeError("x is not a function in personal-data-hub");
|
|
52
|
+
expect(rewritePdhLoadError(err)).toBe(err);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("is null/undefined safe", () => {
|
|
56
|
+
expect(rewritePdhLoadError(null)).toBe(null);
|
|
57
|
+
expect(rewritePdhLoadError(undefined)).toBe(undefined);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe("importPdh", () => {
|
|
62
|
+
it("returns the module namespace for a resolvable specifier", async () => {
|
|
63
|
+
// Self-import: the shared module is always resolvable.
|
|
64
|
+
const ns = await importPdh(
|
|
65
|
+
new URL("../pdh-load-error.js", import.meta.url),
|
|
66
|
+
);
|
|
67
|
+
expect(typeof ns.importPdh).toBe("function");
|
|
68
|
+
expect(typeof ns.rewritePdhLoadError).toBe("function");
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("passes a non-pdh resolution failure through unchanged", async () => {
|
|
72
|
+
// importPdh surfaces real failures; the rewrite is scoped to pdh, so a
|
|
73
|
+
// missing local module rejects with its original (non-PDH) error. (The
|
|
74
|
+
// actual missing-pdh-file → PDH_INSTALL_INCOMPLETE rewrite is covered by
|
|
75
|
+
// the rewritePdhLoadError cases above; a real ERR_MODULE_NOT_FOUND for a
|
|
76
|
+
// defined-but-missing pdh export can't be provoked without corrupting the
|
|
77
|
+
// installed package.)
|
|
78
|
+
let caught;
|
|
79
|
+
try {
|
|
80
|
+
await importPdh("./__no_such_local_module__.js");
|
|
81
|
+
} catch (e) {
|
|
82
|
+
caught = e;
|
|
83
|
+
}
|
|
84
|
+
expect(caught).toBeTruthy();
|
|
85
|
+
expect(caught.code).not.toBe("PDH_INSTALL_INCOMPLETE");
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PDH egress classification (design module 101 §3.5.18 — 出境台账 / "what left
|
|
3
|
+
* the device").
|
|
4
|
+
*
|
|
5
|
+
* The personal-data chat's single source of truth for egress is the Android,
|
|
6
|
+
* on-device, *encrypted* TransparencyLedger (§3.5.18, line 962). But the cc
|
|
7
|
+
* agent makes the actual cloud-LLM call — where conversation context that may
|
|
8
|
+
* contain personal data is sent to a cloud provider — entirely inside the cc
|
|
9
|
+
* subprocess, invisible to the Android app (the emitted token_usage carries no
|
|
10
|
+
* provider). Egress-classed tools (send / export / cross-device sync /
|
|
11
|
+
* remote-API fetch) likewise run inside cc.
|
|
12
|
+
*
|
|
13
|
+
* This module classifies cc-side egress so headless-stream.js can EMIT a
|
|
14
|
+
* structured `egress` stream-json event the Android ledger records. cc only
|
|
15
|
+
* REPORTS egress (emit-only); it never writes its own ledger file, so the
|
|
16
|
+
* ledger stays the single on-device encrypted store the design mandates.
|
|
17
|
+
*
|
|
18
|
+
* Honest-by-default (§3.5.18 line 963 "不隐藏任何出境" — never hide an egress):
|
|
19
|
+
* an unknown, non-empty provider is treated as cloud, i.e. we over-report
|
|
20
|
+
* rather than under-report. A local/on-device turn reports nothing — the
|
|
21
|
+
* truthful "0 条出境".
|
|
22
|
+
*
|
|
23
|
+
* Pure CLI, no Android dependency, fully unit-testable.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { BUILT_IN_PROVIDERS } from "./llm-providers.js";
|
|
27
|
+
|
|
28
|
+
// Providers that run on the device (or the user's own LAN box) and so never
|
|
29
|
+
// send conversation context off the device.
|
|
30
|
+
const LOCAL_PROVIDERS = new Set([
|
|
31
|
+
"ollama",
|
|
32
|
+
"llamacpp",
|
|
33
|
+
"llama-cpp",
|
|
34
|
+
"llama.cpp",
|
|
35
|
+
"mediapipe",
|
|
36
|
+
"on-device",
|
|
37
|
+
"ondevice",
|
|
38
|
+
"local",
|
|
39
|
+
]);
|
|
40
|
+
|
|
41
|
+
// Known cloud APIs, derived from the provider registry (single source of truth)
|
|
42
|
+
// — ollama is `free:true` (local); every other built-in is a cloud endpoint.
|
|
43
|
+
// For these the provider NAME is authoritative: classify as cloud regardless of
|
|
44
|
+
// a possibly-default/stale baseUrl. New providers added to the registry are
|
|
45
|
+
// picked up automatically.
|
|
46
|
+
const CLOUD_PROVIDERS = new Set(
|
|
47
|
+
Object.values(BUILT_IN_PROVIDERS)
|
|
48
|
+
.filter((d) => d && d.free !== true && d.name)
|
|
49
|
+
.map((d) => String(d.name).toLowerCase()),
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
/** True when a baseUrl points at the local device or the user's own LAN. */
|
|
53
|
+
function isLocalBaseUrl(baseUrl) {
|
|
54
|
+
const u = String(baseUrl || "").toLowerCase();
|
|
55
|
+
if (!u) return false;
|
|
56
|
+
if (
|
|
57
|
+
u.includes("localhost") ||
|
|
58
|
+
u.includes("127.0.0.1") ||
|
|
59
|
+
u.includes("0.0.0.0") ||
|
|
60
|
+
u.includes("[::1]") ||
|
|
61
|
+
u.includes("//::1")
|
|
62
|
+
) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// Private LAN ranges (RFC 1918): the user's own box, not a cloud egress.
|
|
66
|
+
return /\/\/(?:10\.|192\.168\.|172\.(?:1[6-9]|2\d|3[01])\.)/.test(u);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* A provider is "local" (no egress) when it is a known on-device engine, or
|
|
71
|
+
* (for an unknown/custom provider) its baseUrl resolves to the device / the
|
|
72
|
+
* user's own LAN. A known cloud provider is never local even if it is called
|
|
73
|
+
* with a default/stale localhost baseUrl — the provider name wins.
|
|
74
|
+
*/
|
|
75
|
+
export function isLocalProvider(provider, baseUrl) {
|
|
76
|
+
const p = String(provider || "")
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.trim();
|
|
79
|
+
if (p && LOCAL_PROVIDERS.has(p)) return true;
|
|
80
|
+
if (p && CLOUD_PROVIDERS.has(p)) return false;
|
|
81
|
+
// Unknown/custom provider — decide by where its baseUrl points.
|
|
82
|
+
return isLocalBaseUrl(baseUrl);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Cloud = a turn whose conversation context leaves the device. An empty
|
|
87
|
+
* provider means no LLM ran (not cloud); an unknown non-empty provider is
|
|
88
|
+
* treated as cloud so an egress is never silently hidden.
|
|
89
|
+
*/
|
|
90
|
+
export function isCloudProvider(provider, baseUrl) {
|
|
91
|
+
if (!provider) return false;
|
|
92
|
+
return !isLocalProvider(provider, baseUrl);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Classify a tool call as a data-egress channel, or null when it stays on the
|
|
97
|
+
* device. Tool names may carry an MCP prefix (mcp__pdh__collect_app_data) or be
|
|
98
|
+
* bare (send_message); we match on the bare suffix.
|
|
99
|
+
*
|
|
100
|
+
* @returns {"message"|"export"|"cross_device"|"web"|"remote_api"|null}
|
|
101
|
+
*/
|
|
102
|
+
export function classifyEgressTool(toolName) {
|
|
103
|
+
const raw = String(toolName || "")
|
|
104
|
+
.toLowerCase()
|
|
105
|
+
.trim();
|
|
106
|
+
if (!raw) return null;
|
|
107
|
+
// Strip an MCP server prefix: mcp__<server>__<tool> → <tool>.
|
|
108
|
+
const bare = raw.includes("__") ? raw.slice(raw.lastIndexOf("__") + 2) : raw;
|
|
109
|
+
|
|
110
|
+
// Sending data OUT to another party.
|
|
111
|
+
if (bare === "send_message" || bare.startsWith("send_")) return "message";
|
|
112
|
+
// Exporting data off the device.
|
|
113
|
+
if (bare.includes("export")) return "export";
|
|
114
|
+
// Cross-device sync / backup — leaves THIS device for another.
|
|
115
|
+
if (
|
|
116
|
+
bare.includes("cross_device") ||
|
|
117
|
+
bare.includes("backup") ||
|
|
118
|
+
bare.startsWith("sync_to") ||
|
|
119
|
+
bare.includes("transfer")
|
|
120
|
+
) {
|
|
121
|
+
return "cross_device";
|
|
122
|
+
}
|
|
123
|
+
// Generic web egress.
|
|
124
|
+
if (bare === "web_search" || bare === "web_fetch" || bare === "fetch") {
|
|
125
|
+
return "web";
|
|
126
|
+
}
|
|
127
|
+
// The PDH cookie-API tools transmit the user's auth cookie + query to a
|
|
128
|
+
// remote 3rd-party API (to fetch the user's own data back). The cookie + the
|
|
129
|
+
// query leave the device, so this IS an egress channel — honest disclosure.
|
|
130
|
+
// The root / snapshot / salvage / system / files variants are purely on-device
|
|
131
|
+
// reads and therefore fall through to null.
|
|
132
|
+
if (bare === "collect_app_data" || bare === "query_app_data") {
|
|
133
|
+
return "remote_api";
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Build the `egress` stream-json event the Android ledger records.
|
|
140
|
+
* kind: "cloud_llm" | "tool"
|
|
141
|
+
* channel: provider name (cloud_llm) | egress channel (tool)
|
|
142
|
+
*/
|
|
143
|
+
export function buildEgressEvent(fields = {}) {
|
|
144
|
+
const ev = { type: "egress", kind: fields.kind, channel: fields.channel };
|
|
145
|
+
if (fields.provider) ev.provider = fields.provider;
|
|
146
|
+
if (fields.model) ev.model = fields.model;
|
|
147
|
+
if (fields.tool) ev.tool = fields.tool;
|
|
148
|
+
if (fields.sessionId) ev.session_id = fields.sessionId;
|
|
149
|
+
if (fields.turn != null) ev.turn = fields.turn;
|
|
150
|
+
if (fields.tokens != null) ev.tokens = fields.tokens;
|
|
151
|
+
return ev;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Compute the egress events for one completed turn (cloud-LLM call + any
|
|
156
|
+
* egress-classed tools). Pure over its inputs; the caller decides whether to
|
|
157
|
+
* emit (PDH-gated). Returns [] when nothing left the device — the honest
|
|
158
|
+
* "0 条出境" case (a fully local turn with only on-device tools).
|
|
159
|
+
*
|
|
160
|
+
* @param {object} p
|
|
161
|
+
* @param {string} p.provider effective provider used for this turn
|
|
162
|
+
* @param {string} [p.baseUrl] effective baseUrl (localhost/LAN → not cloud)
|
|
163
|
+
* @param {string} [p.model] effective model
|
|
164
|
+
* @param {Array<{tool:string}>} [p.toolCalls] tools executed this turn
|
|
165
|
+
* @param {object} [p.usage] { input_tokens, output_tokens } magnitude proxy
|
|
166
|
+
* @param {string} [p.sessionId]
|
|
167
|
+
* @param {number} [p.turn]
|
|
168
|
+
* @returns {Array<object>} egress events (possibly empty)
|
|
169
|
+
*/
|
|
170
|
+
export function turnEgressEvents({
|
|
171
|
+
provider,
|
|
172
|
+
baseUrl,
|
|
173
|
+
model,
|
|
174
|
+
toolCalls = [],
|
|
175
|
+
usage = null,
|
|
176
|
+
sessionId = null,
|
|
177
|
+
turn = null,
|
|
178
|
+
} = {}) {
|
|
179
|
+
const events = [];
|
|
180
|
+
if (isCloudProvider(provider, baseUrl)) {
|
|
181
|
+
events.push(
|
|
182
|
+
buildEgressEvent({
|
|
183
|
+
kind: "cloud_llm",
|
|
184
|
+
channel: provider,
|
|
185
|
+
provider,
|
|
186
|
+
model,
|
|
187
|
+
sessionId,
|
|
188
|
+
turn,
|
|
189
|
+
tokens: usage
|
|
190
|
+
? (usage.input_tokens || 0) + (usage.output_tokens || 0)
|
|
191
|
+
: null,
|
|
192
|
+
}),
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
for (const call of Array.isArray(toolCalls) ? toolCalls : []) {
|
|
196
|
+
const channel = classifyEgressTool(call?.tool);
|
|
197
|
+
if (channel) {
|
|
198
|
+
events.push(
|
|
199
|
+
buildEgressEvent({
|
|
200
|
+
kind: "tool",
|
|
201
|
+
channel,
|
|
202
|
+
tool: call.tool,
|
|
203
|
+
sessionId,
|
|
204
|
+
turn,
|
|
205
|
+
}),
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return events;
|
|
210
|
+
}
|