chainlesschain 0.162.99 → 0.162.101
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 +2 -2
- package/src/assets/web-panel/assets/{AIOps-CMG0vv4c.js → AIOps-NeD6mA1O.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BcEe5c8U.js → ActionButton-Bhp7A7vO.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-SuLWOaN0.js → Analytics-DgdI84Jy.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-Dltwf-4r.js → AppLayout-Qw29caa7.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-DD2HV32U.js → Audit-DgkzhBjz.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DuC23L6Q.js → Backup-CiWEQoW5.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-X0471zTa.js → BaseInput-BWNbkeDF.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DaXQv3T0.js → Chat-CUcj4Vyd.js} +6 -6
- package/src/assets/web-panel/assets/ChatBubbleRenderer-bAMNCgEj.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-BEgZfdTo.js → Checkbox-B0uZTW8f.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-B-qGjlHu.js → Codegen-BPk7b-Xa.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DiK8LMmd.js → Col-C2cV_dw4.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Dd-KcxiU.js → Community-CDN6Yggb.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-fY0m3FN3.js → Compact-C4WPtW_V.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-5MDE7Czv.js → Compliance-BGUfeH-3.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BQ68jZgP.js → Cowork-CsnVgF-o.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-Mf7zNhiD.js → Cron--rGanASk.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BZzc2zCE.js → Crosschain-D_CLrd-0.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BMG_Pkc5.js → DID-iYkbVc8W.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CBgfk_sA.js → Dashboard-CuFMU98t.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CsSQ59ho.js → Dropdown-BPSjv_Ye.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-BLLa73Ua.js → EmailListRenderer-DBmk7czO.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BCvJht58.js → FamilyGuardDashboard-BaCArN11.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CGzxcIcW.js → Federation-DsTV-8Ca.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-m1rLsnBO.js → FormItemContext-C6fRr_6F.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D8mCQIH_.js → GenericCardRenderer-AfuZCfyv.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C-LQtosk.js → Git-CAFIrGhb.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BSD8h_hN.js → Governance-C-NaxDs4.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DFw9CnXF.js → Inference-BPfeNZP7.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-BMYmRepk.js → KnowledgeGraph-DDUBte_m.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-ZrELai5u.js → Logs-DWysA6JP.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-Ce14mTDX.js → Marketplace-CAK68hXc.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CEnbJWFU.js → McpTools-CNmmoDAk.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-D3enFpqK.js → Memory-D_KmFoui.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Ce-VS9zK.js → MobileBridge-CaY-6kjj.js} +2 -2
- package/src/assets/web-panel/assets/MobileProjects-DhDxrWze.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-BNgTX9Qh.js → Mtc-YnLrtuXT.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-CufsM7s8.js → MtcAudit-D38v836u.js} +6 -6
- package/src/assets/web-panel/assets/{Multisig-GXJIL4aF.js → Multisig-Dv3ad9S4.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CBTIpVy6.js → NLProgramming-MYTh2eWC.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-NZywoBWt.js → Notes-DYO-0Hva.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-Bc1wmim4.js → NotificationSettings-D39gOb3h.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-CC3oj-fz.js → OrderTableRenderer-CXdO0z3I.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DE-YxS7i.js → Organization-DOYTwQwt.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cc3iUgzu.js → Overflow-Cm-go0yU.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-C_QoOC3F.js → P2P-CakGtorw.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-DqoBD5U6.js → PdhVaultBrowser-BlmbHJnb.js} +4 -4
- package/src/assets/web-panel/assets/{Permissions-BjgriXLa.js → Permissions-C_podo04.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CkH9NB88.js → PersonalDataHub-nBbehIKp.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-C5-XpLql.js → Pipeline-CGzQUoKv.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BiLtfZhQ.js → Privacy-BuD-Dd9m.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CxG5bgtp.js → ProjectInit-CLcFmGXU.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-fftWTLTQ.js → ProjectSettings-BxXTR0dH.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Du3q2sRh.js → Projects-DkpBjAfd.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DwlmOKrI.js → Providers-DwHK42ht.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-B502uUvG.js → QuickAsk-idJPKErk.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DE6Lp42Z.js → Recommend-BvJj0Nu2.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DZTUza5F.js → Reputation-BK9l4Rcf.js} +1 -1
- package/src/assets/web-panel/assets/{Row-CBOS0OSh.js → Row-rLxg7xk5.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CcGOuy9F.js → RssFeed-Cw6ZcHBY.js} +3 -3
- package/src/assets/web-panel/assets/{Search-BfxVyfiL.js → Search-D8mKp506.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DYTCuFzB.js → Security-CXunojmQ.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BZHtYlUX.js → Services-BE5DgmPl.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BgXr67tR.js → Skeleton-CssL5wmE.js} +1 -1
- package/src/assets/web-panel/assets/Skills-zyS_1YrT.js +1 -0
- package/src/assets/web-panel/assets/{Sla-BWaXj_vw.js → Sla-DIVn2Roa.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-B2AfWM_J.js → SpeechSettings-CjNdZWdj.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-wSvSLXpT.js → SyncSettings-BCbu5WQT.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-CVjL_Y1B.js → Tasks-BjFrgXge.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BgSxXpw5.js → Templates-Cl4Y3lKN.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CJGAV5la.js → Tenant-k1T0F_eH.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-De5_EN_V.js → Terminal-i0tHF8fy.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Bh522gqj.js → TimelineRenderer-FmPaNyqK.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BlDmXWFe.js → Tokens-BUWEiyab.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-GtDdt6dc.js → Trigger-9srMXwpo.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CO-J2fba.js → Trust-hmGor_R2.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-COPtKdBr.js → UkeySign-Dst7K10a.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DMsypBvf.js → VideoEditing-D_utUv1u.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-C8fx-vaw.js → Wallet-BpYTTseI.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-BTgKbf8E.js → WebAuthn-CEIw8QrF.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-BeKfsfTu.js → WorkflowEditor-Bkb4bUZ_.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D-Zpflcv.js → chat-CTqDgGRH.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Bb4VjMuP.js → colors-CnJHVFLk.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DHprNvyh.js → compact-item-D4-v0ahl.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DmNwQZXR.js → createContext-CYDbnHZX.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-OhxeajH6.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-l6WqPKP5.js → hasIn-CbYwlEz5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BN-OMV-K.js → index-4767GEls.js} +1 -1
- package/src/assets/web-panel/assets/{index-DISR_I9Q.js → index-5NXdAIZK.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBzIcq6K.js → index-8cmtr1jC.js} +1 -1
- package/src/assets/web-panel/assets/{index-CH-q47Pb.js → index-B-hiXmVK.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXlGTCaU.js → index-B78d_-pR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMV46ADD.js → index-B8uhiRML.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2lAg3U4.js → index-BCQ4kcL3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cc8o0t9Y.js → index-BGUOVPjO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfI5VwmC.js → index-BNz3yht2.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGLT9p56.js → index-BOUSaCsn.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLgeseSs.js → index-BR0FfrCL.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkCmAgik.js → index-BR4facv0.js} +1 -1
- package/src/assets/web-panel/assets/index-Bbtoi_47.js +1 -0
- package/src/assets/web-panel/assets/{index-oYpM4uyZ.js → index-BygyTsjr.js} +1 -1
- package/src/assets/web-panel/assets/{index-x3-x0pph.js → index-C2fICr5d.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bpsb33R1.js → index-C4chfOjw.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_Ywt8t3.js → index-CK8nROWH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZdpPYn5.js → index-CP-UKwu8.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRhgBHTZ.js → index-CVc_5aBF.js} +1 -1
- package/src/assets/web-panel/assets/{index-D8nBEgTo.js → index-CY971z_9.js} +1 -1
- package/src/assets/web-panel/assets/index-Cb8RWwaB.js +1 -0
- package/src/assets/web-panel/assets/{index-CeUbtEuw.js → index-CfshMjFN.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiAC4ZUO.js → index-Cl7-mbsb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoOrR6d8.js → index-CxKdSB-p.js} +1 -1
- package/src/assets/web-panel/assets/{index-CyqrDhdu.js → index-D8MYVsVB.js} +1 -1
- package/src/assets/web-panel/assets/{index-22WbakvW.js → index-DMKNVIqJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1aES2gV.js → index-DVKfa-z4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvQxYM1S.js → index-DaCCLe7i.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8Il6KMz.js → index-DdRtpQFq.js} +1 -1
- package/src/assets/web-panel/assets/{index-GHwPOeZu.js → index-DjFQuno4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BioGKY6I.js → index-Dl_NdY39.js} +3 -3
- package/src/assets/web-panel/assets/{index-uHF_Rr3M.js → index-DxvFrsxl.js} +1 -1
- package/src/assets/web-panel/assets/{index-A8hIiDfx.js → index-OqmUv5QO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQUl9B0k.js → index-YuO8gxKb.js} +1 -1
- package/src/assets/web-panel/assets/{index-DORQ0yEL.js → index-dKpwhR5x.js} +1 -1
- package/src/assets/web-panel/assets/{index-Pd1sZxeV.js → index-qNwkSspX.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3csRv4q.js → index-tmNsJzQU.js} +1 -1
- package/src/assets/web-panel/assets/{index-ozp_9fDH.js → index-wxz2s6uW.js} +1 -1
- package/src/assets/web-panel/assets/{index-D41M1_Or.js → index-xDe5BkjU.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-ni_ZRmy0.js → initDefaultProps-qCQgpAty.js} +1 -1
- package/src/assets/web-panel/assets/{motion-Co_vILcf.js → motion-SkVSGdwu.js} +1 -1
- package/src/assets/web-panel/assets/{move-Vb3qV-ni.js → move-BpWxaW_x.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BPFjulen.js → omit-DlZWM2H4.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DjcpAbrM.js → pickAttrs-DobtUnVe.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Nx5ZRR-t.js → placementArrow-CD6mYRZi.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DX6mkN83.js → responsiveObserve-DvIIMTD_.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DDCQsnw8.js → slide-CVgyUfaA.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-R40Lhp2n.js → statusUtils-DrUDnjy_.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DbZK68Xx.js → styleChecker-BNYQS60m.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DlWoOCfA.js → useFlexGapSupport-DYv7Tvk0.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CYkX8zOI.js → useFs-DmAD2atJ.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-yWcDQGCg.js → usePersonalDataHub-DbLVKA3I.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-Cc5mq12a.js → vnode-C3WEt6_P.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-sqaKvTbh.js → zoom-CRoSX_oZ.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/hub.js +348 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Cwt62gMn.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BRX99Tv7.js +0 -1
- package/src/assets/web-panel/assets/Skills-BcL8JvyV.js +0 -1
- package/src/assets/web-panel/assets/devWarning-I2VEnMDJ.js +0 -1
- package/src/assets/web-panel/assets/index-CcPrgHJz.js +0 -1
- package/src/assets/web-panel/assets/index-Cg28jb8B.js +0 -1
|
@@ -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-Dl_NdY39.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-Dl_NdY39.js";import{i as f}from"./motion-SkVSGdwu.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-Dl_NdY39.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-BvqAck49.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/icons-DP3uiYxy.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
|
package/src/commands/hub.js
CHANGED
|
@@ -494,6 +494,91 @@ async function cmdQueryEvents(options) {
|
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
+
// ─── export-events / import-events (§8.3 cross-device backup) ─────────
|
|
498
|
+
//
|
|
499
|
+
// Raw vault event export/import for the module 101 §8.3 backup engine.
|
|
500
|
+
// The Android PdhVaultBridge.CcVaultGateway shells to these:
|
|
501
|
+
// cc hub export-events --json → full events (paginated)
|
|
502
|
+
// cc hub import-events --input <file> → idempotent putEvent (ON
|
|
503
|
+
// CONFLICT(id) upsert)
|
|
504
|
+
// Events round-trip queryEvents ⇄ putEvent (same canonical schema), so an
|
|
505
|
+
// exported snapshot re-imports without loss/dup. CLI-only (no pdh/lib change).
|
|
506
|
+
|
|
507
|
+
/** Page through queryEvents to collect EVERY event (no default 100 cap). */
|
|
508
|
+
function exportAllEvents(vault, pageSize = 10000) {
|
|
509
|
+
const all = [];
|
|
510
|
+
let offset = 0;
|
|
511
|
+
for (;;) {
|
|
512
|
+
const page = vault.queryEvents({ limit: pageSize, offset });
|
|
513
|
+
all.push(...page);
|
|
514
|
+
if (page.length < pageSize) break;
|
|
515
|
+
offset += page.length;
|
|
516
|
+
}
|
|
517
|
+
return all;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/** putEvent each (idempotent upsert by id); count outcomes, never throw mid-batch. */
|
|
521
|
+
function importEventsInto(vault, events) {
|
|
522
|
+
let imported = 0;
|
|
523
|
+
let failed = 0;
|
|
524
|
+
const errors = [];
|
|
525
|
+
for (const ev of events) {
|
|
526
|
+
try {
|
|
527
|
+
vault.putEvent(ev);
|
|
528
|
+
imported += 1;
|
|
529
|
+
} catch (e) {
|
|
530
|
+
failed += 1;
|
|
531
|
+
if (errors.length < 10) errors.push({ id: ev && ev.id, error: e.message });
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
return { ok: failed === 0, imported, failed, errors };
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
async function cmdExportEvents(options) {
|
|
538
|
+
try {
|
|
539
|
+
const hub = await (options._getHub || getHub)();
|
|
540
|
+
const all = exportAllEvents(hub.vault);
|
|
541
|
+
if (options.output) {
|
|
542
|
+
require("fs").writeFileSync(options.output, JSON.stringify(all), "utf-8");
|
|
543
|
+
if (options.json) {
|
|
544
|
+
jsonAndExit({ ok: true, count: all.length, output: options.output });
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
logger.log(`exported ${all.length} events → ${options.output}`);
|
|
548
|
+
process.exit(0);
|
|
549
|
+
}
|
|
550
|
+
// default: emit the array (data command; the gateway reads stdout)
|
|
551
|
+
jsonAndExit(all);
|
|
552
|
+
} catch (err) {
|
|
553
|
+
fail(null, err, options.json);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
async function cmdImportEvents(options) {
|
|
558
|
+
try {
|
|
559
|
+
if (!options.input) {
|
|
560
|
+
throw new Error(
|
|
561
|
+
"import-events: --input <file> is required (a JSON array of events)",
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
const raw = require("fs").readFileSync(options.input, "utf-8");
|
|
565
|
+
const events = JSON.parse(raw);
|
|
566
|
+
if (!Array.isArray(events)) {
|
|
567
|
+
throw new Error("import-events: expected a JSON array of events");
|
|
568
|
+
}
|
|
569
|
+
const hub = await (options._getHub || getHub)();
|
|
570
|
+
const result = importEventsInto(hub.vault, events);
|
|
571
|
+
if (options.json) {
|
|
572
|
+
jsonAndExit(result);
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
logger.log(`imported ${result.imported}, failed ${result.failed}`);
|
|
576
|
+
process.exit(result.ok ? 0 : 1);
|
|
577
|
+
} catch (err) {
|
|
578
|
+
fail(null, err, options.json);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
|
|
497
582
|
// ─── search / facet-counts (Phase 16 Vault Browser) ──────────────────
|
|
498
583
|
//
|
|
499
584
|
// Surfaces vault.searchEvents + vault.facetCounts for headless use
|
|
@@ -962,6 +1047,204 @@ async function cmdCollectQq(options) {
|
|
|
962
1047
|
}
|
|
963
1048
|
}
|
|
964
1049
|
|
|
1050
|
+
// ─── collect-db (generic plaintext-db ingest → vault) ────────────────────
|
|
1051
|
+
//
|
|
1052
|
+
// module 101 — collect an app's PLAINTEXT SQLite dbs (browse/read/history/
|
|
1053
|
+
// content/config) into the vault. The Magisk daemon (root, MIUI cross-app)
|
|
1054
|
+
// stages an app's databases dir; this turns each readable db into vault
|
|
1055
|
+
// records (generic text extraction). Encrypted IM (QQNT/WeChat) have their
|
|
1056
|
+
// own collectors; this covers the rest of the 明文库.
|
|
1057
|
+
async function cmdCollectDb(options) {
|
|
1058
|
+
const spinner = options.json
|
|
1059
|
+
? null
|
|
1060
|
+
: ora("collect-db (plaintext)...").start();
|
|
1061
|
+
try {
|
|
1062
|
+
const { createRequire } = await import("module");
|
|
1063
|
+
const require = createRequire(import.meta.url);
|
|
1064
|
+
const fs = require("fs");
|
|
1065
|
+
const path = require("path");
|
|
1066
|
+
const g = options._plaintextCore
|
|
1067
|
+
? options._plaintextCore
|
|
1068
|
+
: await import("@chainlesschain/personal-data-hub/forensics/plaintext-db-collect");
|
|
1069
|
+
if (!options.app) throw new Error("need --app <key>");
|
|
1070
|
+
let dbs = [];
|
|
1071
|
+
if (options.db) {
|
|
1072
|
+
dbs = [options.db];
|
|
1073
|
+
} else if (options.dir) {
|
|
1074
|
+
dbs = fs
|
|
1075
|
+
.readdirSync(options.dir)
|
|
1076
|
+
.filter((f) => /\.db$/.test(f) && !/-wal$|-shm$/.test(f))
|
|
1077
|
+
.map((f) => path.join(options.dir, f));
|
|
1078
|
+
} else {
|
|
1079
|
+
throw new Error("need --db <path> or --dir <dir>");
|
|
1080
|
+
}
|
|
1081
|
+
const hub = await (options._getHub || getHub)();
|
|
1082
|
+
const vault = hub.vault;
|
|
1083
|
+
const Database = (vault.db || vault._db || vault).constructor;
|
|
1084
|
+
let ingested = 0;
|
|
1085
|
+
let records = 0;
|
|
1086
|
+
const perDb = [];
|
|
1087
|
+
for (const dbp of dbs) {
|
|
1088
|
+
try {
|
|
1089
|
+
const events = g.ingestPlaintextDb(Database, dbp, options.app);
|
|
1090
|
+
let ok = 0;
|
|
1091
|
+
for (const ev of events) {
|
|
1092
|
+
try {
|
|
1093
|
+
vault.putEvent(ev);
|
|
1094
|
+
ok++;
|
|
1095
|
+
} catch {
|
|
1096
|
+
/* skip dup/invalid */
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
ingested += ok;
|
|
1100
|
+
records += events.length;
|
|
1101
|
+
if (events.length)
|
|
1102
|
+
perDb.push({ db: path.basename(dbp), records: events.length });
|
|
1103
|
+
} catch {
|
|
1104
|
+
/* skip encrypted/unreadable db */
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
const report = {
|
|
1108
|
+
ok: true,
|
|
1109
|
+
app: options.app,
|
|
1110
|
+
dbs: dbs.length,
|
|
1111
|
+
records,
|
|
1112
|
+
ingested,
|
|
1113
|
+
perDb,
|
|
1114
|
+
};
|
|
1115
|
+
if (spinner)
|
|
1116
|
+
spinner.succeed(
|
|
1117
|
+
`collect-db: ${ingested} records from ${perDb.length}/${dbs.length} dbs`,
|
|
1118
|
+
);
|
|
1119
|
+
if (options.json) {
|
|
1120
|
+
jsonAndExit(report);
|
|
1121
|
+
return;
|
|
1122
|
+
}
|
|
1123
|
+
logger.log(
|
|
1124
|
+
chalk.green(`✓ collect-db (${options.app}): ${ingested} records → vault`),
|
|
1125
|
+
);
|
|
1126
|
+
for (const d of perDb.slice(0, 12)) logger.log(` ${d.db}: ${d.records}`);
|
|
1127
|
+
process.exit(0);
|
|
1128
|
+
} catch (err) {
|
|
1129
|
+
fail(spinner, err, options.json);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
// ─── collect-wechat (WeChat EnMicroMsg derived-key decrypt → vault) ──────
|
|
1134
|
+
//
|
|
1135
|
+
// module 101 — same model as collect-qq. The Magisk daemon stages a
|
|
1136
|
+
// (root-read) EnMicroMsg.db + uin/IMEI candidates; this derives the key
|
|
1137
|
+
// (MD5(IMEI+uin)[:7]), decrypts (SQLCipher page-AES), parses message/rcontact/
|
|
1138
|
+
// chatroom, and ingests. Plaintext temp is written app-local + wiped.
|
|
1139
|
+
async function cmdCollectWechat(options) {
|
|
1140
|
+
const spinner = options.json
|
|
1141
|
+
? null
|
|
1142
|
+
: ora("collect-wechat (decrypt + ingest)...").start();
|
|
1143
|
+
try {
|
|
1144
|
+
const { createRequire } = await import("module");
|
|
1145
|
+
const require = createRequire(import.meta.url);
|
|
1146
|
+
const fs = require("fs");
|
|
1147
|
+
const path = require("path");
|
|
1148
|
+
const wx = options._wechatCore
|
|
1149
|
+
? options._wechatCore
|
|
1150
|
+
: await import("@chainlesschain/personal-data-hub/forensics/wechat-collect");
|
|
1151
|
+
if (!options.db) throw new Error("need --db <EnMicroMsg.db>");
|
|
1152
|
+
const raw = fs.readFileSync(options.db);
|
|
1153
|
+
const readLines = (f) =>
|
|
1154
|
+
f && fs.existsSync(f)
|
|
1155
|
+
? fs.readFileSync(f, "utf8").split(/\s+/).filter(Boolean)
|
|
1156
|
+
: [];
|
|
1157
|
+
let passphrases = readLines(options.keys);
|
|
1158
|
+
const uins = readLines(options.uins);
|
|
1159
|
+
const imeis = options.imeis ? readLines(options.imeis) : [];
|
|
1160
|
+
// Android 13 IMEI usually unreadable → always try empty + a placeholder
|
|
1161
|
+
imeis.push("", "1234567890ABCDE");
|
|
1162
|
+
if (uins.length)
|
|
1163
|
+
passphrases = passphrases.concat(
|
|
1164
|
+
wx.computeKeyCandidates(imeis, uins, passphrases),
|
|
1165
|
+
);
|
|
1166
|
+
const rawKeys =
|
|
1167
|
+
options.rawKeys && fs.existsSync(options.rawKeys)
|
|
1168
|
+
? (() => {
|
|
1169
|
+
try {
|
|
1170
|
+
return JSON.parse(fs.readFileSync(options.rawKeys, "utf8"));
|
|
1171
|
+
} catch {
|
|
1172
|
+
return [];
|
|
1173
|
+
}
|
|
1174
|
+
})()
|
|
1175
|
+
: [];
|
|
1176
|
+
if (!passphrases.length && !rawKeys.length) {
|
|
1177
|
+
throw new Error("no key candidates (need --uins, --keys, or --raw-keys)");
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
const result = wx.deriveAndDecrypt(raw, passphrases, rawKeys);
|
|
1181
|
+
if (!result) {
|
|
1182
|
+
const report = {
|
|
1183
|
+
ok: false,
|
|
1184
|
+
reason: "no-key-match",
|
|
1185
|
+
candidates: passphrases.length + rawKeys.length,
|
|
1186
|
+
};
|
|
1187
|
+
if (options.json) {
|
|
1188
|
+
jsonAndExit(report);
|
|
1189
|
+
return;
|
|
1190
|
+
}
|
|
1191
|
+
if (spinner)
|
|
1192
|
+
spinner.fail(
|
|
1193
|
+
"no WeChat key matched (supply a saved --keys or frida --raw-keys)",
|
|
1194
|
+
);
|
|
1195
|
+
process.exit(2);
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
const hub = await (options._getHub || getHub)();
|
|
1199
|
+
const vault = hub.vault;
|
|
1200
|
+
const Database = (vault.db || vault._db || vault).constructor;
|
|
1201
|
+
const tmp = path.join(
|
|
1202
|
+
path.dirname(path.resolve(options.db)),
|
|
1203
|
+
`enmm-dec-${process.pid}.db`,
|
|
1204
|
+
);
|
|
1205
|
+
fs.writeFileSync(tmp, result.decrypted);
|
|
1206
|
+
let events;
|
|
1207
|
+
try {
|
|
1208
|
+
events = wx.parseEvents(Database, tmp, options.self || "self");
|
|
1209
|
+
} finally {
|
|
1210
|
+
try {
|
|
1211
|
+
fs.unlinkSync(tmp);
|
|
1212
|
+
} catch {
|
|
1213
|
+
/* wipe plaintext */
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
let ingested = 0;
|
|
1218
|
+
for (const ev of events) {
|
|
1219
|
+
try {
|
|
1220
|
+
vault.putEvent(ev);
|
|
1221
|
+
ingested++;
|
|
1222
|
+
} catch {
|
|
1223
|
+
/* dup */
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
const report = {
|
|
1227
|
+
ok: true,
|
|
1228
|
+
cfg: result.cfg,
|
|
1229
|
+
messages: events.length,
|
|
1230
|
+
ingested,
|
|
1231
|
+
};
|
|
1232
|
+
if (spinner)
|
|
1233
|
+
spinner.succeed(`collect-wechat: ${ingested} messages → vault`);
|
|
1234
|
+
if (options.json) {
|
|
1235
|
+
jsonAndExit(report);
|
|
1236
|
+
return;
|
|
1237
|
+
}
|
|
1238
|
+
logger.log(chalk.green("✓ WeChat collect succeeded"));
|
|
1239
|
+
logger.log(` config: ${result.cfg}`);
|
|
1240
|
+
logger.log(` messages: ${events.length}`);
|
|
1241
|
+
logger.log(` ingested: ${ingested}`);
|
|
1242
|
+
process.exit(0);
|
|
1243
|
+
} catch (err) {
|
|
1244
|
+
fail(spinner, err, options.json);
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
|
|
965
1248
|
// ─── Phase 10.3 — cc hub aichat <verb> wizard subcommand surface ─────
|
|
966
1249
|
//
|
|
967
1250
|
// Mirrors the WS topics (personal-data-hub.aichat-*) so scripts and the
|
|
@@ -2624,6 +2907,24 @@ export function registerHubCommand(program) {
|
|
|
2624
2907
|
.option("--json", "Output JSON")
|
|
2625
2908
|
.action(cmdFacetCounts);
|
|
2626
2909
|
|
|
2910
|
+
hub
|
|
2911
|
+
.command("export-events")
|
|
2912
|
+
.description(
|
|
2913
|
+
"Export all vault events as JSON (module 101 §8.3 cross-device backup)",
|
|
2914
|
+
)
|
|
2915
|
+
.option("--output <file>", "Write JSON array to file (default: stdout)")
|
|
2916
|
+
.option("--json", "Output JSON ({ok,count} with --output; array otherwise)")
|
|
2917
|
+
.action(cmdExportEvents);
|
|
2918
|
+
|
|
2919
|
+
hub
|
|
2920
|
+
.command("import-events")
|
|
2921
|
+
.description(
|
|
2922
|
+
"Import vault events from a JSON array file (idempotent upsert by id; §8.3)",
|
|
2923
|
+
)
|
|
2924
|
+
.requiredOption("--input <file>", "JSON array of events to import")
|
|
2925
|
+
.option("--json", "Output JSON result")
|
|
2926
|
+
.action(cmdImportEvents);
|
|
2927
|
+
|
|
2627
2928
|
hub
|
|
2628
2929
|
.command("recent-audit")
|
|
2629
2930
|
.description("Recent audit log entries")
|
|
@@ -2686,6 +2987,49 @@ export function registerHubCommand(program) {
|
|
|
2686
2987
|
.option("--json", "Output JSON")
|
|
2687
2988
|
.action(cmdCollectQq);
|
|
2688
2989
|
|
|
2990
|
+
hub
|
|
2991
|
+
.command("collect-db")
|
|
2992
|
+
.description(
|
|
2993
|
+
"Ingest an app's PLAINTEXT SQLite dbs (browse/read/history/content/config) into the vault — generic readable-record extraction with noise filtering. Pair with the Magisk daemon which stages the dbs (root, MIUI cross-app). Encrypted IM has its own collectors (collect-qq/collect-wechat).",
|
|
2994
|
+
)
|
|
2995
|
+
.requiredOption(
|
|
2996
|
+
"--app <key>",
|
|
2997
|
+
"App key (→ source local-<app>, e.g. qq/toutiao/douyin)",
|
|
2998
|
+
)
|
|
2999
|
+
.option("--db <path>", "A single plaintext db")
|
|
3000
|
+
.option("--dir <dir>", "A dir of plaintext dbs (all *.db ingested)")
|
|
3001
|
+
.option("--json", "Output JSON")
|
|
3002
|
+
.action(cmdCollectDb);
|
|
3003
|
+
|
|
3004
|
+
hub
|
|
3005
|
+
.command("collect-wechat")
|
|
3006
|
+
.description(
|
|
3007
|
+
"WeChat: decrypt a root-staged EnMicroMsg.db via the DERIVED key MD5(IMEI+uin)[:7] (no frida; saved/raw keys as fallback), parse message/rcontact/chatroom, and ingest. Pairs with the Magisk daemon (stages DB + uin/IMEI candidates).",
|
|
3008
|
+
)
|
|
3009
|
+
.requiredOption(
|
|
3010
|
+
"--db <path>",
|
|
3011
|
+
"Encrypted EnMicroMsg.db (root-staged / pulled)",
|
|
3012
|
+
)
|
|
3013
|
+
.option(
|
|
3014
|
+
"--uins <path>",
|
|
3015
|
+
"File with uin(s) (one per line) for key derivation",
|
|
3016
|
+
)
|
|
3017
|
+
.option(
|
|
3018
|
+
"--imeis <path>",
|
|
3019
|
+
"File with IMEI candidate(s); empty+placeholder always tried",
|
|
3020
|
+
)
|
|
3021
|
+
.option(
|
|
3022
|
+
"--keys <path>",
|
|
3023
|
+
"File with saved 7-char passphrase keys (instant re-match)",
|
|
3024
|
+
)
|
|
3025
|
+
.option(
|
|
3026
|
+
"--raw-keys <path>",
|
|
3027
|
+
"JSON array of 32-byte raw AES keys (frida fallback)",
|
|
3028
|
+
)
|
|
3029
|
+
.option("--self <wxid>", "Your own wxid (attribution for sent messages)")
|
|
3030
|
+
.option("--json", "Output JSON")
|
|
3031
|
+
.action(cmdCollectWechat);
|
|
3032
|
+
|
|
2689
3033
|
hub
|
|
2690
3034
|
.command("event-detail <eventId>")
|
|
2691
3035
|
.description(
|
|
@@ -2853,4 +3197,8 @@ export const _internal = {
|
|
|
2853
3197
|
cmdKuaishouAdbSync,
|
|
2854
3198
|
interpretWechatProbe,
|
|
2855
3199
|
_defaultKnownVendors,
|
|
3200
|
+
exportAllEvents,
|
|
3201
|
+
importEventsInto,
|
|
3202
|
+
cmdExportEvents,
|
|
3203
|
+
cmdImportEvents,
|
|
2856
3204
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as s,R as a,S as y,K as C,Q as w,V as x,_ as B,b as n}from"./vendor-BvqAck49.js";import{_ as k}from"./index-BioGKY6I.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=n(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=n(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=n(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=n(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=n(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:n};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[s("div",T,[s("div",M,[s("span",R,a(r.actorLabel),1),s("span",V,a(r.formattedTime),1)]),s("div",q,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[w(a(t.event.source.adapter),1)]),_:1},8,["color"])):x("v-if",!0)])],2)}const A=k(N,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-nwnYrn/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-BvqAck49.js";import{_ as v,b as m}from"./index-BioGKY6I.js";import{a7 as y,M}from"./icons-DP3uiYxy.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},w={class:"subtitle"},k={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",w,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",k,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-nwnYrn/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as I,b as C,r as b,I as m,J as y,U as a,R as g,c as n,K as u,V as h,F as w,Z as L,N as O,o as M,P as p,Q as S,S as R}from"./vendor-BvqAck49.js";import{u as E,_ as N}from"./index-BioGKY6I.js";import{u as P}from"./useShellMode-CgR0wCYM.js";import{p as V}from"./parsers-UEvh_ShA.js";import{u as z}from"./chat-D-Zpflcv.js";import{a9 as j,ap as q,R as B}from"./icons-DP3uiYxy.js";const A=I("skills",()=>{const _=b(!1),t=b([]),i=b(""),e=b("all"),k=C(()=>{const o=new Set(["all"]);return t.value.forEach(l=>{l.category&&o.add(l.category),l.executionMode&&o.add(l.executionMode)}),[...o]}),v=C(()=>{let o=t.value;if(e.value!=="all"&&(o=o.filter(l=>l.category===e.value||l.executionMode===e.value)),i.value){const l=i.value.toLowerCase();o=o.filter(d=>d.name?.toLowerCase().includes(l)||d.description?.toLowerCase().includes(l)||d.title?.toLowerCase().includes(l))}return o});async function f(){const o=E();_.value=!0;try{if(P().isEmbedded){const c=await o.sendRaw({type:"skill.list"},2e4);c?.ok&&Array.isArray(c.result?.skills)?t.value=c.result.skills:(console.error("skill.list custom topic failed:",c?.error),t.value=[]);return}const{output:l}=await o.execute("skill list",2e4),d=V(l);t.value=d}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:t,searchQuery:i,selectedCategory:e,categories:k,filteredSkills:v,loadSkills:f}}),F={__name:"Skills",setup(_,{expose:t}){t();const i=A(),e=z(),k=O(),v=C(()=>i.categories.filter(r=>r!=="all").slice(0,6));function f(r){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[r]||r}function o(r){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[r]||r||"未知"}function l(r){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[r]||"default"}async function d(r){await e.createSession("agent"),k.push("/chat"),setTimeout(()=>{e.currentSessionId&&e.sendMessage(e.currentSessionId,`/skill run ${r}`)},300)}M(()=>{i.allSkills.length||i.loadSkills()});const c={skillsStore:i,chatStore:e,router:k,displayCategories:v,catLabel:f,modeLabel:o,modeColor:l,runSkill:d,computed:C,onMounted:M,get useRouter(){return O},get ReloadOutlined(){return B},get PlayCircleOutlined(){return q},get AppstoreOutlined(){return j},get useSkillsStore(){return A},get useChatStore(){return z}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}},Q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},U={class:"page-sub"},T={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},D={key:0,style:{"text-align":"center",padding:"60px"}},G={class:"skills-grid"},J={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},K={style:{flex:"1","min-width":"0"}},W={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},Y={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Z={style:{"margin-left":"12px","flex-shrink":"0"}},H={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},X={style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}};function $(_,t,i,e,k,v){const f=m("a-button"),o=m("a-input-search"),l=m("a-radio-button"),d=m("a-radio-group"),c=m("a-spin"),r=m("a-tag"),x=m("a-card");return p(),y("div",null,[a("div",Q,[a("div",null,[t[3]||(t[3]=a("h2",{class:"page-title"},"技能管理",-1)),a("p",U,g(e.skillsStore.allSkills.length)+" 个可用技能",1)]),n(f,{type:"primary",ghost:"",loading:e.skillsStore.loading,onClick:t[0]||(t[0]=s=>e.skillsStore.loadSkills())},{icon:u(()=>[n(e.ReloadOutlined)]),default:u(()=>[t[4]||(t[4]=S(" 刷新 ",-1))]),_:1},8,["loading"])]),h(" Search & Filter "),a("div",T,[n(o,{value:e.skillsStore.searchQuery,"onUpdate:value":t[1]||(t[1]=s=>e.skillsStore.searchQuery=s),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),n(d,{value:e.skillsStore.selectedCategory,"onUpdate:value":t[2]||(t[2]=s=>e.skillsStore.selectedCategory=s),"button-style":"solid"},{default:u(()=>[n(l,{value:"all"},{default:u(()=>[...t[5]||(t[5]=[S("全部",-1)])]),_:1}),(p(!0),y(w,null,L(e.displayCategories,s=>(p(),R(l,{key:s,value:s},{default:u(()=>[S(g(e.catLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),h(" Loading State "),e.skillsStore.loading?(p(),y("div",D,[n(c,{size:"large"}),t[6]||(t[6]=a("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):e.skillsStore.filteredSkills.length?(p(),y(w,{key:1},[h(" Skills Grid "),a("div",G,[(p(!0),y(w,null,L(e.skillsStore.filteredSkills,s=>(p(),R(x,{key:s.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:u(()=>[a("div",J,[a("div",K,[a("div",W,g(s.name),1),a("div",Y,g(s.description||"暂无描述"),1)]),a("div",Z,[n(r,{color:e.modeColor(s.executionMode),style:{"font-size":"10px"}},{default:u(()=>[S(g(e.modeLabel(s.executionMode)),1)]),_:2},1032,["color"])])]),a("div",H,[n(f,{size:"small",type:"primary",ghost:"",onClick:ee=>e.runSkill(s.name)},{icon:u(()=>[n(e.PlayCircleOutlined)]),default:u(()=>[t[7]||(t[7]=S(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])],2112)):(p(),y(w,{key:2},[h(" Empty State "),a("div",X,[n(e.AppstoreOutlined,{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),a("div",null,g(e.skillsStore.allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)])],2112))])}const ne=N(F,[["render",$],["__scopeId","data-v-d64d43f5"],["__file","/tmp/cc-web-panel-nwnYrn/repo/packages/web-panel/src/views/Skills.vue"]]);export{ne as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{O as r}from"./index-BioGKY6I.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-CBOS0OSh.js";import{U as t}from"./index-BioGKY6I.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-DX6mkN83.js";import"./useFlexGapSupport-DlWoOCfA.js";import"./styleChecker-DbZK68Xx.js";import"./index-CoOrR6d8.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-DiK8LMmd.js";import{U as t}from"./index-BioGKY6I.js";import"./vendor-BvqAck49.js";import"./index-CoOrR6d8.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};
|