chainlesschain 0.162.60 → 0.162.61
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-a2cSbSEu.js → AIOps-BiB8WfIz.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DwvSB5Pp.js → ActionButton-NLBhC6jG.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BqaRaBDD.js → Analytics-k62j-xiL.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-Beck7v8t.js → AppLayout-spr0Sm6J.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-UtJhPdXJ.js → Audit-C3NHJos3.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-HVZhcdll.js → Backup-C2V9tGqF.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DRY_ZGmj.js → BaseInput-DeKm11mH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-D7Vuwfe2.js → Chat-CHZ2CU7x.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BS2q_hPX.js → ChatBubbleRenderer-DEXSa7tC.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-B406i7N1.js → Checkbox-q6E9VeLr.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BvTCqHi3.js → Codegen--4w4QpUI.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DRiyxTQP.js → Col-DLOkwTsj.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DWmhxHQa.js → Community-B1LxJGfE.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DO1HBZEz.js → Compact-C_769oQZ.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-D4j-VHwS.js → Compliance-zsI0s7vB.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BGBkWtat.js → Cowork-A1WA6whF.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-Xa9PtMUQ.js → Cron-C3JDTyyd.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-wVWs4lqN.js → Crosschain-D8O6uB86.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DTkqiRuT.js → DID-BpOebm5d.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-d9STUbrr.js → Dashboard-Defso6kA.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CrdxS-C8.js → Dropdown-Cv9BrwT_.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D78XHUEp.js → EmailListRenderer-BWKHbh4C.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-iAeSETIP.js → FamilyGuardDashboard--m_Ru7Ci.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CTV1Sxqs.js → Federation-Bs6ZcAP0.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BtwNuQKK.js → FormItemContext-CcAs3Acx.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CdEgHjkl.js → GenericCardRenderer-DI1oL4pK.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BTo-PJr_.js → Git-C27t3-fW.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DquOG94r.js → Governance-Dr_syXc_.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DDtcBxRB.js → Inference-CWM8dIbA.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-KUOmNj5C.js → KnowledgeGraph--cFDUZv3.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-HKm7kRs7.js → Logs-Cnn2_Onf.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-IxrOcbFB.js → Marketplace-4T9ok3Gz.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D6a1LM3S.js → McpTools-BQvZwqcN.js} +4 -4
- package/src/assets/web-panel/assets/{Memory-lFkD2ZuM.js → Memory-BE9rPkM_.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-xwuQTps5.js → MobileBridge-DJ3j5lXC.js} +2 -2
- package/src/assets/web-panel/assets/MobileProjects-qasLvYdb.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-BXpJGrjm.js → Mtc-D3CSPTD9.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-CWttaim1.js → MtcAudit-DaYVGCN5.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-jKgTuVLS.js → Multisig-Dz1c5r5w.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-xl4RDzQj.js → NLProgramming-BIKV_K-a.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DPBOvscE.js → Notes-f6t-rmOa.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-8TkIkRo3.js → NotificationSettings-DHLQh8Fy.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-Dwa-XtoE.js → OrderTableRenderer-CDMZ3o6i.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CJ0xVwZM.js → Organization-DIsL758p.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-V7VuUslt.js → Overflow-BMM7apnZ.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BxuccEGq.js → P2P-CTGMmTvi.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-DWwmm0k1.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-CPJFF0zU.js → Permissions-Bed5JxMx.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-Cmn2uiuw.js → PersonalDataHub-CIiZhSM5.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-0zX89_iz.js → Pipeline-CtirPodz.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DROUg3XE.js → Privacy-DuXhXhE7.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-c5KESOK4.js → ProjectInit-DZrnguBl.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BfiCcnb_.js → ProjectSettings-HIltqsJ1.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BtZH5-Eh.js → Projects-BWFkePg4.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-C9Rr_dOk.js → Providers-DEP0Jdvl.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Du4p90W6.js → QuickAsk-T2THoHNx.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B-DQenTl.js → Recommend-CvbxaSwm.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DvwlAVRZ.js → Reputation-6Afy6tfp.js} +1 -1
- package/src/assets/web-panel/assets/{Row-rTnbvkP-.js → Row-DY8OPWaO.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DwvsqWbB.js → RssFeed-wDGWb9pZ.js} +3 -3
- package/src/assets/web-panel/assets/{Search-U_Xj5SvF.js → Search-D_zHAwZY.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CdjsVDQ8.js → Security-Czq7AlGG.js} +4 -4
- package/src/assets/web-panel/assets/{Services-DUd3mFXk.js → Services-Ac1g0ZcG.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CA2gCJmY.js → Skeleton-DXQ3eeSW.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BIw7Rb-m.js → Skills-CWRioX4u.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-vySPesC0.js → Sla-BlHthzfs.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-EniuTjBJ.js → SpeechSettings-Ct240JmL.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DkrqbzYS.js → SyncSettings-BgDIt8Q-.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-oyPnWRbw.js → Tasks-3PTmatJP.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-C2Kvn60U.js → Templates-Dp9QhyIw.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-x6jVMx4D.js → Tenant-CHTYMxzY.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-C2nZbPBs.js → Terminal-X-NGwLpv.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BF6HAETd.js → TimelineRenderer-Bh8jA18j.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-B-KcVAin.js → Tokens-DWkTd5dv.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-B-Caiptm.js → Trigger-CRgVg6sd.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-_8sq7pJp.js → Trust-BgWOXd0W.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CLveUEgo.js → UkeySign-BlTUB9Y-.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-iVc9jxt9.js → VideoEditing-DI64XgNb.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-D1n5pidD.js → Wallet-CJ3TNGiG.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CA8kubXb.js → WebAuthn-B2-rWWoV.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-BXWwd_fB.js → WorkflowEditor-VI9otbaH.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DUNkQr1A.js → chat-CgYfiaVh.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Dz5ozTcp.js → colors-B9EhRTky.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CZ5-JSLh.js → compact-item-Cb7bjraa.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CFxlcPug.js → createContext-DlXPeXuj.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-D-Hp8s_8.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CqWIkHJm.js → hasIn-BbgRfrdf.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDq8IVvv.js → index-1iUK_kAw.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5zhjact.js → index-2ts5iOIB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DO6mf95c.js → index-5CrFMQjt.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2SoMbLc.js → index-AR-QpAkP.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6Nkerss.js → index-BD2W-qsS.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbcHBDYj.js → index-BU8hEUyq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW18L-o6.js → index-BfSS-U5o.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLLSLAC3.js → index-Bk7r1a9x.js} +1 -1
- package/src/assets/web-panel/assets/{index-CvMZxZOn.js → index-BoEFFKn3.js} +1 -1
- package/src/assets/web-panel/assets/{index-BBq1ySIt.js → index-Bt-lPYpq.js} +1 -1
- package/src/assets/web-panel/assets/index-BvnHuxVM.js +1 -0
- package/src/assets/web-panel/assets/{index-BO-yo7Jv.js → index-C73WgOc2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DF0hXW5L.js → index-C8DB27uJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-8l5LLWxH.js → index-C95qWAh4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CguUaiiY.js → index-CGx8aO_Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGAjS_D9.js → index-CHR47Q5B.js} +1 -1
- package/src/assets/web-panel/assets/{index-CE-gpaY9.js → index-CMyzmvtJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-xaZX6ZDL.js → index-Caiu2avX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CL6wt2JN.js → index-Cf9zwbk-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvUlrMy-.js → index-Cmr31VCO.js} +3 -3
- package/src/assets/web-panel/assets/{index-C_WWTpLE.js → index-D-Zz9PvD.js} +1 -1
- package/src/assets/web-panel/assets/{index-FsYDYVUk.js → index-D6t-Shqr.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEzYXMgc.js → index-D8kB0k3E.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLu3Oyef.js → index-DDzNdZcX.js} +1 -1
- package/src/assets/web-panel/assets/{index-3elHm6lI.js → index-DPaffcT8.js} +1 -1
- package/src/assets/web-panel/assets/{index-GVbsyUQm.js → index-DUU9DY4J.js} +1 -1
- package/src/assets/web-panel/assets/{index-BLNgGXeg.js → index-DXxa7PR8.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiAcVeea.js → index-DbLJShJB.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBeASfAD.js → index-De59Xat-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ci1-8q-g.js → index-Dh6qWb1v.js} +1 -1
- package/src/assets/web-panel/assets/{index-BI2EU3hC.js → index-DkQIyK-V.js} +1 -1
- package/src/assets/web-panel/assets/index-Dkm5IGwX.js +1 -0
- package/src/assets/web-panel/assets/{index-Dc-5Ulgt.js → index-Dx4sm6dm.js} +1 -1
- package/src/assets/web-panel/assets/{index-CD7UjlnE.js → index-Ira0HLPr.js} +1 -1
- package/src/assets/web-panel/assets/{index-DUyhvh0L.js → index-OVrh8wTN.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5XUilwu.js → index-c7-Jd6WB.js} +1 -1
- package/src/assets/web-panel/assets/{index-noQc_RpT.js → index-fG-1gXy0.js} +1 -1
- package/src/assets/web-panel/assets/{index-rR060KAF.js → index-ojRAd7Nq.js} +1 -1
- package/src/assets/web-panel/assets/{index-BJt6sNTF.js → index-p03wNqiP.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-PIetywTX.js → initDefaultProps-JT674ACa.js} +1 -1
- package/src/assets/web-panel/assets/{motion-gQJEK3wO.js → motion-CokflrA9.js} +1 -1
- package/src/assets/web-panel/assets/{move-ML1nRxts.js → move-CfMhRpyC.js} +1 -1
- package/src/assets/web-panel/assets/{omit-wUWsw3YL.js → omit-ClYc5II5.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-A0Wlomih.js → pickAttrs-CTwEb_8h.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-C5RKYdxT.js → placementArrow-Cb3StU_t.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DIxNVSJl.js → responsiveObserve-uIxkx5M1.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B-tNesVu.js → slide-B9HZBQ7i.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CftzO200.js → statusUtils-C72bwYl0.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CMgvWu90.js → styleChecker-BFTtaQb8.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-sxqoDNhZ.js → useFlexGapSupport-DKl5j41_.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CowEXz4v.js → useFs-BUHS6bo3.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-6ISRG7V-.js → usePersonalDataHub-D8KrYSq4.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-C2mnXfmw.js → vnode-JYP-aZDj.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DMsur0jx.js → zoom-BFusdxdH.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +1 -1
- package/src/commands/terminal-setup.js +127 -0
- package/src/index.js +2 -0
- package/src/lib/image-input.js +8 -2
- package/src/lib/llm-pricing.js +6 -0
- package/src/lib/terminal-setup.js +209 -0
- package/src/repl/agent-repl.js +22 -1
- package/src/assets/web-panel/assets/MobileProjects-BYr1D3WO.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-DaP2Q5kU.js +0 -7
- package/src/assets/web-panel/assets/devWarning-BMRVR8Xp.js +0 -1
- package/src/assets/web-panel/assets/index-BT2s_zxU.js +0 -1
- package/src/assets/web-panel/assets/index-DOTL6NDc.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{q as V,M as k,h as p,f as O,G as q,P as F,Q as I,i as L}from"./index-
|
|
1
|
+
import{q as V,M as k,h as p,f as O,G as q,P as F,Q as I,i as L}from"./index-Cmr31VCO.js";import{d as Q,b as o,w as W,c as v,F as H,r as j}from"./vendor-BvqAck49.js";import{u as J}from"./useFlexGapSupport-DKl5j41_.js";import{a as K,C as h}from"./Compact-C_769oQZ.js";import"./icons-DP3uiYxy.js";import"./styleChecker-BFTtaQb8.js";import"./createContext-DlXPeXuj.js";import"./_getTag-DnrRH4E6.js";const U={small:8,middle:16,large:24},X=()=>({prefixCls:String,size:{type:[String,Number,Array]},direction:F.oneOf(I("horizontal","vertical")).def("horizontal"),align:F.oneOf(I("start","end","center","baseline")),wrap:q()});function Y(e){return typeof e=="string"?U[e]:e||0}const d=Q({compatConfig:{MODE:3},name:"ASpace",inheritAttrs:!1,props:X(),slots:Object,setup(e,B){let{slots:r,attrs:f}=B;const{prefixCls:l,space:g,direction:x}=V("space",e),[P,D]=K(l),z=J(),n=o(()=>{var t,a,i;return(i=(t=e.size)!==null&&t!==void 0?t:(a=g?.value)===null||a===void 0?void 0:a.size)!==null&&i!==void 0?i:"small"}),y=j(),s=j();W(n,()=>{[y.value,s.value]=(Array.isArray(n.value)?n.value:[n.value,n.value]).map(t=>Y(t))},{immediate:!0});const C=o(()=>e.align===void 0&&e.direction==="horizontal"?"center":e.align),E=o(()=>L(l.value,D.value,`${l.value}-${e.direction}`,{[`${l.value}-rtl`]:x.value==="rtl",[`${l.value}-align-${C.value}`]:C.value})),M=o(()=>x.value==="rtl"?"marginLeft":"marginRight"),R=o(()=>{const t={};return z.value&&(t.columnGap=`${y.value}px`,t.rowGap=`${s.value}px`),p(p({},t),e.wrap&&{flexWrap:"wrap",marginBottom:`${-s.value}px`})});return()=>{var t,a;const{wrap:i,direction:T="horizontal"}=e,b=(t=r.default)===null||t===void 0?void 0:t.call(r),w=k(b),_=w.length;if(_===0)return null;const c=(a=r.split)===null||a===void 0?void 0:a.call(r),A=`${l.value}-item`,G=y.value,S=_-1;return v("div",O(O({},f),{},{class:[E.value,f.class],style:[R.value,f.style]}),[w.map((N,u)=>{let $=b.indexOf(N);$===-1&&($=`$$space-${u}`);let m={};return z.value||(T==="vertical"?u<S&&(m={marginBottom:`${G/(c?2:1)}px`}):m=p(p({},u<S&&{[M.value]:`${G/(c?2:1)}px`}),i&&{paddingBottom:`${s.value}px`})),P(v(H,{key:$},[v("div",{class:A,style:m},[N]),u<S&&c&&v("span",{class:`${A}-split`,style:m},[c])]))})])}}});d.Compact=h;d.install=function(e){return e.component(d.name,d),e.component(h.name,h),e};export{h as Compact,d as default,X as spaceProps};
|
package/src/assets/web-panel/assets/{initDefaultProps-PIetywTX.js → initDefaultProps-JT674ACa.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as s}from"./index-
|
|
1
|
+
import{h as s}from"./index-Cmr31VCO.js";const n=(p,o)=>{const r=s({},p);return Object.keys(o).forEach(t=>{const e=r[t];if(e)e.type||e.default?e.default=o[t]:e.def?e.def(o[t]):r[t]={type:e,default:o[t]};else throw new Error(`not have ${t} prop`)}),r};export{n as i};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as D,e as k,d as F,q as _,o as I,w as O,n as R,f as z,c as H,s as f}from"./vendor-BvqAck49.js";import{A as p,B as A,D as C,P as j,F as q,G,h as v}from"./index-
|
|
1
|
+
import{b as D,e as k,d as F,q as _,o as I,w as O,n as R,f as z,c as H,s as f}from"./vendor-BvqAck49.js";import{A as p,B as A,D as C,P as j,F as q,G,h as v}from"./index-Cmr31VCO.js";import{w as L}from"./raf-Deuc0E8-.js";let M=!1;try{const e=Object.defineProperty({},"passive",{get(){M=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}function te(e,n,o,t){if(e&&e.addEventListener){let r=t;r===void 0&&M&&(n==="touchstart"||n==="touchmove"||n==="wheel")&&(r={passive:!1}),e.addEventListener(n,o,r)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(n,o)}}}let g;function W(e){if(typeof document>"u")return 0;if(g===void 0){const n=document.createElement("div");n.style.width="100%",n.style.height="200px";const o=document.createElement("div"),t=o.style;t.position="absolute",t.top="0",t.left="0",t.pointerEvents="none",t.visibility="hidden",t.width="200px",t.height="150px",t.overflow="hidden",o.appendChild(n),document.body.appendChild(o);const r=n.offsetWidth;o.style.overflow="scroll";let a=n.offsetWidth;r===a&&(a=o.clientWidth),document.body.removeChild(o),g=r-a}return g}function N(e){const n=e.match(/^(.*)px$/),o=Number(n?.[1]);return Number.isNaN(o)?W():o}function ne(e){if(typeof document>"u"||!e||!(e instanceof Element))return{width:0,height:0};const{width:n,height:o}=getComputedStyle(e,"::-webkit-scrollbar");return{width:N(n),height:N(o)}}const T=`vc-util-locker-${Date.now()}`;let x=0;function V(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}function Q(e){const n=D(()=>!!e&&!!e.value);x+=1;const o=`${T}_${x}`;k(t=>{if(p()){if(n.value){const r=W(),a=V();A(`
|
|
2
2
|
html body {
|
|
3
3
|
overflow-y: hidden;
|
|
4
4
|
${a?`width: calc(100% - ${r}px);`:""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as t}from"./index-
|
|
1
|
+
import{K as t}from"./index-Cmr31VCO.js";import{i as s}from"./motion-CokflrA9.js";const m=new t("antMoveDownIn",{"0%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),f=new t("antMoveDownOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, 100%, 0)",transformOrigin:"0 0",opacity:0}}),c=new t("antMoveLeftIn",{"0%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),y=new t("antMoveLeftOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(-100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),p=new t("antMoveRightIn",{"0%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),O=new t("antMoveRightOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(100%, 0, 0)",transformOrigin:"0 0",opacity:0}}),g=new t("antMoveUpIn",{"0%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0},"100%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1}}),v=new t("antMoveUpOut",{"0%":{transform:"translate3d(0, 0, 0)",transformOrigin:"0 0",opacity:1},"100%":{transform:"translate3d(0, -100%, 0)",transformOrigin:"0 0",opacity:0}}),l={"move-up":{inKeyframes:g,outKeyframes:v},"move-down":{inKeyframes:m,outKeyframes:f},"move-left":{inKeyframes:c,outKeyframes:y},"move-right":{inKeyframes:p,outKeyframes:O}},w=(n,a)=>{const{antCls:o}=n,r=`${o}-${a}`,{inKeyframes:i,outKeyframes:e}=l[a];return[s(r,i,e,n.motionDurationMid),{[`
|
|
2
2
|
${r}-enter,
|
|
3
3
|
${r}-appear
|
|
4
4
|
`]:{opacity:0,animationTimingFunction:n.motionEaseOutCirc},[`${r}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{w as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as s}from"./index-
|
|
1
|
+
import{h as s}from"./index-Cmr31VCO.js";function a(n,t){const e=s({},n);for(let o=0;o<t.length;o+=1){const r=t[o];delete e[r]}return e}export{a as o};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as i}from"./index-
|
|
1
|
+
import{h as i}from"./index-Cmr31VCO.js";const l=`accept acceptcharset accesskey action allowfullscreen allowtransparency
|
|
2
2
|
alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge
|
|
3
3
|
charset checked classid classname colspan cols content contenteditable contextmenu
|
|
4
4
|
controls coords crossorigin data datetime default defer dir disabled download draggable
|
package/src/assets/web-panel/assets/{placementArrow-C5RKYdxT.js → placementArrow-Cb3StU_t.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as i}from"./index-
|
|
1
|
+
import{h as i}from"./index-Cmr31VCO.js";const L=(e,o,t,n,p)=>{const r=e/2,a=0,s=r,m=t*1/Math.sqrt(2),h=r-t*(1-1/Math.sqrt(2)),b=r-o*(1/Math.sqrt(2)),u=t*(Math.sqrt(2)-1)+o*(1/Math.sqrt(2)),g=2*r-b,w=u,d=2*r-m,c=h,A=2*r-a,x=s,v=r*Math.sqrt(2)+t*(Math.sqrt(2)-2),$=t*(Math.sqrt(2)-1);return{pointerEvents:"none",width:e,height:e,overflow:"hidden","&::after":{content:'""',position:"absolute",width:v,height:v,bottom:0,insetInline:0,margin:"auto",borderRadius:{_skip_check_:!0,value:`0 0 ${o}px 0`},transform:"translateY(50%) rotate(-135deg)",boxShadow:p,zIndex:0,background:"transparent"},"&::before":{position:"absolute",bottom:0,insetInlineStart:0,width:e,height:e/2,background:n,clipPath:{_multi_value_:!0,value:[`polygon(${$}px 100%, 50% ${$}px, ${2*r-$}px 100%, ${$}px 100%)`,`path('M ${a} ${s} A ${t} ${t} 0 0 0 ${m} ${h} L ${b} ${u} A ${o} ${o} 0 0 1 ${g} ${w} L ${d} ${c} A ${t} ${t} 0 0 0 ${A} ${x} Z')`]},content:'""'}}},f={adjustX:1,adjustY:1},l=[0,0],j={left:{points:["cr","cl"],overflow:f,offset:[-4,0],targetOffset:l},right:{points:["cl","cr"],overflow:f,offset:[4,0],targetOffset:l},top:{points:["bc","tc"],overflow:f,offset:[0,-4],targetOffset:l},bottom:{points:["tc","bc"],overflow:f,offset:[0,4],targetOffset:l},topLeft:{points:["bl","tl"],overflow:f,offset:[0,-4],targetOffset:l},leftTop:{points:["tr","tl"],overflow:f,offset:[-4,0],targetOffset:l},topRight:{points:["br","tr"],overflow:f,offset:[0,-4],targetOffset:l},rightTop:{points:["tl","tr"],overflow:f,offset:[4,0],targetOffset:l},bottomRight:{points:["tr","br"],overflow:f,offset:[0,4],targetOffset:l},rightBottom:{points:["bl","br"],overflow:f,offset:[4,0],targetOffset:l},bottomLeft:{points:["tl","bl"],overflow:f,offset:[0,4],targetOffset:l},leftBottom:{points:["br","bl"],overflow:f,offset:[-4,0],targetOffset:l}},M={adjustX:1,adjustY:1},O={adjustX:0,adjustY:0},T=[0,0];function k(e){return typeof e=="boolean"?e?M:O:i(i({},O),e)}function Y(e){const{arrowWidth:o=4,horizontalArrowShift:t=16,verticalArrowShift:n=8,autoAdjustOverflow:p,arrowPointAtCenter:r}=e,a={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(t+o),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(n+o)]},topRight:{points:["br","tc"],offset:[t+o,-4]},rightTop:{points:["tl","cr"],offset:[4,-(n+o)]},bottomRight:{points:["tr","bc"],offset:[t+o,4]},rightBottom:{points:["bl","cr"],offset:[4,n+o]},bottomLeft:{points:["tl","bc"],offset:[-(t+o),4]},leftBottom:{points:["br","cl"],offset:[-4,n+o]}};return Object.keys(a).forEach(s=>{a[s]=r?i(i({},a[s]),{overflow:k(p),targetOffset:T}):i(i({},j[s]),{overflow:k(p)}),a[s].ignoreShake=!0}),a}function _(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return e.map(t=>`${o}${t}`).join(",")}const X=8;function B(e){const o=X,{sizePopupArrow:t,contentRadius:n,borderRadiusOuter:p,limitVerticalRadius:r}=e,a=t/2-Math.ceil(p*(Math.sqrt(2)-1)),s=(n>12?n+2:12)-a,m=r?o-a:s;return{dropdownArrowOffset:s,dropdownArrowOffsetVertical:m}}function q(e,o){const{componentCls:t,sizePopupArrow:n,marginXXS:p,borderRadiusXS:r,borderRadiusOuter:a,boxShadowPopoverArrow:s}=e,{colorBg:m,showArrowCls:h,contentRadius:b=e.borderRadiusLG,limitVerticalRadius:u}=o,{dropdownArrowOffsetVertical:g,dropdownArrowOffset:w}=B({sizePopupArrow:n,contentRadius:b,borderRadiusOuter:a,limitVerticalRadius:u}),d=n/2+p;return{[t]:{[`${t}-arrow`]:[i(i({position:"absolute",zIndex:1,display:"block"},L(n,r,a,m,s)),{"&:before":{background:m}})],[[`&-placement-top ${t}-arrow`,`&-placement-topLeft ${t}-arrow`,`&-placement-topRight ${t}-arrow`].join(",")]:{bottom:0,transform:"translateY(100%) rotate(180deg)"},[`&-placement-top ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(100%) rotate(180deg)"},[`&-placement-topLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-topRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-bottom ${t}-arrow`,`&-placement-bottomLeft ${t}-arrow`,`&-placement-bottomRight ${t}-arrow`].join(",")]:{top:0,transform:"translateY(-100%)"},[`&-placement-bottom ${t}-arrow`]:{left:{_skip_check_:!0,value:"50%"},transform:"translateX(-50%) translateY(-100%)"},[`&-placement-bottomLeft ${t}-arrow`]:{left:{_skip_check_:!0,value:w}},[`&-placement-bottomRight ${t}-arrow`]:{right:{_skip_check_:!0,value:w}},[[`&-placement-left ${t}-arrow`,`&-placement-leftTop ${t}-arrow`,`&-placement-leftBottom ${t}-arrow`].join(",")]:{right:{_skip_check_:!0,value:0},transform:"translateX(100%) rotate(90deg)"},[`&-placement-left ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(100%) rotate(90deg)"},[`&-placement-leftTop ${t}-arrow`]:{top:g},[`&-placement-leftBottom ${t}-arrow`]:{bottom:g},[[`&-placement-right ${t}-arrow`,`&-placement-rightTop ${t}-arrow`,`&-placement-rightBottom ${t}-arrow`].join(",")]:{left:{_skip_check_:!0,value:0},transform:"translateX(-100%) rotate(-90deg)"},[`&-placement-right ${t}-arrow`]:{top:{_skip_check_:!0,value:"50%"},transform:"translateY(-50%) translateX(-100%) rotate(-90deg)"},[`&-placement-rightTop ${t}-arrow`]:{top:g},[`&-placement-rightBottom ${t}-arrow`]:{bottom:g},[_(["&-placement-topLeft","&-placement-top","&-placement-topRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingBottom:d},[_(["&-placement-bottomLeft","&-placement-bottom","&-placement-bottomRight"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingTop:d},[_(["&-placement-leftTop","&-placement-left","&-placement-leftBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingRight:{_skip_check_:!0,value:d}},[_(["&-placement-rightTop","&-placement-right","&-placement-rightBottom"].map(c=>c+=":not(&-arrow-hidden)"),h)]:{paddingLeft:{_skip_check_:!0,value:d}}}}}export{X as M,Y as a,B as b,q as g,j as p,L as r};
|
package/src/assets/web-panel/assets/{responsiveObserve-DIxNVSJl.js → responsiveObserve-uIxkx5M1.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as o,h}from"./index-
|
|
1
|
+
import{I as o,h}from"./index-Cmr31VCO.js";import{b as x}from"./vendor-BvqAck49.js";const v=["xxxl","xxl","xl","lg","md","sm","xs"],p=r=>({xs:`(max-width: ${r.screenXSMax}px)`,sm:`(min-width: ${r.screenSM}px)`,md:`(min-width: ${r.screenMD}px)`,lg:`(min-width: ${r.screenLG}px)`,xl:`(min-width: ${r.screenXL}px)`,xxl:`(min-width: ${r.screenXXL}px)`,xxxl:`{min-width: ${r.screenXXXL}px}`});function w(){const[,r]=o();return x(()=>{const n=p(r.value),i=new Map;let a=-1,c={};return{matchHandlers:{},dispatch(e){return c=e,i.forEach(t=>t(c)),i.size>=1},subscribe(e){return i.size||this.register(),a+=1,i.set(a,e),e(c),a},unsubscribe(e){i.delete(e),i.size||this.unregister()},unregister(){Object.keys(n).forEach(e=>{const t=n[e],s=this.matchHandlers[t];s?.mql.removeListener(s?.listener)}),i.clear()},register(){Object.keys(n).forEach(e=>{const t=n[e],s=l=>{let{matches:m}=l;this.dispatch(h(h({},c),{[e]:m}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{v as r,w as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as n}from"./index-
|
|
1
|
+
import{K as n}from"./index-Cmr31VCO.js";import{i as e}from"./motion-CokflrA9.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-Cmr31VCO.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-Cmr31VCO.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-sxqoDNhZ.js → useFlexGapSupport-DKl5j41_.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-BFTtaQb8.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-Cmr31VCO.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-Cmr31VCO.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-Cmr31VCO.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-Cmr31VCO.js";import{i as f}from"./motion-CokflrA9.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-Cmr31VCO.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/agent.js
CHANGED
|
@@ -135,7 +135,7 @@ export function registerAgentCommand(program) {
|
|
|
135
135
|
)
|
|
136
136
|
.option(
|
|
137
137
|
"--vision-model <id>",
|
|
138
|
-
"Model to use when an image is attached (default: config llm.visionModel or doubao-seed-
|
|
138
|
+
"Model to use when an image is attached (default: config llm.visionModel or doubao-seed-2-0-lite-260215)",
|
|
139
139
|
)
|
|
140
140
|
.option("--session <id>", "Resume a previous agent session")
|
|
141
141
|
.option(
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cc terminal-setup — bind Shift+Enter to insert a newline in the agent REPL
|
|
3
|
+
* (Claude-Code `/terminal-setup` parity).
|
|
4
|
+
*
|
|
5
|
+
* cc terminal-setup preview what to configure for this terminal
|
|
6
|
+
* cc terminal-setup --apply write the VS Code keybinding (VS Code only)
|
|
7
|
+
*
|
|
8
|
+
* cc multiline works by ending a line with a backslash; this makes Shift+Enter
|
|
9
|
+
* do that for you. Only VS Code can be auto-configured (its user
|
|
10
|
+
* keybindings.json); other terminals get manual instructions.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import chalk from "chalk";
|
|
16
|
+
import { logger } from "../lib/logger.js";
|
|
17
|
+
import {
|
|
18
|
+
detectTerminal,
|
|
19
|
+
vscodeKeybinding,
|
|
20
|
+
vscodeKeybindingsPath,
|
|
21
|
+
parseKeybindings,
|
|
22
|
+
hasKeybinding,
|
|
23
|
+
appendKeybindingText,
|
|
24
|
+
instructionsFor,
|
|
25
|
+
} from "../lib/terminal-setup.js";
|
|
26
|
+
|
|
27
|
+
/** Shared core so the REPL `/terminal-setup` can reuse it. Returns lines. */
|
|
28
|
+
export function runTerminalSetup({
|
|
29
|
+
apply = false,
|
|
30
|
+
env = process.env,
|
|
31
|
+
platform = process.platform,
|
|
32
|
+
_fs = fs,
|
|
33
|
+
} = {}) {
|
|
34
|
+
const term = detectTerminal(env);
|
|
35
|
+
const lines = [chalk.bold(`Terminal: ${term.name}`)];
|
|
36
|
+
lines.push(
|
|
37
|
+
chalk.gray(
|
|
38
|
+
"Goal: Shift+Enter → newline in the REPL (cc treats a trailing \\ as a line continuation).",
|
|
39
|
+
),
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (term.id !== "vscode") {
|
|
43
|
+
lines.push("");
|
|
44
|
+
for (const l of instructionsFor(term.id)) lines.push(" " + l);
|
|
45
|
+
if (apply) {
|
|
46
|
+
lines.push("");
|
|
47
|
+
lines.push(
|
|
48
|
+
chalk.yellow(
|
|
49
|
+
"--apply only auto-configures VS Code; follow the steps above for this terminal.",
|
|
50
|
+
),
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
return { changed: false, lines, terminal: term.id };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// VS Code: read → check → (optionally) write keybindings.json.
|
|
57
|
+
const kbPath = vscodeKeybindingsPath(platform, env);
|
|
58
|
+
const binding = vscodeKeybinding();
|
|
59
|
+
let text = "";
|
|
60
|
+
try {
|
|
61
|
+
text = _fs.readFileSync(kbPath, "utf-8");
|
|
62
|
+
} catch {
|
|
63
|
+
text = ""; // missing file → we'll create it
|
|
64
|
+
}
|
|
65
|
+
const parsed = parseKeybindings(text);
|
|
66
|
+
|
|
67
|
+
if (Array.isArray(parsed) && hasKeybinding(parsed, binding)) {
|
|
68
|
+
lines.push(chalk.green(`Already configured: ${kbPath}`));
|
|
69
|
+
return { changed: false, lines, terminal: term.id, path: kbPath };
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (!apply) {
|
|
73
|
+
lines.push("");
|
|
74
|
+
lines.push("Would add this to " + chalk.cyan(kbPath) + ":");
|
|
75
|
+
lines.push(chalk.gray(JSON.stringify(binding, null, 2)));
|
|
76
|
+
lines.push("");
|
|
77
|
+
lines.push(
|
|
78
|
+
"Run " +
|
|
79
|
+
chalk.cyan("cc terminal-setup --apply") +
|
|
80
|
+
" to write it, then reload VS Code.",
|
|
81
|
+
);
|
|
82
|
+
return { changed: false, lines, terminal: term.id, path: kbPath };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Apply. Bail rather than clobber a file we cannot parse.
|
|
86
|
+
if (parsed === null) {
|
|
87
|
+
lines.push(
|
|
88
|
+
chalk.red(`Could not parse ${kbPath} — add this binding manually:`),
|
|
89
|
+
);
|
|
90
|
+
lines.push(chalk.gray(JSON.stringify(binding, null, 2)));
|
|
91
|
+
return { changed: false, lines, terminal: term.id, path: kbPath };
|
|
92
|
+
}
|
|
93
|
+
const next = appendKeybindingText(text, binding);
|
|
94
|
+
if (next === null) {
|
|
95
|
+
lines.push(chalk.red(`Unexpected keybindings.json shape — add manually:`));
|
|
96
|
+
lines.push(chalk.gray(JSON.stringify(binding, null, 2)));
|
|
97
|
+
return { changed: false, lines, terminal: term.id, path: kbPath };
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
_fs.mkdirSync(path.dirname(kbPath), { recursive: true });
|
|
101
|
+
if (text) _fs.writeFileSync(kbPath + ".bak", text, "utf-8");
|
|
102
|
+
_fs.writeFileSync(kbPath, next, "utf-8");
|
|
103
|
+
} catch (err) {
|
|
104
|
+
lines.push(chalk.red(`Write failed: ${err.message}`));
|
|
105
|
+
return { changed: false, lines, terminal: term.id, path: kbPath };
|
|
106
|
+
}
|
|
107
|
+
lines.push(chalk.green(`Added Shift+Enter binding → ${kbPath}`));
|
|
108
|
+
if (text) lines.push(chalk.gray(`(backup: ${kbPath}.bak)`));
|
|
109
|
+
lines.push(
|
|
110
|
+
chalk.gray("Reload VS Code (Developer: Reload Window) to activate."),
|
|
111
|
+
);
|
|
112
|
+
return { changed: true, lines, terminal: term.id, path: kbPath };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function registerTerminalSetupCommand(program) {
|
|
116
|
+
program
|
|
117
|
+
.command("terminal-setup")
|
|
118
|
+
.description("Bind Shift+Enter to a REPL newline (Claude-Code parity)")
|
|
119
|
+
.option(
|
|
120
|
+
"--apply",
|
|
121
|
+
"Write the keybinding (VS Code only; otherwise prints steps)",
|
|
122
|
+
)
|
|
123
|
+
.action((options) => {
|
|
124
|
+
const res = runTerminalSetup({ apply: options.apply === true });
|
|
125
|
+
for (const l of res.lines) logger.log(l);
|
|
126
|
+
});
|
|
127
|
+
}
|
package/src/index.js
CHANGED
|
@@ -67,6 +67,7 @@ import { registerLoopCommand } from "./commands/loop.js";
|
|
|
67
67
|
import { registerPermissionsCommand } from "./commands/permissions.js";
|
|
68
68
|
import { registerOutputStyleCommand } from "./commands/output-style.js";
|
|
69
69
|
import { registerStatuslineCommand } from "./commands/statusline.js";
|
|
70
|
+
import { registerTerminalSetupCommand } from "./commands/terminal-setup.js";
|
|
70
71
|
import { registerIdeCommand } from "./commands/ide.js";
|
|
71
72
|
import { registerConsolCommand } from "./commands/consol.js";
|
|
72
73
|
import { registerImportCommand } from "./commands/import.js";
|
|
@@ -479,6 +480,7 @@ export function createProgram(opts = {}) {
|
|
|
479
480
|
registerPermissionsCommand(program);
|
|
480
481
|
registerOutputStyleCommand(program);
|
|
481
482
|
registerStatuslineCommand(program);
|
|
483
|
+
registerTerminalSetupCommand(program);
|
|
482
484
|
registerIdeCommand(program);
|
|
483
485
|
registerConsolCommand(program);
|
|
484
486
|
|
package/src/lib/image-input.js
CHANGED
|
@@ -115,8 +115,14 @@ export function imageUrlBlockToAnthropic(block) {
|
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
/**
|
|
119
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Default vision model when none is configured — Volcengine Ark
|
|
120
|
+
* Doubao-Seed-2.0-lite (id `doubao-seed-2-0-lite-260215`, dated YYMMDD =
|
|
121
|
+
* 2026-02-15), a natively multimodal model (text/image/video; 2.0 has no
|
|
122
|
+
* separate "-vision-" SKU). Override via --vision-model or config.llm.visionModel
|
|
123
|
+
* to pin a different snapshot.
|
|
124
|
+
*/
|
|
125
|
+
export const DEFAULT_VISION_MODEL = "doubao-seed-2-0-lite-260215";
|
|
120
126
|
|
|
121
127
|
/**
|
|
122
128
|
* Resolve the effective LLM config for a run. When an image is attached, default
|
package/src/lib/llm-pricing.js
CHANGED
|
@@ -58,6 +58,12 @@ export const PRICE_TABLE = Object.freeze({
|
|
|
58
58
|
],
|
|
59
59
|
// Volcengine Doubao — rough USD conversion of public RMB list pricing.
|
|
60
60
|
volcengine: [
|
|
61
|
+
// Doubao Seed 2.0 family (2026, e.g. doubao-seed-2-0-lite-260215) is
|
|
62
|
+
// natively multimodal. Rates ≈ official CNY ÷ ~7.2 (lite ≤32k is 0.6/3.6
|
|
63
|
+
// CNY → $0.08/$0.50); the generic "seed" rate below underprices 2.0 output.
|
|
64
|
+
{ match: "seed-2-0-pro", in: 0.5, out: 2.5 },
|
|
65
|
+
{ match: "seed-2-0-lite", in: 0.08, out: 0.5 },
|
|
66
|
+
{ match: "seed-2-0-mini", in: 0.03, out: 0.3 },
|
|
61
67
|
{ match: "seed-1-6", in: 0.11, out: 0.28 },
|
|
62
68
|
{ match: "seed", in: 0.11, out: 0.28 },
|
|
63
69
|
{ match: "pro", in: 0.11, out: 0.28 },
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* terminal-setup — make Shift+Enter insert a newline in the agent REPL
|
|
3
|
+
* (Claude-Code `/terminal-setup` parity).
|
|
4
|
+
*
|
|
5
|
+
* cc's REPL is readline-based, so a bare Enter always submits. Multiline input
|
|
6
|
+
* is reached by ending a line with a continuation backslash (see
|
|
7
|
+
* repl-multiline.js). This module configures the terminal so that pressing
|
|
8
|
+
* Shift+Enter emits the byte sequence `<space>\<CR>` — which cc's
|
|
9
|
+
* backslash-continuation turns into a soft newline — giving the familiar
|
|
10
|
+
* "Shift+Enter = newline, Enter = send" editing without any REPL raw-mode hacks.
|
|
11
|
+
*
|
|
12
|
+
* Everything here is pure (detection + keybindings JSON shaping); the command
|
|
13
|
+
* (commands/terminal-setup.js) does the file I/O.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import os from "node:os";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The bytes Shift+Enter should send: space + backslash + carriage return. The
|
|
21
|
+
* leading space makes the trailing backslash satisfy repl-multiline's
|
|
22
|
+
* whitespace-gated continuation rule (so it is never mistaken for a Windows
|
|
23
|
+
* path), and the backslash is stripped back out when the line is joined.
|
|
24
|
+
*/
|
|
25
|
+
export const SHIFT_ENTER_SEQUENCE = " \\\r";
|
|
26
|
+
|
|
27
|
+
/** Identify the host terminal from environment variables. */
|
|
28
|
+
export function detectTerminal(env = process.env) {
|
|
29
|
+
const tp = String(env.TERM_PROGRAM || "").toLowerCase();
|
|
30
|
+
if (tp === "vscode" || env.VSCODE_PID || env.VSCODE_INJECTION) {
|
|
31
|
+
return { id: "vscode", name: "VS Code integrated terminal" };
|
|
32
|
+
}
|
|
33
|
+
if (tp === "iterm.app") return { id: "iterm2", name: "iTerm2" };
|
|
34
|
+
if (tp === "apple_terminal")
|
|
35
|
+
return { id: "apple-terminal", name: "Apple Terminal" };
|
|
36
|
+
if (tp === "wezterm") return { id: "wezterm", name: "WezTerm" };
|
|
37
|
+
if (env.WT_SESSION)
|
|
38
|
+
return { id: "windows-terminal", name: "Windows Terminal" };
|
|
39
|
+
return {
|
|
40
|
+
id: "unknown",
|
|
41
|
+
name: env.TERM_PROGRAM || env.TERM || "your terminal",
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** The VS Code keybinding that sends the Shift+Enter sequence in the terminal. */
|
|
46
|
+
export function vscodeKeybinding() {
|
|
47
|
+
return {
|
|
48
|
+
key: "shift+enter",
|
|
49
|
+
command: "workbench.action.terminal.sendSequence",
|
|
50
|
+
when: "terminalFocus",
|
|
51
|
+
args: { text: SHIFT_ENTER_SEQUENCE },
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Per-OS path to VS Code's user keybindings.json. */
|
|
56
|
+
export function vscodeKeybindingsPath(
|
|
57
|
+
platform = process.platform,
|
|
58
|
+
env = process.env,
|
|
59
|
+
) {
|
|
60
|
+
const home = os.homedir();
|
|
61
|
+
if (platform === "win32") {
|
|
62
|
+
const appData = env.APPDATA || path.join(home, "AppData", "Roaming");
|
|
63
|
+
return path.join(appData, "Code", "User", "keybindings.json");
|
|
64
|
+
}
|
|
65
|
+
if (platform === "darwin") {
|
|
66
|
+
return path.join(
|
|
67
|
+
home,
|
|
68
|
+
"Library",
|
|
69
|
+
"Application Support",
|
|
70
|
+
"Code",
|
|
71
|
+
"User",
|
|
72
|
+
"keybindings.json",
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return path.join(home, ".config", "Code", "User", "keybindings.json");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Strip JSONC (line + block comments, trailing commas) so a keybindings.json
|
|
80
|
+
* with comments can be parsed. Best-effort and string-aware enough for the
|
|
81
|
+
* common case; callers must tolerate a null parse.
|
|
82
|
+
*/
|
|
83
|
+
export function stripJsonc(text) {
|
|
84
|
+
let out = "";
|
|
85
|
+
const s = String(text || "");
|
|
86
|
+
let inStr = false;
|
|
87
|
+
let strCh = "";
|
|
88
|
+
let i = 0;
|
|
89
|
+
while (i < s.length) {
|
|
90
|
+
const c = s[i];
|
|
91
|
+
const n = s[i + 1];
|
|
92
|
+
if (inStr) {
|
|
93
|
+
out += c;
|
|
94
|
+
if (c === "\\") {
|
|
95
|
+
out += n ?? "";
|
|
96
|
+
i += 2;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (c === strCh) inStr = false;
|
|
100
|
+
i += 1;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (c === '"' || c === "'") {
|
|
104
|
+
inStr = true;
|
|
105
|
+
strCh = c;
|
|
106
|
+
out += c;
|
|
107
|
+
i += 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (c === "/" && n === "/") {
|
|
111
|
+
while (i < s.length && s[i] !== "\n") i += 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (c === "/" && n === "*") {
|
|
115
|
+
i += 2;
|
|
116
|
+
while (i < s.length && !(s[i] === "*" && s[i + 1] === "/")) i += 1;
|
|
117
|
+
i += 2;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
out += c;
|
|
121
|
+
i += 1;
|
|
122
|
+
}
|
|
123
|
+
// Drop trailing commas before } or ].
|
|
124
|
+
return out.replace(/,(\s*[}\]])/g, "$1");
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Parse a JSONC keybindings array → array, or null when it cannot be parsed. */
|
|
128
|
+
export function parseKeybindings(text) {
|
|
129
|
+
const src = String(text || "").trim();
|
|
130
|
+
if (!src) return [];
|
|
131
|
+
try {
|
|
132
|
+
const v = JSON.parse(stripJsonc(src));
|
|
133
|
+
return Array.isArray(v) ? v : null;
|
|
134
|
+
} catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** True when an equivalent keybinding (key+command+when) already exists. */
|
|
140
|
+
export function hasKeybinding(arr, binding) {
|
|
141
|
+
return (Array.isArray(arr) ? arr : []).some(
|
|
142
|
+
(b) =>
|
|
143
|
+
b &&
|
|
144
|
+
b.key === binding.key &&
|
|
145
|
+
b.command === binding.command &&
|
|
146
|
+
(b.when || "") === (binding.when || ""),
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Textually append a keybinding before the closing `]`, preserving the file's
|
|
152
|
+
* existing comments/formatting. Returns the new file text, or null when `text`
|
|
153
|
+
* is non-empty but not a JSON array (caller should not overwrite blindly).
|
|
154
|
+
*/
|
|
155
|
+
export function appendKeybindingText(text, binding) {
|
|
156
|
+
const bindingJson = JSON.stringify(binding, null, 2)
|
|
157
|
+
.split("\n")
|
|
158
|
+
.map((l) => " " + l)
|
|
159
|
+
.join("\n")
|
|
160
|
+
.trimStart();
|
|
161
|
+
const src = String(text || "").trim();
|
|
162
|
+
if (!src || src === "[]") {
|
|
163
|
+
return `[\n ${bindingJson}\n]\n`;
|
|
164
|
+
}
|
|
165
|
+
const close = src.lastIndexOf("]");
|
|
166
|
+
if (close === -1) return null; // not an array
|
|
167
|
+
const before = src.slice(0, close).replace(/\s*$/, "");
|
|
168
|
+
const sep = before.endsWith("[") ? "" : ",";
|
|
169
|
+
return `${before}${sep}\n ${bindingJson}\n]\n`;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Manual instructions for terminals cc cannot auto-configure. */
|
|
173
|
+
export function instructionsFor(id) {
|
|
174
|
+
const seq = "a space, then a backslash, then Enter";
|
|
175
|
+
const common = `Bind Shift+Enter to send ${seq} (cc turns a trailing "\\" into a newline).`;
|
|
176
|
+
switch (id) {
|
|
177
|
+
case "iterm2":
|
|
178
|
+
return [
|
|
179
|
+
common,
|
|
180
|
+
"iTerm2 → Settings → Profiles → Keys → Key Mappings → + :",
|
|
181
|
+
' Shortcut: Shift+Return Action: "Send Text" Text: \\ (then a literal Return)',
|
|
182
|
+
];
|
|
183
|
+
case "apple-terminal":
|
|
184
|
+
return [
|
|
185
|
+
common,
|
|
186
|
+
"Terminal → Settings → Profiles → Keyboard → + :",
|
|
187
|
+
' Key: Shift+Return Action: send string " \\015" (space, backslash, CR)',
|
|
188
|
+
];
|
|
189
|
+
case "windows-terminal":
|
|
190
|
+
return [
|
|
191
|
+
common,
|
|
192
|
+
"Windows Terminal → Settings → Actions (settings.json) → add:",
|
|
193
|
+
' { "command": { "action": "sendInput", "input": " \\\\\\r" }, "keys": "shift+enter" }',
|
|
194
|
+
];
|
|
195
|
+
case "wezterm":
|
|
196
|
+
return [
|
|
197
|
+
common,
|
|
198
|
+
"WezTerm (~/.wezterm.lua) keys:",
|
|
199
|
+
' { key="Enter", mods="SHIFT", action=wezterm.action.SendString(" \\\\\\r") }',
|
|
200
|
+
];
|
|
201
|
+
default:
|
|
202
|
+
return [
|
|
203
|
+
common,
|
|
204
|
+
"Most terminals let you remap a key to send custom text/bytes — point",
|
|
205
|
+
"Shift+Enter at the 3 bytes: space (0x20), backslash (0x5C), CR (0x0D).",
|
|
206
|
+
"Or just type a trailing \\ yourself to continue onto the next line.",
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
}
|