chainlesschain 0.162.102 → 0.162.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/scripts/postinstall.mjs +33 -3
  4. package/src/assets/web-panel/assets/{AIOps-C1k00Gsz.js → AIOps-7wopfJEc.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-BinI6ZDq.js → ActionButton-D6EncMBP.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-Cg0jo_cd.js → Analytics-BLkJWETZ.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CClMs_AA.js → AppLayout-y4u_FcxD.js} +5 -5
  8. package/src/assets/web-panel/assets/{Audit-BtQgvFdM.js → Audit-hlo8J9H_.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-43FRi7ZI.js → Backup-DqzEt7Xc.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-Cfza-FZU.js → BaseInput-DSjI2QZ0.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-7AjHSiSC.js → Chat-CgQ_Bgeg.js} +6 -6
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-Bh1YNdtx.js → ChatBubbleRenderer-DJL3sUhO.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-DgjfqlWW.js → Checkbox-DBZsek3m.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-CkwOBThj.js → Codegen-DI31IpGL.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-Cohk5WYM.js → Col-S4VUKCBd.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-D3LMGh3F.js → Community-CxgAmvQv.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-DqoMJmh0.js → Compact-CQGXVWYd.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-BVjWZlEj.js → Compliance-CGr19kIb.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-C0lqQPqu.js → Cowork-rH5D-DX-.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-DHd_PJZS.js → Cron-C-nzaMqo.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-BphK2Q9u.js → Crosschain-BhF204Dq.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-CWIw0aG4.js → DID-CjG7LevM.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-CKgDU9U6.js → Dashboard-4KQLCTgc.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-DkIlDUXF.js → Dropdown-Ci6FL0LF.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-5sXA9hwZ.js → EmailListRenderer-CccC9rY4.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CgcdJLH7.js → FamilyGuardDashboard-cohPI6FO.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DPOcJISA.js → Federation-DgxfOhS7.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-DxOutBMJ.js → FormItemContext-DECvusFi.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-BYVNtkcd.js → GenericCardRenderer-CLTKtVEy.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-B37LKxOu.js → Git-DzuwhoVf.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-CnKcx5un.js → Governance-C3SuwAQZ.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-CbRAWN3_.js → Inference-CW8SeIAb.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-D0w6RfE_.js → KnowledgeGraph-B4wJIJ-0.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-DxBDKpzq.js → Logs-CbjpWALx.js} +2 -2
  35. package/src/assets/web-panel/assets/{Marketplace-DNLi6O_3.js → Marketplace-DCUW-nnI.js} +1 -1
  36. package/src/assets/web-panel/assets/{McpTools-s0sBCPXw.js → McpTools-DagPQpHC.js} +4 -4
  37. package/src/assets/web-panel/assets/{Memory-BdSEgpmP.js → Memory-DrzxLek2.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileBridge-Dz7nz4K9.js → MobileBridge-Xz4D9zEc.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileProjects-DakdA2PC.js → MobileProjects-BYw4mHvO.js} +1 -1
  40. package/src/assets/web-panel/assets/{Mtc-Be9OBypk.js → Mtc-30fdfUjX.js} +5 -5
  41. package/src/assets/web-panel/assets/{MtcAudit-KI2ih4Tl.js → MtcAudit-CLzGDzjM.js} +2 -2
  42. package/src/assets/web-panel/assets/{Multisig-Cg3jHFjL.js → Multisig-Taa7sLmO.js} +3 -3
  43. package/src/assets/web-panel/assets/{NLProgramming-BepHx8fU.js → NLProgramming-BmxE8pja.js} +1 -1
  44. package/src/assets/web-panel/assets/{Notes-2f05HyqN.js → Notes-CWsIiNXy.js} +3 -3
  45. package/src/assets/web-panel/assets/{NotificationSettings-Blwio_G5.js → NotificationSettings-DphQdsow.js} +1 -1
  46. package/src/assets/web-panel/assets/{OrderTableRenderer-D7HJfvo_.js → OrderTableRenderer-BoWoi08m.js} +1 -1
  47. package/src/assets/web-panel/assets/{Organization-Uihlz1cI.js → Organization-Crgm-1TX.js} +4 -4
  48. package/src/assets/web-panel/assets/{Overflow-gZx8kADL.js → Overflow-5lZ6XU8p.js} +1 -1
  49. package/src/assets/web-panel/assets/{P2P-DqEEGqba.js → P2P-CS-HiHCu.js} +2 -2
  50. package/src/assets/web-panel/assets/PdhVaultBrowser-DaxnZdvZ.js +7 -0
  51. package/src/assets/web-panel/assets/{Permissions-ERF2ZQ3G.js → Permissions-BDyk_RXH.js} +4 -4
  52. package/src/assets/web-panel/assets/{PersonalDataHub-CzDy9CFB.js → PersonalDataHub-D_7W0q0f.js} +2 -2
  53. package/src/assets/web-panel/assets/{Pipeline-Dy4x9Ejw.js → Pipeline-BBh5N_nJ.js} +1 -1
  54. package/src/assets/web-panel/assets/{Privacy-C6UJys52.js → Privacy-D3nQr2CR.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectInit-Bmi027fa.js → ProjectInit-DB2awvBj.js} +2 -2
  56. package/src/assets/web-panel/assets/{ProjectSettings-NinSZmGA.js → ProjectSettings-Ca_tlgU9.js} +2 -2
  57. package/src/assets/web-panel/assets/{Projects-DeW-p-hT.js → Projects-Dc0F9486.js} +1 -1
  58. package/src/assets/web-panel/assets/{Providers-4hxrBTLo.js → Providers-D3NaA6yG.js} +1 -1
  59. package/src/assets/web-panel/assets/{QuickAsk-B5inZlW8.js → QuickAsk-CdSYgl7s.js} +1 -1
  60. package/src/assets/web-panel/assets/{Recommend-7lpBm00-.js → Recommend-nolWD-R0.js} +1 -1
  61. package/src/assets/web-panel/assets/{Reputation-QfdGZxYO.js → Reputation-5stJBPxY.js} +1 -1
  62. package/src/assets/web-panel/assets/{Row-DqHC7BCT.js → Row-CB4Ns1zc.js} +1 -1
  63. package/src/assets/web-panel/assets/{RssFeed-B3F1aGP6.js → RssFeed-CYNnqrO3.js} +3 -3
  64. package/src/assets/web-panel/assets/{Search-BXtjuoYO.js → Search-C01IKJzD.js} +1 -1
  65. package/src/assets/web-panel/assets/{Security-Iy0MOV-A.js → Security-v6rOHkAt.js} +4 -4
  66. package/src/assets/web-panel/assets/{Services-C_puMp_6.js → Services-C5p6LeFa.js} +2 -2
  67. package/src/assets/web-panel/assets/{Skeleton-Bg6mTVZU.js → Skeleton-B-a0YWJk.js} +1 -1
  68. package/src/assets/web-panel/assets/{Skills-D4wXhanR.js → Skills-CoWWWNM3.js} +1 -1
  69. package/src/assets/web-panel/assets/{Sla-Cgr2B9R6.js → Sla-BW4sMMYV.js} +1 -1
  70. package/src/assets/web-panel/assets/{SpeechSettings-ctYqZEY5.js → SpeechSettings-vR2XbHTs.js} +1 -1
  71. package/src/assets/web-panel/assets/{SyncSettings-C3qWh9y4.js → SyncSettings-ByVjlC-k.js} +2 -2
  72. package/src/assets/web-panel/assets/{Tasks-D3AAgUx1.js → Tasks-CnWlikMD.js} +1 -1
  73. package/src/assets/web-panel/assets/{Templates-Bm_Dyz8T.js → Templates-DMak8sf4.js} +1 -1
  74. package/src/assets/web-panel/assets/{Tenant-DOSrOw9X.js → Tenant-8nNeIn3c.js} +1 -1
  75. package/src/assets/web-panel/assets/Terminal-DNhoYCsQ.js +3 -0
  76. package/src/assets/web-panel/assets/{TimelineRenderer-BB8Qq6Cx.js → TimelineRenderer-BCfyEbsG.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tokens-DqyF_Flh.js → Tokens-Dx6zQD-k.js} +1 -1
  78. package/src/assets/web-panel/assets/{Trigger-ClwQC2hP.js → Trigger-8IxN6NeY.js} +1 -1
  79. package/src/assets/web-panel/assets/{Trust-DGQSLPQ0.js → Trust-B3ALLmzY.js} +1 -1
  80. package/src/assets/web-panel/assets/{UkeySign-BAkeYsUO.js → UkeySign-QP52j-1F.js} +1 -1
  81. package/src/assets/web-panel/assets/{VideoEditing-WyUxS65Y.js → VideoEditing-DugXO1Jj.js} +1 -1
  82. package/src/assets/web-panel/assets/{Wallet-Br7GdjEg.js → Wallet-DST9EbXV.js} +4 -4
  83. package/src/assets/web-panel/assets/{WebAuthn-bKs1dahj.js → WebAuthn-tAY0CGIn.js} +5 -5
  84. package/src/assets/web-panel/assets/{WorkflowEditor-CVqAALYe.js → WorkflowEditor-CFQ6BAuy.js} +1 -1
  85. package/src/assets/web-panel/assets/{chat-BDGDRbab.js → chat-Dx_Vki33.js} +1 -1
  86. package/src/assets/web-panel/assets/{colors-DIUxZwT8.js → colors-CDu_PgKe.js} +1 -1
  87. package/src/assets/web-panel/assets/{compact-item-C2iM4GmN.js → compact-item-DAmmY6Pd.js} +1 -1
  88. package/src/assets/web-panel/assets/{createContext-D27NeHwO.js → createContext-BNfI5YlY.js} +1 -1
  89. package/src/assets/web-panel/assets/devWarning-DVHcIug4.js +1 -0
  90. package/src/assets/web-panel/assets/{hasIn-D1lXdsFj.js → hasIn-DnQf32YV.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-Bi8u5GsP.js → index--dugfJRR.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-CEO9vhv7.js → index-5-fynKGl.js} +3 -3
  93. package/src/assets/web-panel/assets/{index-BE9bNvdn.js → index-B2E223yV.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-Cb9u9MMo.js → index-BAuM_u-a.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-DkOu8er7.js → index-BD42XJvr.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-B8POWlbO.js → index-BXoV0bGH.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BqbjsJcS.js → index-B_33ohRv.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DK0jgmJg.js → index-Bk7SsC3G.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B6kc4-nD.js → index-Bp9dZbVc.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DnCVI295.js → index-BpCwmJYd.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CFEwtE3q.js → index-Bq3-M0HD.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CAnMUhHO.js → index-BvOZ4bMA.js} +1 -1
  103. package/src/assets/web-panel/assets/index-C7BeWaBy.js +1 -0
  104. package/src/assets/web-panel/assets/{index-CsIw-YQF.js → index-CAVRxcro.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-Dc4k4V1u.js → index-CHKaGc76.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-yIM-KxVm.js → index-CMQaA1eY.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DFhdJm7M.js → index-CN1Frc6z.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BIVYPlpl.js → index-CZGselS2.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Do13fQ5W.js → index-CjgCRQPR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Bil9t91t.js → index-CokbOERQ.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CiA-L5ld.js → index-D-1Y7Klr.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Cbqr8kW6.js → index-D3j2PYB3.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DfSav-yQ.js → index-D8JSX4W7.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-HZGu1woY.js → index-DJ9fqGMi.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BTedVe_v.js → index-DQf4uzBI.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Cgf3zMwq.js → index-DVuEZdlE.js} +1 -1
  117. package/src/assets/web-panel/assets/index-Dd1aUrrl.js +1 -0
  118. package/src/assets/web-panel/assets/{index-BTUFhfHs.js → index-DefG2WdL.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DrS-Mrm-.js → index-DnciHih8.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CoygRreE.js → index-Do9QgRwv.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CFY1KjB1.js → index-DrRdylF0.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CKMDgjfh.js → index-DwLMCuFo.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-Ca8n97h9.js → index-HR5cV6TS.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B5ZB5lsV.js → index-Mbq7juVQ.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-CfR3Pvsu.js → index-O-6dvZFC.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CNk98bb1.js → index-ThxGxLMM.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Y1rkRas5.js → index-XgiYAJGU.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CDzSUTpa.js → index-yn1CVu0v.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-ET5LYk9B.js → index-yzrUI8Lj.js} +1 -1
  130. package/src/assets/web-panel/assets/{initDefaultProps-C0Yrc6yY.js → initDefaultProps-CgFmFSzg.js} +1 -1
  131. package/src/assets/web-panel/assets/{motion-DnOI85ek.js → motion-6cQjBgS8.js} +1 -1
  132. package/src/assets/web-panel/assets/{move-DT9zQPZp.js → move-BANmUuW-.js} +1 -1
  133. package/src/assets/web-panel/assets/{omit-DFtDi5Wd.js → omit-BNXz07Cb.js} +1 -1
  134. package/src/assets/web-panel/assets/{pickAttrs-Cobkb_rd.js → pickAttrs-CCuPnfHK.js} +1 -1
  135. package/src/assets/web-panel/assets/{placementArrow-DWQDu4i-.js → placementArrow-BoM9dzEu.js} +1 -1
  136. package/src/assets/web-panel/assets/{responsiveObserve-daoQcWcX.js → responsiveObserve-BX4PJmtw.js} +1 -1
  137. package/src/assets/web-panel/assets/{slide-BLkzd2OV.js → slide-Cp0GX__V.js} +1 -1
  138. package/src/assets/web-panel/assets/{statusUtils-Uyxi81M0.js → statusUtils-DB45lYg-.js} +1 -1
  139. package/src/assets/web-panel/assets/{styleChecker-Dtw5lUcs.js → styleChecker-BK22ABVM.js} +1 -1
  140. package/src/assets/web-panel/assets/{useFlexGapSupport-_JpMgpdt.js → useFlexGapSupport-C4dr4HyL.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFs-huwAlPD-.js → useFs-G4VQ7ftf.js} +1 -1
  142. package/src/assets/web-panel/assets/{usePersonalDataHub-7cafj8_f.js → usePersonalDataHub-BbVsrc-b.js} +1 -1
  143. package/src/assets/web-panel/assets/{vnode-DYUSfRt7.js → vnode-2W6kp99p.js} +1 -1
  144. package/src/assets/web-panel/assets/{zoom-B-tjvmer.js → zoom-Bheyn_9H.js} +1 -1
  145. package/src/assets/web-panel/index.html +1 -1
  146. package/src/commands/__tests__/hub-health.test.js +105 -0
  147. package/src/commands/__tests__/hub-stats.test.js +106 -0
  148. package/src/commands/hub.js +111 -32
  149. package/src/gateways/ws/personal-data-hub-protocol.js +16 -3
  150. package/src/lib/__tests__/pdh-wiring-load-error.test.js +59 -0
  151. package/src/lib/personal-data-hub-wiring.js +182 -7
  152. package/src/assets/web-panel/assets/PdhVaultBrowser-BHUi1nb5.js +0 -7
  153. package/src/assets/web-panel/assets/Terminal-DrG0bEOS.js +0 -3
  154. package/src/assets/web-panel/assets/devWarning-Daz0PHhS.js +0 -1
  155. package/src/assets/web-panel/assets/index-Cbe_eJAR.js +0 -1
  156. package/src/assets/web-panel/assets/index-DgcPjW1c.js +0 -1
