chainlesschain 0.162.113 → 0.162.115
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-C31IEALR.js → AIOps-Co3Wa2si.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CAoIkNY6.js → ActionButton-CLu_iLWH.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BofSQQzg.js → Analytics-BZM53XMx.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C2dIYNTH.js → AppLayout-BvWMuVj5.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-BXaDbU7P.js → Audit-LnZR0-SB.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BTfBqsmK.js → Backup-m1_KWvdD.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-B_ak0VMO.js → BaseInput-DCOyDzK5.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BhcN6up6.js → Chat-BxctrF91.js} +3 -3
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-D0dZVHhx.js → ChatBubbleRenderer-Cr-ifTsG.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-CjT0jj8Z.js → Checkbox-CiI-q7XC.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CzLTeJlc.js → Codegen-Bs5RpmWs.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CiOd4VCk.js → Col-By1dCa5E.js} +1 -1
- package/src/assets/web-panel/assets/{Community-MDcN43_I.js → Community-WuZZQrIQ.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BlP5PKNl.js → Compact-Bgjv17zY.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DQYF00Cq.js → Compliance-CANmPNTe.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BOSrQFS0.js → Cowork-B5vtDpAA.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-C0Htgg3F.js → Cron-CD1EDrV4.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BuLRkpY3.js → Crosschain-C8VDvGgO.js} +1 -1
- package/src/assets/web-panel/assets/{DID-N3E4UBEh.js → DID-DpZV0N2H.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BB8JTDyU.js → Dashboard-NhU8jHSF.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Dua4QX4R.js → Dropdown-D-r8yZE9.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Cj26sbeq.js → EmailListRenderer-DG89eV-l.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-TwiOlWAm.js → FamilyGuardDashboard-G-b864Cs.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CeGFlymx.js → Federation-yBmOj1ob.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-lrtJ7VdL.js → FormItemContext-Cb7_kwNJ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CSPy6cv0.js → GenericCardRenderer-DH-hOAyY.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C9V804Um.js → Git-DsxDUo_n.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BCRg6szw.js → Governance-9tswXx9m.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-0DjHobMq.js → Inference-BBp_JKRI.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CKzlkXzc.js → KnowledgeGraph-Dh1Hy3KR.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BgzswcOA.js → Logs-B4dKW6iL.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DXBTxAMo.js → Marketplace-BwG7IJMb.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CvzNbZys.js → McpTools-Bkem_Aad.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BbBmqtPo.js → Memory--XBiW9hE.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BpL2BNXG.js → MobileBridge-Cw3bfWS4.js} +2 -2
- package/src/assets/web-panel/assets/MobileProjects-DxtImZQU.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-DQu3Arm_.js → Mtc-BGF20OtO.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-DbswMnGL.js → MtcAudit-D7z4gsQ5.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-BJWojM4Z.js → Multisig-yXwos6j_.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Cb60ScpP.js → NLProgramming-CDHJQX6y.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CzoE6dCZ.js → Notes-D39k9gda.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-BZXqrg-J.js → NotificationSettings-DRPq8tRI.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BxAKnbfD.js → OrderTableRenderer-D2hEsaLV.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BoTaL8pl.js → Organization--o8Lvsg2.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-CAzqg4k3.js → Overflow-D2ohI9Qx.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CgzJoBIr.js → P2P-2c8cEXWp.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Cfaa63CB.js → PdhVaultBrowser-D7NaNkzj.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DxUeh680.js → Permissions-ypORwVpA.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-S-H5XNNn.js → PersonalDataHub-CwGL8rYc.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-BjrADxSK.js → Pipeline-sOxtzc6E.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DYsdMxlQ.js → Privacy-DQn-uEJl.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CUzdaYx1.js → ProjectInit-8C5fy5dR.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DFnmFlpD.js → ProjectSettings-CX_i2PB9.js} +2 -2
- package/src/assets/web-panel/assets/Projects-CHTItBCE.js +1 -0
- package/src/assets/web-panel/assets/{Providers-Cpm9BlNl.js → Providers-hTVigloe.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DjBFjSUh.js → QuickAsk-BqHj37NO.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-EVTMMe1P.js → Recommend-W6Fz6lz7.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-Botbv7S3.js → Reputation-BgEa2pxb.js} +1 -1
- package/src/assets/web-panel/assets/{Row-C3Nz28W3.js → Row-DyIFWI6T.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CjiBjWeF.js → RssFeed-CEYCVpMw.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DlsyX5fR.js → Search-zVLBmQ7o.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CZhHoMdL.js → Security-CqsG8Ps9.js} +2 -2
- package/src/assets/web-panel/assets/{Services-D_Bnic0O.js → Services-BfBS_Jgz.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CiZvE330.js → Skeleton-Soo_Vk86.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CKVqtO-U.js → Skills-PuZUk7l4.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-BInnM5w6.js → Sla-CyXFxluF.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-QnJOhSa-.js → SpeechSettings-Bix3Aslu.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CVpEDGPv.js → SyncSettings-CIpNxBVI.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DjpSdKoQ.js → Tasks-S3P_gUGK.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DAs7hSZn.js → Templates-ApPjFp6V.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-fbZFofRo.js → Tenant-CA39QBQx.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-7PpJ-714.js → Terminal-CZCQVy4D.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-KQuaMPPO.js → TimelineRenderer-BH_bLWth.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-co0lrUd8.js → Tokens-CnM7BBQo.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DGu6KG0U.js → Trigger-BaTkvjag.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DxcBRMa0.js → Trust-BL5_D9F2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-BmIm0kl6.js → UkeySign-RL5tPg28.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-D2_w5mGi.js → VideoEditing-DpziQ6j6.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BHAaiE8X.js → Wallet-C5TJX6y1.js} +2 -2
- package/src/assets/web-panel/assets/{WebAuthn-CRtrKFSh.js → WebAuthn-BRmIn8F_.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-DjrhTXw-.js → WorkflowEditor-Dcq3e-ik.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DDCMxp1K.js → chat-CIxM8WKc.js} +1 -1
- package/src/assets/web-panel/assets/{colors--4_xSbq4.js → colors-C4KulwfK.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DUz7Nnrf.js → compact-item-BuSPdvu3.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C6hgEA6P.js → createContext-DnkNir9Q.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CMQKGI8R.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DLsr5ccI.js → hasIn-Cf4nLc1Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-DVTlvsAd.js → index-2EWeBL-U.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ba-1vjJD.js → index-B0Mg9TNh.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0MclIlp.js → index-BKxfssGi.js} +1 -1
- package/src/assets/web-panel/assets/{index-kB6cCYAK.js → index-BSSHH2wV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CORbX-su.js → index-BhJdIewr.js} +1 -1
- package/src/assets/web-panel/assets/{index-C0edasoI.js → index-BiSVvB5h.js} +1 -1
- package/src/assets/web-panel/assets/{index-nhe7lwfU.js → index-BixeTMRH.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dts1rdrh.js → index-BkuD99JZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgVCtv2i.js → index-Bxrdsatm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWQ4A_ig.js → index-Bz60EXNV.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cdx5wAKy.js → index-C3K7gFx4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCBU-dhE.js → index-CBAXN3jR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BrAktVfD.js → index-CIMAqOlD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bf2UWwla.js → index-CWDu1oDR.js} +1 -1
- package/src/assets/web-panel/assets/{index-CfWjCIeD.js → index-CZrWQUeU.js} +1 -1
- package/src/assets/web-panel/assets/{index-UcbyVEUR.js → index-Ch5ijBA1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvBVv_y6.js → index-ClY2B2K3.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPVk2Aef.js → index-Cq1Fi_sP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DuMSr7qB.js → index-CrjJWis4.js} +1 -1
- package/src/assets/web-panel/assets/index-D1b1GHRk.js +1 -0
- package/src/assets/web-panel/assets/{index-Dzr4dwNg.js → index-D6_QgZN5.js} +1 -1
- package/src/assets/web-panel/assets/{index-B98uRfVY.js → index-DGVc7PRP.js} +1 -1
- package/src/assets/web-panel/assets/index-DGZzQZUz.js +1 -0
- package/src/assets/web-panel/assets/{index-5S59MN5w.js → index-DLj6Tgel.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_HoZFWD.js → index-DUZ5Kool.js} +1 -1
- package/src/assets/web-panel/assets/{index-VW4mGJ0g.js → index-DXmlFKkG.js} +1 -1
- package/src/assets/web-panel/assets/{index-ZzZ7sUbw.js → index-DdA5Ua1b.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTB3o-AG.js → index-DeMVCFm4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZRi_BiL.js → index-DeV7mBjK.js} +1 -1
- package/src/assets/web-panel/assets/{index-CrC3Z0wT.js → index-DjRLVmY5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BKs7IQEb.js → index-Djm5GtZl.js} +1 -1
- package/src/assets/web-panel/assets/{index-DtjUgB7B.js → index-DlHHHyRx.js} +3 -3
- package/src/assets/web-panel/assets/{index-DO4JBw2m.js → index-DyWheeVw.js} +1 -1
- package/src/assets/web-panel/assets/{index-CS0DcLLe.js → index-E9E5_8nm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmMDr432.js → index-EdjA-3Bc.js} +1 -1
- package/src/assets/web-panel/assets/{index-x59Oik1J.js → index-LeyWnzub.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQfBPPHG.js → index-N1ncDYAO.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0qel7OZ.js → index-xUqyfQDD.js} +1 -1
- package/src/assets/web-panel/assets/{index-zwI19UuK.js → index-yzjY8Axn.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CPyHDtDC.js → initDefaultProps--8dT0H6B.js} +1 -1
- package/src/assets/web-panel/assets/{motion-Blq36u4Y.js → motion-D90Oz3kN.js} +1 -1
- package/src/assets/web-panel/assets/{move-HuAtMUkO.js → move-CXTvl7NU.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CVMoOx32.js → omit-0trPxlmr.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BunNS-fj.js → pickAttrs-CgAAFR7h.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Eg_eS8OF.js → placementArrow-CS-hpoJS.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BiU0qt8R.js → responsiveObserve-9S3fBAtz.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BZfRWEJu.js → slide-B-R8yXs_.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-j5payJ2P.js → statusUtils-DQiprWuZ.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker--CNWRiiz.js → styleChecker-02H_AFJW.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BtY8OW_f.js → useFlexGapSupport-9DGfLuf2.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CL-bgDIB.js → useFs-CrPyzwar.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BEjDzvTR.js → usePersonalDataHub-BeLgaZq9.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-B3IodNFs.js → vnode-Cln6ZUUD.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DvLt_owF.js → zoom-BauTGPPs.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/audit.js +21 -3
- package/src/commands/browse.js +18 -3
- package/src/commands/compliance.js +7 -1
- package/src/commands/cost.js +9 -1
- package/src/commands/hub.js +49 -4
- package/src/lib/git-integration.js +8 -2
- package/src/lib/hub-llm-client.js +305 -0
- package/src/lib/personal-data-hub-wiring.js +20 -4
- package/src/assets/web-panel/assets/MobileProjects-R_zFuemA.js +0 -1
- package/src/assets/web-panel/assets/Projects-GOQqdP4u.js +0 -1
- package/src/assets/web-panel/assets/devWarning-qzaZtWgD.js +0 -1
- package/src/assets/web-panel/assets/index-BFKz8uJQ.js +0 -1
- package/src/assets/web-panel/assets/index-lhIs6Z78.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as n}from"./index-
|
|
1
|
+
import{K as n}from"./index-DlHHHyRx.js";import{i as e}from"./motion-D90Oz3kN.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-DlHHHyRx.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-DlHHHyRx.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-BtY8OW_f.js → useFlexGapSupport-9DGfLuf2.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-02H_AFJW.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-DlHHHyRx.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-DlHHHyRx.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-DlHHHyRx.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-DlHHHyRx.js";import{i as f}from"./motion-D90Oz3kN.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-DlHHHyRx.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/audit.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import fs from "fs";
|
|
8
8
|
import { logger } from "../lib/logger.js";
|
|
9
|
+
import { numericOption } from "../lib/cli-numeric.js";
|
|
9
10
|
import { parseJsonOption } from "../lib/parse-json-option.js";
|
|
10
11
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
11
12
|
import { getHomeDir } from "../lib/paths.js";
|
|
@@ -104,7 +105,12 @@ export function registerAuditCommand(program) {
|
|
|
104
105
|
const db = ctx.db.getDatabase();
|
|
105
106
|
|
|
106
107
|
const filters = {
|
|
107
|
-
limit:
|
|
108
|
+
limit: numericOption(options.limit, {
|
|
109
|
+
name: "--limit",
|
|
110
|
+
integer: true,
|
|
111
|
+
min: 0,
|
|
112
|
+
fallback: 20,
|
|
113
|
+
}),
|
|
108
114
|
};
|
|
109
115
|
if (options.type) filters.eventType = options.type;
|
|
110
116
|
if (options.risk) filters.riskLevel = options.risk;
|
|
@@ -152,7 +158,12 @@ export function registerAuditCommand(program) {
|
|
|
152
158
|
|
|
153
159
|
const filters = {
|
|
154
160
|
search: query,
|
|
155
|
-
limit:
|
|
161
|
+
limit: numericOption(options.limit, {
|
|
162
|
+
name: "--limit",
|
|
163
|
+
integer: true,
|
|
164
|
+
min: 0,
|
|
165
|
+
fallback: 50,
|
|
166
|
+
}),
|
|
156
167
|
};
|
|
157
168
|
if (options.type) filters.eventType = options.type;
|
|
158
169
|
if (options.risk) filters.riskLevel = options.risk;
|
|
@@ -250,7 +261,14 @@ export function registerAuditCommand(program) {
|
|
|
250
261
|
}
|
|
251
262
|
const db = ctx.db.getDatabase();
|
|
252
263
|
|
|
253
|
-
const filters = {
|
|
264
|
+
const filters = {
|
|
265
|
+
limit: numericOption(options.limit, {
|
|
266
|
+
name: "--limit",
|
|
267
|
+
integer: true,
|
|
268
|
+
min: 0,
|
|
269
|
+
fallback: 10000,
|
|
270
|
+
}),
|
|
271
|
+
};
|
|
254
272
|
if (options.from) filters.startDate = options.from;
|
|
255
273
|
if (options.to) filters.endDate = options.to;
|
|
256
274
|
|
package/src/commands/browse.js
CHANGED
|
@@ -108,7 +108,12 @@ export function registerBrowseCommand(program) {
|
|
|
108
108
|
const elements = querySelectorAll(result.html, options.selector);
|
|
109
109
|
spinner.stop();
|
|
110
110
|
|
|
111
|
-
const limit =
|
|
111
|
+
const limit = numericOption(options.limit, {
|
|
112
|
+
name: "--limit",
|
|
113
|
+
integer: true,
|
|
114
|
+
min: 0,
|
|
115
|
+
fallback: 20,
|
|
116
|
+
});
|
|
112
117
|
const limited = elements.slice(0, limit);
|
|
113
118
|
|
|
114
119
|
if (options.json) {
|
|
@@ -163,8 +168,18 @@ export function registerBrowseCommand(program) {
|
|
|
163
168
|
try {
|
|
164
169
|
const spinner = ora(`Taking screenshot of ${url}...`).start();
|
|
165
170
|
const result = await takeScreenshot(url, options.output, {
|
|
166
|
-
width: numericOption(options.width, {
|
|
167
|
-
|
|
171
|
+
width: numericOption(options.width, {
|
|
172
|
+
name: "--width",
|
|
173
|
+
integer: true,
|
|
174
|
+
min: 1,
|
|
175
|
+
fallback: 1280,
|
|
176
|
+
}),
|
|
177
|
+
height: numericOption(options.height, {
|
|
178
|
+
name: "--height",
|
|
179
|
+
integer: true,
|
|
180
|
+
min: 1,
|
|
181
|
+
fallback: 720,
|
|
182
|
+
}),
|
|
168
183
|
fullPage: !!options.fullPage,
|
|
169
184
|
});
|
|
170
185
|
spinner.stop();
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import { logger } from "../lib/logger.js";
|
|
9
|
+
import { numericOption } from "../lib/cli-numeric.js";
|
|
9
10
|
import { bootstrap, shutdown } from "../runtime/bootstrap.js";
|
|
10
11
|
import {
|
|
11
12
|
ensureComplianceTables,
|
|
@@ -509,7 +510,12 @@ export function registerComplianceCommand(program) {
|
|
|
509
510
|
|
|
510
511
|
const rows = listIndicators(db, {
|
|
511
512
|
type: options.type,
|
|
512
|
-
limit:
|
|
513
|
+
limit: numericOption(options.limit, {
|
|
514
|
+
name: "--limit",
|
|
515
|
+
integer: true,
|
|
516
|
+
min: 0,
|
|
517
|
+
fallback: 100,
|
|
518
|
+
}),
|
|
513
519
|
});
|
|
514
520
|
if (options.json) {
|
|
515
521
|
console.log(JSON.stringify(rows, null, 2));
|
package/src/commands/cost.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import chalk from "chalk";
|
|
14
14
|
import { logger } from "../lib/logger.js";
|
|
15
|
+
import { numericOption } from "../lib/cli-numeric.js";
|
|
15
16
|
|
|
16
17
|
function fmtUsd(n) {
|
|
17
18
|
const v = Number(n) || 0;
|
|
@@ -46,7 +47,14 @@ export function registerCostCommand(program) {
|
|
|
46
47
|
|
|
47
48
|
const raw = id
|
|
48
49
|
? sessionUsage(id)
|
|
49
|
-
: allSessionsUsage({
|
|
50
|
+
: allSessionsUsage({
|
|
51
|
+
limit: numericOption(options.limit, {
|
|
52
|
+
name: "--limit",
|
|
53
|
+
integer: true,
|
|
54
|
+
min: 0,
|
|
55
|
+
fallback: 1000,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
50
58
|
const result = priceRollup(raw, { table });
|
|
51
59
|
|
|
52
60
|
if (options.json) {
|
package/src/commands/hub.js
CHANGED
|
@@ -20,6 +20,8 @@ import chalk from "chalk";
|
|
|
20
20
|
import ora from "ora";
|
|
21
21
|
import { logger } from "../lib/logger.js";
|
|
22
22
|
import { getHub, getHubMinimal } from "../lib/personal-data-hub-wiring.js";
|
|
23
|
+
import { loadConfig } from "../lib/config-manager.js";
|
|
24
|
+
import { isCloudHubConfigured } from "../lib/hub-llm-client.js";
|
|
23
25
|
import { importPdh } from "../lib/pdh-load-error.js";
|
|
24
26
|
import { getAIChatWizard } from "../lib/personal-data-hub-aichat-wizard.js";
|
|
25
27
|
|
|
@@ -77,11 +79,19 @@ async function cmdAsk(question, options) {
|
|
|
77
79
|
if (!hub.engine) throw new Error("Analysis engine unavailable");
|
|
78
80
|
// 推文 §三道锁第二把 "默认不许问云端" — acceptNonLocal 默认 false (拒云)。
|
|
79
81
|
// 优先 --accept-non-local CLI 旗,其次 env CC_HUB_ALLOW_NON_LOCAL (Android UI
|
|
80
|
-
// 拒云 toggle 通过 LocalCcRunner.askQuestion 透传)
|
|
82
|
+
// 拒云 toggle 通过 LocalCcRunner.askQuestion 透传),再次为 PERSISTENT config
|
|
83
|
+
// `hub.llm` 选了云后端时的常驻同意 (一次性 `cc config set hub.llm …` 即informed
|
|
84
|
+
// opt-in,免去每次 --accept-non-local);否则维持 false。
|
|
81
85
|
const envAllow =
|
|
82
86
|
process.env.CC_HUB_ALLOW_NON_LOCAL === "1" ||
|
|
83
87
|
process.env.CC_HUB_ALLOW_NON_LOCAL === "true";
|
|
84
|
-
|
|
88
|
+
let cfgCloudHub = false;
|
|
89
|
+
try {
|
|
90
|
+
cfgCloudHub = isCloudHubConfigured(loadConfig());
|
|
91
|
+
} catch {
|
|
92
|
+
cfgCloudHub = false; // fail-closed: unreadable config → keep cloud denied
|
|
93
|
+
}
|
|
94
|
+
const acceptNonLocal = !!options.acceptNonLocal || envAllow || cfgCloudHub;
|
|
85
95
|
// Per-call budget overrides for small-model callers (Android Qwen2.5-1.5B
|
|
86
96
|
// passes --max-facts 20 --max-query-limit 50 to keep prompt ~1.5K tokens
|
|
87
97
|
// and stay under the model's effective instruction-following window).
|
|
@@ -1306,9 +1316,9 @@ async function cmdCollectWechat(options) {
|
|
|
1306
1316
|
`enmm-dec-${process.pid}.db`,
|
|
1307
1317
|
);
|
|
1308
1318
|
fs.writeFileSync(tmp, result.decrypted);
|
|
1309
|
-
let
|
|
1319
|
+
let parsed;
|
|
1310
1320
|
try {
|
|
1311
|
-
|
|
1321
|
+
parsed = wx.parseEvents(Database, tmp, options.self || "self");
|
|
1312
1322
|
} finally {
|
|
1313
1323
|
try {
|
|
1314
1324
|
fs.unlinkSync(tmp);
|
|
@@ -1316,7 +1326,27 @@ async function cmdCollectWechat(options) {
|
|
|
1316
1326
|
/* wipe plaintext */
|
|
1317
1327
|
}
|
|
1318
1328
|
}
|
|
1329
|
+
// parseEvents now returns { events, persons, topics } (bare-array shape
|
|
1330
|
+
// from older bundles tolerated for forward-compat).
|
|
1331
|
+
const events = Array.isArray(parsed) ? parsed : parsed.events || [];
|
|
1332
|
+
const persons = Array.isArray(parsed) ? [] : parsed.persons || [];
|
|
1333
|
+
const topics = Array.isArray(parsed) ? [] : parsed.topics || [];
|
|
1319
1334
|
|
|
1335
|
+
// Named contacts + group topics first so events resolve names / interests.
|
|
1336
|
+
for (const p of persons) {
|
|
1337
|
+
try {
|
|
1338
|
+
vault.putPerson(p);
|
|
1339
|
+
} catch {
|
|
1340
|
+
/* dup / optional */
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
for (const t of topics) {
|
|
1344
|
+
try {
|
|
1345
|
+
if (typeof vault.putTopic === "function") vault.putTopic(t);
|
|
1346
|
+
} catch {
|
|
1347
|
+
/* dup / optional */
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1320
1350
|
let ingested = 0;
|
|
1321
1351
|
for (const ev of events) {
|
|
1322
1352
|
try {
|
|
@@ -1330,6 +1360,8 @@ async function cmdCollectWechat(options) {
|
|
|
1330
1360
|
ok: true,
|
|
1331
1361
|
cfg: result.cfg,
|
|
1332
1362
|
messages: events.length,
|
|
1363
|
+
persons: persons.length,
|
|
1364
|
+
topics: topics.length,
|
|
1333
1365
|
ingested,
|
|
1334
1366
|
};
|
|
1335
1367
|
if (spinner)
|
|
@@ -2686,6 +2718,19 @@ export function registerHubCommand(program) {
|
|
|
2686
2718
|
"Cap vault queryEvents limit (default 200; small-model callers should pass 50)",
|
|
2687
2719
|
)
|
|
2688
2720
|
.option("--json", "Output JSON")
|
|
2721
|
+
.addHelpText(
|
|
2722
|
+
"after",
|
|
2723
|
+
"\nLLM backend: defaults to local Ollama (privacy). To use a cloud provider:\n" +
|
|
2724
|
+
" • Persistent (recommended): cc config set hub.llm config\n" +
|
|
2725
|
+
" → uses cc config's llm.{provider,model,baseUrl,apiKey}; no flag/env needed,\n" +
|
|
2726
|
+
" and the standing config opt-in also authorizes off-device egress.\n" +
|
|
2727
|
+
" Separate key/account for the hub? set an object instead:\n" +
|
|
2728
|
+
" cc config set hub.llm.provider volcengine\n" +
|
|
2729
|
+
" cc config set hub.llm.model doubao-seed-2-1-pro-260628\n" +
|
|
2730
|
+
" cc config set hub.llm.apiKeyEnv MY_HUB_KEY (or hub.llm.apiKey <key>)\n" +
|
|
2731
|
+
" • Ephemeral: CC_HUB_LLM=config|<provider> cc hub ask … --accept-non-local\n" +
|
|
2732
|
+
" (a one-off override still needs an explicit egress flag).",
|
|
2733
|
+
)
|
|
2689
2734
|
.action(cmdAsk);
|
|
2690
2735
|
|
|
2691
2736
|
hub
|
|
@@ -153,15 +153,21 @@ export function gitLog(dir, limit = 10) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
try {
|
|
156
|
+
// Subject (%s) is free text that often contains "|"; keep it LAST so a
|
|
157
|
+
// pipe in the subject can't shift the date/author fields, then re-join the
|
|
158
|
+
// remainder. (Field order kept as %X|%X — Windows cmd.exe expands adjacent
|
|
159
|
+
// %VAR% pairs, so a control-char separator like %x1f is not portable here.)
|
|
156
160
|
const output = gitExec(
|
|
157
|
-
`log --oneline --no-decorate -${limit} --format="%H|%h|%
|
|
161
|
+
`log --oneline --no-decorate -${limit} --format="%H|%h|%ai|%an|%s"`,
|
|
158
162
|
dir,
|
|
159
163
|
);
|
|
160
164
|
return output
|
|
161
165
|
.split("\n")
|
|
162
166
|
.filter(Boolean)
|
|
163
167
|
.map((line) => {
|
|
164
|
-
const
|
|
168
|
+
const parts = line.split("|");
|
|
169
|
+
const [hash, shortHash, date, author] = parts;
|
|
170
|
+
const subject = parts.slice(4).join("|");
|
|
165
171
|
return { hash, shortHash, subject, date, author };
|
|
166
172
|
});
|
|
167
173
|
} catch {
|