@@ -1,4 +1,4 @@
1
- import{K as n}from"./index-CEO9vhv7.js";import{i as e}from"./motion-DnOI85ek.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),{[`
1
+ import{K as n}from"./index-5-fynKGl.js";import{i as e}from"./motion-6cQjBgS8.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-CEO9vhv7.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
+ import{i as e}from"./index-5-fynKGl.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-CEO9vhv7.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};
1
+ import{A as d}from"./index-5-fynKGl.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};
@@ -1 +1 @@
1
- import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-Dtw5lUcs.js";const r=(()=>{const e=t(!1);return o(()=>{e.value=s()}),e});export{r as u};
1
+ import{o,s as t}from"./vendor-BvqAck49.js";import{d as s}from"./styleChecker-BK22ABVM.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-CEO9vhv7.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
+ import{u as d}from"./index-5-fynKGl.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-CEO9vhv7.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
+ import{u as f}from"./index-5-fynKGl.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-CEO9vhv7.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
+ import{M as i,h as a,w as l}from"./index-5-fynKGl.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-CEO9vhv7.js";import{i as f}from"./motion-DnOI85ek.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),{[`
1
+ import{K as o}from"./index-5-fynKGl.js";import{i as f}from"./motion-6cQjBgS8.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-CEO9vhv7.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-5-fynKGl.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">
@@ -0,0 +1,105 @@
1
+ /**
2
+ * `cc hub health` — focused unit tests for the --quick (minimal hub) path.
3
+ *
4
+ * Why this test exists: `cc hub health` defaults to the FULL hub because its
5
+ * job is to verify hub init wired every component (llm / kgSink / ragSink) —
6
+ * a minimal hub leaves those null on purpose, so reporting them as down would
7
+ * be a false negative, not a faster check. `--quick` opts into a vault-only
8
+ * probe on the minimal hub (skips the 77-adapter registry + sink wiring) and
9
+ * must mark the other components "not probed" rather than failing them. If
10
+ * that distinction regresses, `--quick` would either go slow again or start
11
+ * lying about component health. This suite is the canary.
12
+ *
13
+ * Uses the `_getHub` injection seam — no real vault / no spinner side effects.
14
+ */
15
+
16
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
17
+ import { _internal } from "../hub.js";
18
+
19
+ const { cmdHealth } = _internal;
20
+
21
+ let exitSpy, logSpy, out;
22
+
23
+ beforeEach(() => {
24
+ exitSpy = vi.spyOn(process, "exit").mockImplementation(() => {});
25
+ out = [];
26
+ logSpy = vi.spyOn(console, "log").mockImplementation((...args) => {
27
+ out.push(args.join(" "));
28
+ });
29
+ });
30
+
31
+ afterEach(() => {
32
+ exitSpy.mockRestore();
33
+ logSpy.mockRestore();
34
+ });
35
+
36
+ function fullHub() {
37
+ return {
38
+ minimal: false,
39
+ vault: { db: {}, schemaVersion: () => 4 },
40
+ llm: { name: "ollama:qwen2.5", isLocal: true },
41
+ kgSink: {},
42
+ ragSink: {},
43
+ };
44
+ }
45
+
46
+ function minimalHub() {
47
+ return {
48
+ minimal: true,
49
+ vault: { db: {}, schemaVersion: () => 4 },
50
+ llm: null,
51
+ kgSink: null,
52
+ ragSink: null,
53
+ };
54
+ }
55
+
56
+ function parseJson() {
57
+ return JSON.parse(out.join("\n"));
58
+ }
59
+
60
+ describe("cc hub health — default (full) vs --quick (minimal)", () => {
61
+ it("default probes all four components with real ok states", async () => {
62
+ const stub = vi.fn(async () => fullHub());
63
+ await cmdHealth({ json: true, _getHub: stub });
64
+ const o = parseJson();
65
+ expect(stub).toHaveBeenCalledTimes(1);
66
+ expect(o.quick).toBe(false);
67
+ expect(o.vault.ok).toBe(true);
68
+ expect(o.vault.schemaVersion).toBe(4);
69
+ expect(o.llm).toEqual({ ok: true, isLocal: true, name: "ollama:qwen2.5" });
70
+ expect(o.kgSink).toEqual({ ok: true });
71
+ expect(o.ragSink).toEqual({ ok: true });
72
+ });
73
+
74
+ it("--quick reports vault only; llm/kgSink/ragSink marked not probed (NOT down)", async () => {
75
+ await cmdHealth({
76
+ json: true,
77
+ quick: true,
78
+ _getHub: async () => minimalHub(),
79
+ });
80
+ const o = parseJson();
81
+ expect(o.quick).toBe(true);
82
+ expect(o.vault.ok).toBe(true);
83
+ // The key correctness property: not-probed, never { ok: false }.
84
+ expect(o.llm).toEqual({ probed: false });
85
+ expect(o.kgSink).toEqual({ probed: false });
86
+ expect(o.ragSink).toEqual({ probed: false });
87
+ expect(o.llm.ok).toBeUndefined();
88
+ });
89
+
90
+ it("--quick human output notes the skipped components", async () => {
91
+ await cmdHealth({ quick: true, _getHub: async () => minimalHub() });
92
+ const text = out.join("\n");
93
+ expect(text).toMatch(/vault\s+schema=4/);
94
+ expect(text).toContain("not probed");
95
+ expect(text).toContain("--quick");
96
+ });
97
+
98
+ it("default human output lists llm/kgSink/ragSink", async () => {
99
+ await cmdHealth({ _getHub: async () => fullHub() });
100
+ const text = out.join("\n");
101
+ expect(text).toContain("llm");
102
+ expect(text).toContain("kgSink");
103
+ expect(text).toContain("ragSink");
104
+ });
105
+ });
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `cc hub stats` — focused unit tests for the minimal-vs-full hub selection.
3
+ *
4
+ * Why this test exists: `cc hub stats` defaults to the MINIMAL hub so a quick
5
+ * "how many rows do I have" check doesn't pay to instantiate the full
6
+ * 77-adapter registry + KG/RAG sinks + email-account auto-load. The adapter
7
+ * list + resolved LLM are only built when the caller passes `--full` (or via
8
+ * the standalone `cc hub list-adapters`). If that wiring regresses, every
9
+ * `cc hub stats` call silently goes back to a slow full-hub init. This suite
10
+ * is the canary.
11
+ *
12
+ * Uses the `_getHub` injection seam — no real vault / no spinner side effects.
13
+ */
14
+
15
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
16
+ import { _internal } from "../hub.js";
17
+
18
+ const { cmdStats } = _internal;
19
+
20
+ let exitSpy, logSpy, jsonOut;
21
+
22
+ beforeEach(() => {
23
+ exitSpy = vi.spyOn(process, "exit").mockImplementation(() => {});
24
+ jsonOut = [];
25
+ logSpy = vi.spyOn(console, "log").mockImplementation((...args) => {
26
+ jsonOut.push(args.join(" "));
27
+ });
28
+ });
29
+
30
+ afterEach(() => {
31
+ exitSpy.mockRestore();
32
+ logSpy.mockRestore();
33
+ });
34
+
35
+ function minimalHub() {
36
+ return {
37
+ minimal: true,
38
+ hubDir: "/tmp/hub",
39
+ vault: {
40
+ stats: () => ({ events: 3, persons: 1, places: 0, items: 6, topics: 2 }),
41
+ },
42
+ registry: null,
43
+ llm: null,
44
+ };
45
+ }
46
+
47
+ function fullHub() {
48
+ return {
49
+ minimal: false,
50
+ hubDir: "/tmp/hub",
51
+ vault: {
52
+ stats: () => ({ events: 3, persons: 1, places: 0, items: 6, topics: 2 }),
53
+ },
54
+ registry: {
55
+ list: () => [
56
+ { name: "wechat", version: "0.1.0" },
57
+ { name: "email-imap", version: "0.2.0" },
58
+ ],
59
+ },
60
+ llm: { name: "ollama:qwen2.5", isLocal: true },
61
+ };
62
+ }
63
+
64
+ function parseJson() {
65
+ return JSON.parse(jsonOut.join("\n"));
66
+ }
67
+
68
+ describe("cc hub stats — minimal vs full hub selection", () => {
69
+ it("default (no --full) builds the MINIMAL hub: null adapters, minimal flag", async () => {
70
+ const stub = vi.fn(async () => minimalHub());
71
+ await cmdStats({ json: true, _getHub: stub });
72
+ const out = parseJson();
73
+ expect(stub).toHaveBeenCalledTimes(1);
74
+ expect(out.minimal).toBe(true);
75
+ expect(out.adapters).toBeNull();
76
+ expect(out.llm).toBeNull();
77
+ expect(out.vault.items).toBe(6);
78
+ expect(out.hubDir).toBe("/tmp/hub");
79
+ });
80
+
81
+ it("--full builds the full hub: adapters listed, llm resolved, minimal false", async () => {
82
+ const stub = vi.fn(async () => fullHub());
83
+ await cmdStats({ json: true, full: true, _getHub: stub });
84
+ const out = parseJson();
85
+ expect(out.minimal).toBe(false);
86
+ expect(Array.isArray(out.adapters)).toBe(true);
87
+ expect(out.adapters).toHaveLength(2);
88
+ expect(out.llm).toEqual({ name: "ollama:qwen2.5", isLocal: true });
89
+ });
90
+
91
+ it("human (non-JSON) minimal output points to --full / list-adapters", async () => {
92
+ await cmdStats({ _getHub: async () => minimalHub() });
93
+ const text = jsonOut.join("\n");
94
+ expect(text).toMatch(/events:\s+3/);
95
+ expect(text).toContain("cc hub list-adapters");
96
+ expect(text).toContain("cc hub stats --full");
97
+ });
98
+
99
+ it("human full output lists adapter names + versions", async () => {
100
+ await cmdStats({ full: true, _getHub: async () => fullHub() });
101
+ const text = jsonOut.join("\n");
102
+ expect(text).toContain("adapters (2)");
103
+ expect(text).toContain("wechat");
104
+ expect(text).toContain("email-imap");
105
+ });
106
+ });
@@ -173,12 +173,28 @@ async function cmdRetrieveContext(question, options) {
173
173
 
174
174
  async function cmdStats(options) {
175
175
  try {
176
- const hub = await getHub();
176
+ // Default to the minimal hub: stats' core payload (vault row counts +
177
+ // hubDir) only needs the vault, so the full 77-adapter registry + KG/RAG
178
+ // sinks + email-account auto-load is wasted work for a quick `cc hub
179
+ // stats`. Pass --full to also list registered adapters and the resolved
180
+ // LLM, which require the full hub init. (The adapter list is also
181
+ // available standalone via `cc hub list-adapters`.) getHubMinimal()
182
+ // transparently returns the full hub if one was already built this
183
+ // process, so --full is only needed on a cold stats call. Tests stub
184
+ // via _getHub.
185
+ const wantFull = options.full === true;
186
+ const hub = options._getHub
187
+ ? await options._getHub()
188
+ : wantFull
189
+ ? await getHub()
190
+ : await getHubMinimal();
191
+ const adapters = hub.registry ? hub.registry.list() : null;
177
192
  const out = {
178
193
  vault: hub.vault.stats(),
179
- adapters: hub.registry.list(),
194
+ adapters,
180
195
  hubDir: hub.hubDir,
181
196
  llm: hub.llm ? { name: hub.llm.name, isLocal: hub.llm.isLocal } : null,
197
+ minimal: !!hub.minimal,
182
198
  };
183
199
  if (options.json) {
184
200
  printJson(out);
@@ -190,9 +206,17 @@ async function cmdStats(options) {
190
206
  logger.log(` places: ${v.places}`);
191
207
  logger.log(` items: ${v.items}`);
192
208
  logger.log(` topics: ${v.topics}`);
193
- logger.log(chalk.bold(`\nadapters (${out.adapters.length}):`));
194
- for (const a of out.adapters) {
195
- logger.log(` ${chalk.cyan(a.name)} v${a.version}`);
209
+ if (out.adapters) {
210
+ logger.log(chalk.bold(`\nadapters (${out.adapters.length}):`));
211
+ for (const a of out.adapters) {
212
+ logger.log(` ${chalk.cyan(a.name)} v${a.version}`);
213
+ }
214
+ } else {
215
+ logger.log(
216
+ chalk.gray(
217
+ "\nadapters: (run `cc hub stats --full` or `cc hub list-adapters`)",
218
+ ),
219
+ );
196
220
  }
197
221
  logger.log(chalk.gray(`\nhubDir: ${out.hubDir}`));
198
222
  if (out.llm) {
@@ -200,6 +224,8 @@ async function cmdStats(options) {
200
224
  ? chalk.green("[local]")
201
225
  : chalk.yellow("[remote]");
202
226
  logger.log(chalk.gray(`llm: ${out.llm.name} ${tag}`));
227
+ } else if (out.minimal) {
228
+ logger.log(chalk.gray("llm: (run `cc hub stats --full` to resolve)"));
203
229
  } else {
204
230
  logger.log(chalk.yellow("llm: (none)"));
205
231
  }
@@ -213,18 +239,39 @@ async function cmdStats(options) {
213
239
 
214
240
  async function cmdHealth(options) {
215
241
  try {
216
- const hub = await getHub();
242
+ // Full hub is the default: health's whole job is verifying that hub init
243
+ // wired every component (llm / kgSink / ragSink), which a minimal hub
244
+ // deliberately leaves null — reporting those as ✗ would be a false
245
+ // negative, not a faster check. `--quick` opts into a vault-only probe
246
+ // on the minimal hub (skips the 77-adapter registry + sink wiring) for
247
+ // when you just need "is the vault openable / what schema". Tests stub
248
+ // via _getHub.
249
+ const quick = options.quick === true;
250
+ const hub = options._getHub
251
+ ? await options._getHub()
252
+ : quick
253
+ ? await getHubMinimal()
254
+ : await getHub();
217
255
  const out = {
256
+ quick,
218
257
  vault: {
219
258
  ok: !!hub.vault.db,
220
259
  schemaVersion: hub.vault.schemaVersion(),
221
260
  },
222
- llm: hub.llm
223
- ? { ok: true, isLocal: hub.llm.isLocal, name: hub.llm.name }
224
- : { ok: false, reason: "LLM unavailable" },
225
- kgSink: { ok: !!hub.kgSink },
226
- ragSink: { ok: !!hub.ragSink },
227
261
  };
262
+ if (quick) {
263
+ // Minimal hub intentionally has no llm / kgSink / ragSink — mark them
264
+ // "not probed" rather than reporting a misleading down state.
265
+ out.llm = { probed: false };
266
+ out.kgSink = { probed: false };
267
+ out.ragSink = { probed: false };
268
+ } else {
269
+ out.llm = hub.llm
270
+ ? { ok: true, isLocal: hub.llm.isLocal, name: hub.llm.name }
271
+ : { ok: false, reason: "LLM unavailable" };
272
+ out.kgSink = { ok: !!hub.kgSink };
273
+ out.ragSink = { ok: !!hub.ragSink };
274
+ }
228
275
  if (options.json) {
229
276
  printJson(out);
230
277
  } else {
@@ -232,17 +279,25 @@ async function cmdHealth(options) {
232
279
  logger.log(
233
280
  `${mark(out.vault.ok)} vault schema=${out.vault.schemaVersion}`,
234
281
  );
235
- logger.log(
236
- `${mark(out.llm.ok)} llm ${out.llm.name || out.llm.reason}${
237
- out.llm.ok
238
- ? out.llm.isLocal
239
- ? chalk.green(" [local]")
240
- : chalk.yellow(" [remote]")
241
- : ""
242
- }`,
243
- );
244
- logger.log(`${mark(out.kgSink.ok)} kgSink`);
245
- logger.log(`${mark(out.ragSink.ok)} ragSink`);
282
+ if (quick) {
283
+ logger.log(
284
+ chalk.gray(
285
+ llm / kgSink / ragSink not probed (run without --quick)",
286
+ ),
287
+ );
288
+ } else {
289
+ logger.log(
290
+ `${mark(out.llm.ok)} llm ${out.llm.name || out.llm.reason}${
291
+ out.llm.ok
292
+ ? out.llm.isLocal
293
+ ? chalk.green(" [local]")
294
+ : chalk.yellow(" [remote]")
295
+ : ""
296
+ }`,
297
+ );
298
+ logger.log(`${mark(out.kgSink.ok)} kgSink`);
299
+ logger.log(`${mark(out.ragSink.ok)} ragSink`);
300
+ }
246
301
  }
247
302
  } catch (err) {
248
303
  fail(null, err, options.json);
@@ -468,7 +523,11 @@ async function cmdRederive(options) {
468
523
 
469
524
  async function cmdQueryEvents(options) {
470
525
  try {
471
- const hub = await getHub();
526
+ // Read-only vault query — needs no adapters / sinks / llm. Minimal hub
527
+ // skips the 77-adapter registry build (and is crash-resilient to a
528
+ // partial pdh install). getHubMinimal() returns the full hub if one was
529
+ // already built this process, so the vault instance is identical.
530
+ const hub = await getHubMinimal();
472
531
  const q = {};
473
532
  if (options.subtype) q.subtype = options.subtype;
474
533
  if (options.since) q.since = Number(options.since);
@@ -528,7 +587,8 @@ function importEventsInto(vault, events) {
528
587
  imported += 1;
529
588
  } catch (e) {
530
589
  failed += 1;
531
- if (errors.length < 10) errors.push({ id: ev && ev.id, error: e.message });
590
+ if (errors.length < 10)
591
+ errors.push({ id: ev && ev.id, error: e.message });
532
592
  }
533
593
  }
534
594
  return { ok: failed === 0, imported, failed, errors };
@@ -536,7 +596,8 @@ function importEventsInto(vault, events) {
536
596
 
537
597
  async function cmdExportEvents(options) {
538
598
  try {
539
- const hub = await (options._getHub || getHub)();
599
+ // Vault-only raw-event export no adapters needed, use the minimal hub.
600
+ const hub = await (options._getHub || getHubMinimal)();
540
601
  const all = exportAllEvents(hub.vault);
541
602
  if (options.output) {
542
603
  require("fs").writeFileSync(options.output, JSON.stringify(all), "utf-8");
@@ -566,7 +627,8 @@ async function cmdImportEvents(options) {
566
627
  if (!Array.isArray(events)) {
567
628
  throw new Error("import-events: expected a JSON array of events");
568
629
  }
569
- const hub = await (options._getHub || getHub)();
630
+ // Vault-only idempotent upsert no adapters needed, use the minimal hub.
631
+ const hub = await (options._getHub || getHubMinimal)();
570
632
  const result = importEventsInto(hub.vault, events);
571
633
  if (options.json) {
572
634
  jsonAndExit(result);
@@ -585,7 +647,8 @@ async function cmdImportEvents(options) {
585
647
  // (Android LocalCcRunner.searchEvents calls this; CI smoke too).
586
648
  async function cmdSearchEvents(options) {
587
649
  try {
588
- const hub = await getHub();
650
+ // Read-only vault FTS search — vault-only, use the minimal hub.
651
+ const hub = await getHubMinimal();
589
652
  const q = {};
590
653
  if (options.q) q.q = String(options.q);
591
654
  if (options.adapter) q.adapter = options.adapter;
@@ -628,7 +691,8 @@ async function cmdSearchEvents(options) {
628
691
 
629
692
  async function cmdFacetCounts(options) {
630
693
  try {
631
- const hub = await getHub();
694
+ // Read-only vault facet aggregation — vault-only, use the minimal hub.
695
+ const hub = await getHubMinimal();
632
696
  const q = {};
633
697
  if (options.q) q.q = String(options.q);
634
698
  if (options.since) q.since = Number(options.since);
@@ -657,7 +721,8 @@ async function cmdFacetCounts(options) {
657
721
 
658
722
  async function cmdRecentAudit(options) {
659
723
  try {
660
- const hub = await getHub();
724
+ // Read-only vault audit log query — vault-only, use the minimal hub.
725
+ const hub = await getHubMinimal();
661
726
  const q = {};
662
727
  if (options.since) q.since = Number(options.since);
663
728
  if (options.action) q.action = options.action;
@@ -722,7 +787,8 @@ async function cmdEventDetail(eventId, options) {
722
787
  process.exit(1);
723
788
  }
724
789
  try {
725
- const hub = await getHub();
790
+ // Read-only single-event lookup — vault-only, use the minimal hub.
791
+ const hub = await getHubMinimal();
726
792
  const event = hub.vault.getEvent(eventId);
727
793
  if (!event) {
728
794
  const result = { found: false, eventId };
@@ -774,7 +840,8 @@ async function cmdExport(options) {
774
840
  try {
775
841
  const fs = await import("node:fs");
776
842
  const path = await import("node:path");
777
- const hub = await getHub();
843
+ // Vault-file snapshot copy — vault-only, use the minimal hub.
844
+ const hub = await getHubMinimal();
778
845
  const src = hub.vault.path;
779
846
  if (!src) throw new Error("vault path unavailable (hub not initialized?)");
780
847
 
@@ -2606,14 +2673,24 @@ export function registerHubCommand(program) {
2606
2673
 
2607
2674
  hub
2608
2675
  .command("stats")
2609
- .description("Vault row counts + registered adapter list + hub paths")
2676
+ .description(
2677
+ "Vault row counts + hub paths (use --full to also list adapters + LLM)",
2678
+ )
2610
2679
  .option("--json", "Output JSON")
2680
+ .option(
2681
+ "--full",
2682
+ "Include registered adapter list + resolved LLM (loads the full hub)",
2683
+ )
2611
2684
  .action(cmdStats);
2612
2685
 
2613
2686
  hub
2614
2687
  .command("health")
2615
2688
  .description("Component health: vault / llm / kgSink / ragSink")
2616
2689
  .option("--json", "Output JSON")
2690
+ .option(
2691
+ "--quick",
2692
+ "Vault-only probe via the minimal hub (skips llm/kgSink/ragSink wiring)",
2693
+ )
2617
2694
  .action(cmdHealth);
2618
2695
 
2619
2696
  hub
@@ -3175,6 +3252,8 @@ export function registerHubCommand(program) {
3175
3252
  export const _internal = {
3176
3253
  cmdAsk,
3177
3254
  cmdRetrieveContext,
3255
+ cmdStats,
3256
+ cmdHealth,
3178
3257
  parsePositiveInt,
3179
3258
  cmdAIChatList,
3180
3259
  cmdAIChatLogin,
@@ -30,9 +30,22 @@ import {
30
30
  writeFileSync,
31
31
  } from "node:fs";
32
32
  import { join } from "node:path";
33
- import pdhPkg from "@chainlesschain/personal-data-hub";
34
-
35
- const { ingestSystemDataAndroidSnapshot } = pdhPkg;
33
+ // Lazily import the pdh package the first time the system-data-android
34
+ // ingest topic is actually used. This module is pulled in by the
35
+ // agent/chat/serve/ui runtime chain at startup (ws-server →
36
+ // message-dispatcher → here), so a top-level static import would force the
37
+ // whole pdh graph to load on every `cc` invocation — and a partial/corrupt
38
+ // pdh install would brick unrelated commands. See the matching rationale in
39
+ // personal-data-hub-wiring.js.
40
+ let _ingestSnapshotFn = null;
41
+ async function ingestSystemDataAndroidSnapshot(hub, snapshot) {
42
+ if (!_ingestSnapshotFn) {
43
+ const pdhMod = await import("@chainlesschain/personal-data-hub");
44
+ const pdhPkg = pdhMod.default || pdhMod;
45
+ _ingestSnapshotFn = pdhPkg.ingestSystemDataAndroidSnapshot;
46
+ }
47
+ return _ingestSnapshotFn(hub, snapshot);
48
+ }
36
49
 
37
50
  /**
38
51
  * If the caller didn't pass `inputPath`, try to pull a snapshot for