chainlesschain 0.161.4 → 0.161.6
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/bin/chainlesschain.js +0 -0
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-K85peDCg.js → AIOps-DfP4dtQA.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DoRABhmk.js → ActionButton-DZdIiY84.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-B7p7X_lS.js → Analytics-COxsbvRb.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-BQb9-BUE.js → AppLayout-BKrsihC0.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CHj8w38X.js → Audit-CNlw6BT8.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BsgPajcJ.js → Backup-DJax1BUm.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-kGeksnCj.js → BaseInput-CCc-oGsa.js} +1 -1
- package/src/assets/web-panel/assets/Chat-C5_iZkto.js +7 -0
- package/src/assets/web-panel/assets/{Chat-D4oAhi11.css → Chat-IlrLB9ZV.css} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DirndeMM.js → Checkbox-BqLBbvVu.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-UQuEF6rH.js → Codegen-C_ZHHyn4.js} +1 -1
- package/src/assets/web-panel/assets/{Col-myVf7h0M.js → Col-DY5o3xw5.js} +1 -1
- package/src/assets/web-panel/assets/{Community-C3Gt4JNP.js → Community-NWf71rLn.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B4TJcIuz.js → Compact-DFai5XtQ.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DKye9lMe.js → Compliance-FLeiFZLg.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-bD9Z8K9J.js → Cowork-C-rt92DS.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-BrQZ3zwQ.js → Cron-DuSZVwX4.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-C7m4dIrR.js → Crosschain-C2Sr6g2O.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CGniRypj.js → DID-C8hzIJVZ.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-BqQfrJLe.js → Dashboard-CnjEC6qh.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Csici42Z.js → Dropdown-DGGWa03e.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-D2boc2WU.js → Federation-C5pq65Oo.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BpXHcM06.js → FormItemContext-D6POEbFi.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C7QHt3Hy.js → Git-pDAuNI9b.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-DPBJNo9u.js → Governance-7oAOVDgM.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Ca8VokDu.js → Inference-B2jgqVc_.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CrFGz4u2.js → KnowledgeGraph-CsRfQMe3.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DMhNTvH6.js → Logs-Btr-_qa2.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DB0lVRRk.js → Marketplace-DYyQwT8S.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BmFQp5wQ.js → McpTools-DZ2Muqme.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-DDooyF2l.js → Memory-VFISHv9O.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Ci6BDiRi.js → Mtc-BepQB95_.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-J-DgVOwR.js → MtcAudit-P270xCa6.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-Uv0jicWQ.js → NLProgramming-ChY57Wov.js} +1 -1
- package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
- package/src/assets/web-panel/assets/Notes-DvYOc-LP.js +7 -0
- package/src/assets/web-panel/assets/{NotificationSettings-Cg4yXikq.js → NotificationSettings-DF1cYL7q.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-Bij8W2mU.js → Organization-BdFBs5tB.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-DNGM4vCD.js → Overflow-CWcf6XzX.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-9DlPC_rr.js → P2P-Dlpijkuf.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-BVJwnBDW.js → Permissions-DP9a2oRu.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-lWCcdQ9k.js → Pipeline-Dkhs1ieh.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BN60IEMG.js → Privacy-DyY4Soyq.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-GJoyBlLy.js → ProjectSettings-s-BGMUqA.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-Dvs_UqGv.js → Projects-LBas316e.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-A5KukRrJ.js → Providers-Bb57dGXh.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D4K2pIHJ.js → QuickAsk-MOldl0LD.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DQKR520B.js → Recommend-_rz-WgUu.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-BVntfhQV.js → Reputation-BH2ufLqB.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Do4ULXpm.js → Row-C-x3K6Kz.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-FAHzJo-E.js → RssFeed-BPVfstzo.js} +1 -1
- package/src/assets/web-panel/assets/{Search-DsOTkKd1.js → Search-Dz1IUxuk.js} +1 -1
- package/src/assets/web-panel/assets/{Security-hglxmoVZ.js → Security-CjzlawSi.js} +1 -1
- package/src/assets/web-panel/assets/{Services-C6Rv4i8z.js → Services-B_at9R_D.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-D-dXFspp.js → Skeleton-DUmYTGQw.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-D6sVDuOT.js → Skills-tgkSIrrj.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-8O-JYjQq.js → Sla-Bb_VPx_C.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DSOYsk6R.js → SpeechSettings-BvEO_KFQ.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-C5nhT_6b.js → SyncSettings-BYE2fOCe.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-NrpJCUFD.js → Tasks-BOvITbzT.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Ca2HO-Ff.js → Templates-CPcOkdWV.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BWXC1pLX.js → Tenant-CXn2k3Bt.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DUtMwWxZ.js → Tokens-ljGLGE7n.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-TyynxipZ.js → Trigger-DULI2abh.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-b4KDouFb.js → Trust-D4Y1Uqbj.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CJpVhu8c.js → UkeySign-CNIMnMaX.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Bpn0V8T2.js → VideoEditing-B0sKBx8K.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CzBLjCnl.js → Wallet-ClcaEXP3.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-HnRCEu5Q.js → WebAuthn-CJ-szm66.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-CMWDod4n.js → WorkflowEditor-B0A6bzvw.js} +1 -1
- package/src/assets/web-panel/assets/chat-CAmp7Hj4.js +1 -0
- package/src/assets/web-panel/assets/{colors-BO5nQJrH.js → colors-DIdEYifT.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-By0t_ZDX.js → compact-item-DgctsprC.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CHZw2WQy.js → createContext-D68iSn12.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-CHScXGSD.js → hasIn-BfVEkwDr.js} +1 -1
- package/src/assets/web-panel/assets/{index-BuzilAPw.js → index-1eTDj8GN.js} +1 -1
- package/src/assets/web-panel/assets/index-4FtfPG2_.js +1 -0
- package/src/assets/web-panel/assets/{index-DqPwMq7i.js → index-B04XbTiI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CfZqQ0JR.js → index-B2a-87jy.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCoEssNV.js → index-B86dckwF.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdOG1g8i.js → index-B9q7lYch.js} +1 -1
- package/src/assets/web-panel/assets/{index-CYCwDDoS.js → index-BATrOSqQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CszhN_r3.js → index-BC_AMP2G.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_EIwaP7.js → index-BL-ktXCL.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1ssAFdz.js → index-BVuBArIr.js} +1 -1
- package/src/assets/web-panel/assets/{index-yLdzB8i-.js → index-BWjGDulF.js} +1 -1
- package/src/assets/web-panel/assets/{index-By3TOq5w.js → index-BZsWnNr5.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_QlAaj5.js → index-BbXyrISU.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZ4t_1f-.js → index-BhSL3LyU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIoymtmG.js → index-ByPXCWc3.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXXqtwrw.js → index-ByVIuAuT.js} +1 -1
- package/src/assets/web-panel/assets/{index-COVlQxSz.js → index-CGV32m2d.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFMpMM1y.js → index-COfT8est.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bn_0bupT.js → index-CWc9qPWf.js} +4 -4
- package/src/assets/web-panel/assets/{index-Bbf4Smm-.js → index-CYwWREKu.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-VML4Pz.js → index-Cd9Uk85_.js} +1 -1
- package/src/assets/web-panel/assets/{index-jRQNL6Yj.js → index-CjxYnpFI.js} +1 -1
- package/src/assets/web-panel/assets/{index-Qm6Kn3iq.js → index-D9VsNXsF.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAPiTJT4.js → index-DDG4mKAW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCOGrBpN.js → index-DIri4kXm.js} +1 -1
- package/src/assets/web-panel/assets/{index-DgWJBqLh.js → index-DQopgmlq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpHzrw8g.js → index-DlM0-wO_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnaKc6VJ.js → index-Dnjhvibk.js} +1 -1
- package/src/assets/web-panel/assets/{index-Czk89HQF.js → index-DnspH2S5.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgAPyeU5.js → index-Do7M55ke.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVL4FbJ3.js → index-DpfbHg4B.js} +1 -1
- package/src/assets/web-panel/assets/{index-DS0o68gc.js → index-L1rKfgbj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiHryOr_.js → index-N7q4pvXQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BY-BnqWj.js → index-OEgd0e2J.js} +1 -1
- package/src/assets/web-panel/assets/index-Ri5xYTdD.js +1 -0
- package/src/assets/web-panel/assets/{index-D3WrGn-J.js → index-bZQ4WUeB.js} +1 -1
- package/src/assets/web-panel/assets/{index-U1O0AXXH.js → index-h3RwMnvW.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6FaCH6K.js → index-j3mQvPO6.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CMFUJGsa.js → initDefaultProps-D5bRziL5.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CTtMugIF.js → motion-DEkPod7A.js} +1 -1
- package/src/assets/web-panel/assets/{move-DHjaLqhq.js → move-CB_1Dwv-.js} +1 -1
- package/src/assets/web-panel/assets/{omit-COm0v71g.js → omit-UkvsaZ7a.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-C3Ftf-sl.js → pickAttrs-wcF9VtXD.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-IJhTwCmF.js → placementArrow-DyFS6p4H.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-Cmu2mrKT.js → responsiveObserve-aP8GIgAb.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CnWCDeu_.js → slide-HrH-9peG.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CSOJeZ-L.js → statusUtils-tnhAwJgv.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-94VBD7Xs.js → styleChecker-B8gy0RNi.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CBjbWuc9.js → useFlexGapSupport-Do-bHuEg.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DfXp51Mk.js → useFs-DMBSmk-z.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CGY3YRLi.js → vnode-BI-CTVZ1.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CZllDiMO.js → zoom-BrBIcdS0.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/gateways/ws/chat-intent-protocol.js +13 -19
- package/src/gateways/ws/llm-chat-protocol.js +166 -0
- package/src/gateways/ws/llm-creds.js +93 -0
- package/src/gateways/ws/message-dispatcher.js +1 -0
- package/src/gateways/ws/ws-server.js +6 -0
- package/src/assets/web-panel/assets/Chat-2e3EGiwk.js +0 -7
- package/src/assets/web-panel/assets/Notes-BHauapxR.css +0 -1
- package/src/assets/web-panel/assets/Notes-SGtdMwfH.js +0 -7
- package/src/assets/web-panel/assets/chat-D7QE42qx.js +0 -1
- package/src/assets/web-panel/assets/index-BqMhh2pY.js +0 -1
- package/src/assets/web-panel/assets/index-sgVQrC2c.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{z as p,A as k,B as C,P as F,D as _,F as z,f}from"./index-
|
|
1
|
+
import{z as p,A as k,B as C,P as F,D as _,F as z,f}from"./index-CWc9qPWf.js";import{w as L}from"./raf-Deuc0E8-.js";import{b as I,f as D,d as O,q as R,o as H,w as A,n as j,e as q,c as T,s as v}from"./vendor-Ci2pTZ_t.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 V=`vc-util-locker-${Date.now()}`;let x=0;function G(){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=`${V}_${x}`;I(t=>{if(p()){if(n.value){const r=W(),a=G();k(`
|
|
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-CWc9qPWf.js";import{i as s}from"./motion-DEkPod7A.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{f as s}from"./index-
|
|
1
|
+
import{f as s}from"./index-CWc9qPWf.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{f as i}from"./index-
|
|
1
|
+
import{f as i}from"./index-CWc9qPWf.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-IJhTwCmF.js → placementArrow-DyFS6p4H.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as i}from"./index-
|
|
1
|
+
import{f as i}from"./index-CWc9qPWf.js";const L=(e,o,t,n,p)=>{const r=e/2,a=0,s=r,m=t*1/Math.sqrt(2),g=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)),h=2*r-b,w=u,d=2*r-m,c=g,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} ${g} L ${b} ${u} A ${o} ${o} 0 0 1 ${h} ${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:g,contentRadius:b=e.borderRadiusLG,limitVerticalRadius:u}=o,{dropdownArrowOffsetVertical:h,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:h},[`&-placement-leftBottom ${t}-arrow`]:{bottom:h},[[`&-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:h},[`&-placement-rightBottom ${t}-arrow`]:{bottom:h},[_(["&-placement-topLeft","&-placement-top","&-placement-topRight"].map(c=>c+=":not(&-arrow-hidden)"),g)]:{paddingBottom:d},[_(["&-placement-bottomLeft","&-placement-bottom","&-placement-bottomRight"].map(c=>c+=":not(&-arrow-hidden)"),g)]:{paddingTop:d},[_(["&-placement-leftTop","&-placement-left","&-placement-leftBottom"].map(c=>c+=":not(&-arrow-hidden)"),g)]:{paddingRight:{_skip_check_:!0,value:d}},[_(["&-placement-rightTop","&-placement-right","&-placement-rightBottom"].map(c=>c+=":not(&-arrow-hidden)"),g)]:{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-Cmu2mrKT.js → responsiveObserve-aP8GIgAb.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as h,f as l}from"./index-
|
|
1
|
+
import{H as h,f as l}from"./index-CWc9qPWf.js";import{f as x}from"./vendor-Ci2pTZ_t.js";const b=["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]=h();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=m=>{let{matches:o}=m;this.dispatch(l(l({},c),{[e]:o}))},d=window.matchMedia(t);d.addListener(s),this.matchHandlers[t]={mql:d,listener:s},s(d)})},responsiveMap:n}})}export{b as r,w as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{K as n}from"./index-
|
|
1
|
+
import{K as n}from"./index-CWc9qPWf.js";import{i as e}from"./motion-DEkPod7A.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{h as e}from"./index-
|
|
1
|
+
import{h as e}from"./index-CWc9qPWf.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{z as d}from"./index-
|
|
1
|
+
import{z as d}from"./index-CWc9qPWf.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-CBjbWuc9.js → useFlexGapSupport-Do-bHuEg.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as o}from"./styleChecker-
|
|
1
|
+
import{d as o}from"./styleChecker-B8gy0RNi.js";import{o as t,s}from"./vendor-Ci2pTZ_t.js";const r=(()=>{const e=s(!1);return t(()=>{e.value=o()}),e});export{r as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as d}from"./index-
|
|
1
|
+
import{u as d}from"./index-CWc9qPWf.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{L as i,f as a,w as l}from"./index-
|
|
1
|
+
import{L as i,f as a,w as l}from"./index-CWc9qPWf.js";import{a5 as o,k as d,C as g,F as f,A as p}from"./vendor-Ci2pTZ_t.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"),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=>d(r)?!(r.type===g||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-CWc9qPWf.js";import{i as f}from"./motion-DEkPod7A.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-CWc9qPWf.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-Ci2pTZ_t.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/icons-B2G69bhT.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-CfX1DEtk.css">
|
|
@@ -16,25 +16,19 @@ import {
|
|
|
16
16
|
understandIntentStream,
|
|
17
17
|
classifyFollowupIntent,
|
|
18
18
|
} from "../../lib/chat-intent-service.js";
|
|
19
|
+
import { resolveLlmCreds } from "./llm-creds.js";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
|
-
* Look up
|
|
22
|
+
* Look up LLM creds for the intent flow.
|
|
23
|
+
*
|
|
24
|
+
* Shared resolver covers session creds + env fallback (`VOLCENGINE_API_KEY`
|
|
25
|
+
* etc.), so a user without `cc auth llm` configured but with an env var
|
|
26
|
+
* exported still gets intent recognition. Pre-v5.0.3.45 this path
|
|
27
|
+
* hardcoded `baseUrl` to `http://localhost:11434` when the session lacked
|
|
28
|
+
* one — fatal for cloud providers when ollama wasn't running locally.
|
|
22
29
|
*/
|
|
23
|
-
function resolveLlmOptions(server,
|
|
24
|
-
|
|
25
|
-
let session;
|
|
26
|
-
try {
|
|
27
|
-
session = server.sessionManager.getSession(sessionId);
|
|
28
|
-
} catch (_e) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
if (!session?.provider) return null;
|
|
32
|
-
return {
|
|
33
|
-
provider: session.provider,
|
|
34
|
-
model: session.model,
|
|
35
|
-
baseUrl: session.baseUrl || "http://localhost:11434",
|
|
36
|
-
apiKey: session.apiKey,
|
|
37
|
-
};
|
|
30
|
+
function resolveLlmOptions(server, message) {
|
|
31
|
+
return resolveLlmCreds(server, message);
|
|
38
32
|
}
|
|
39
33
|
|
|
40
34
|
/**
|
|
@@ -55,7 +49,7 @@ export async function handleChatIntentUnderstand(server, id, ws, message) {
|
|
|
55
49
|
});
|
|
56
50
|
return;
|
|
57
51
|
}
|
|
58
|
-
const llmOptions = resolveLlmOptions(server, message
|
|
52
|
+
const llmOptions = resolveLlmOptions(server, message);
|
|
59
53
|
// Cap the history payload server-side so a misbehaving client can't
|
|
60
54
|
// blow out the context window.
|
|
61
55
|
const history = Array.isArray(message.history)
|
|
@@ -112,7 +106,7 @@ export async function handleChatIntentUnderstandStream(
|
|
|
112
106
|
});
|
|
113
107
|
return;
|
|
114
108
|
}
|
|
115
|
-
const llmOptions = resolveLlmOptions(server, message
|
|
109
|
+
const llmOptions = resolveLlmOptions(server, message);
|
|
116
110
|
const history = Array.isArray(message.history)
|
|
117
111
|
? message.history.slice(-10)
|
|
118
112
|
: undefined;
|
|
@@ -170,7 +164,7 @@ export async function handleChatIntentClassifyFollowup(
|
|
|
170
164
|
) {
|
|
171
165
|
try {
|
|
172
166
|
const input = message.input || "";
|
|
173
|
-
const llmOptions = resolveLlmOptions(server, message
|
|
167
|
+
const llmOptions = resolveLlmOptions(server, message);
|
|
174
168
|
const result = await classifyFollowupIntent({
|
|
175
169
|
input,
|
|
176
170
|
context: message.context || {},
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* llm.chat WS protocol — single-shot streaming chat for cc ui's QuickAsk page.
|
|
3
|
+
*
|
|
4
|
+
* The desktop web-shell has had this topic since `4eaf90137` (Phase 2). cc ui
|
|
5
|
+
* never registered it, so QuickAsk would hit ws.sendStream's 60s idle timer
|
|
6
|
+
* and surface "Stream idle timeout" forever. Filed as a regression report
|
|
7
|
+
* comparing v5.0.3.43 desktop (works) with v5.0.3.44 cc ui (hung) — root
|
|
8
|
+
* cause is the missing handler, not a code regression.
|
|
9
|
+
*
|
|
10
|
+
* Frame shape mirrors the desktop's llm-handlers.js so the SPA's
|
|
11
|
+
* `useLlmChat()` consumer is environment-agnostic:
|
|
12
|
+
*
|
|
13
|
+
* client → server: { id, type:"llm.chat", messages:[{role, content}],
|
|
14
|
+
* sessionId?, options?:{ provider?, model?, baseUrl?,
|
|
15
|
+
* apiKey?, temperature? } }
|
|
16
|
+
*
|
|
17
|
+
* server → client (streaming):
|
|
18
|
+
* { id, type:"llm.chat.chunk", chunk:{ delta, content } }
|
|
19
|
+
* ... per-token ...
|
|
20
|
+
* { id, type:"llm.chat.result", ok:true,
|
|
21
|
+
* result:{ message:{role:"assistant", content}, model, tokens? } }
|
|
22
|
+
*
|
|
23
|
+
* On error before / mid-stream:
|
|
24
|
+
* { id, type:"llm.chat.result", ok:false, error:"<msg>" }
|
|
25
|
+
*
|
|
26
|
+
* Provider resolution (first non-null wins):
|
|
27
|
+
* 1. message.options — explicit provider/model/apiKey from the client
|
|
28
|
+
* 2. server.sessionManager.getSession(sessionId) — set via `cc auth llm`
|
|
29
|
+
* 3. process.env[BUILT_IN_PROVIDERS[provider].apiKeyEnv]
|
|
30
|
+
*
|
|
31
|
+
* Without any source of credentials we send a clean ok:false frame instantly
|
|
32
|
+
* — the user sees an actionable error rather than a 60s hang.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
import {
|
|
36
|
+
streamOllama,
|
|
37
|
+
streamOpenAI,
|
|
38
|
+
streamAnthropic,
|
|
39
|
+
} from "../../lib/chat-core.js";
|
|
40
|
+
import { BUILT_IN_PROVIDERS } from "../../lib/llm-providers.js";
|
|
41
|
+
import { resolveLlmCreds } from "./llm-creds.js";
|
|
42
|
+
|
|
43
|
+
function validateMessages(messages) {
|
|
44
|
+
if (!Array.isArray(messages) || messages.length === 0)
|
|
45
|
+
return "messages_required";
|
|
46
|
+
for (const m of messages) {
|
|
47
|
+
if (
|
|
48
|
+
!m ||
|
|
49
|
+
typeof m !== "object" ||
|
|
50
|
+
typeof m.role !== "string" ||
|
|
51
|
+
typeof m.content !== "string"
|
|
52
|
+
) {
|
|
53
|
+
return "invalid_message_shape";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Streaming handler for `llm.chat`. The dispatcher invokes it; we own the
|
|
61
|
+
* full frame protocol (chunks + terminal result) so the consumer-side
|
|
62
|
+
* useLlmChat() works unchanged whether the WS gateway is desktop's
|
|
63
|
+
* web-shell or cc ui.
|
|
64
|
+
*/
|
|
65
|
+
export async function handleLlmChat(server, id, ws, message) {
|
|
66
|
+
const topic = "llm.chat";
|
|
67
|
+
const send = (frame) => server._send(ws, { id, ...frame });
|
|
68
|
+
|
|
69
|
+
const validationError = validateMessages(message?.messages);
|
|
70
|
+
if (validationError) {
|
|
71
|
+
send({ type: `${topic}.result`, ok: false, error: validationError });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const creds = resolveLlmCreds(server, message);
|
|
76
|
+
if (!creds || !creds.provider) {
|
|
77
|
+
send({
|
|
78
|
+
type: `${topic}.result`,
|
|
79
|
+
ok: false,
|
|
80
|
+
error:
|
|
81
|
+
"no_llm_provider_configured: pass options.provider + apiKey, sessionId with creds, or set <PROVIDER>_API_KEY env",
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (creds.provider !== "ollama" && !creds.apiKey) {
|
|
87
|
+
const envHint = BUILT_IN_PROVIDERS[creds.provider]?.apiKeyEnv;
|
|
88
|
+
send({
|
|
89
|
+
type: `${topic}.result`,
|
|
90
|
+
ok: false,
|
|
91
|
+
error: `missing_api_key for ${creds.provider}${envHint ? ` (set ${envHint})` : ""}`,
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
let accumulator = "";
|
|
97
|
+
const onToken = (token) => {
|
|
98
|
+
if (typeof token !== "string" || token.length === 0) return;
|
|
99
|
+
accumulator += token;
|
|
100
|
+
send({
|
|
101
|
+
type: `${topic}.chunk`,
|
|
102
|
+
chunk: { delta: token, content: accumulator },
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
let usage = null;
|
|
107
|
+
const onUsage = (u) => {
|
|
108
|
+
usage = u;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const baseUrl = creds.baseUrl || "http://localhost:11434";
|
|
113
|
+
if (creds.provider === "ollama") {
|
|
114
|
+
await streamOllama(
|
|
115
|
+
message.messages,
|
|
116
|
+
creds.model,
|
|
117
|
+
baseUrl,
|
|
118
|
+
onToken,
|
|
119
|
+
onUsage,
|
|
120
|
+
);
|
|
121
|
+
} else if (creds.provider === "anthropic") {
|
|
122
|
+
const def = BUILT_IN_PROVIDERS.anthropic;
|
|
123
|
+
const url = baseUrl !== "http://localhost:11434" ? baseUrl : def.baseUrl;
|
|
124
|
+
await streamAnthropic(
|
|
125
|
+
message.messages,
|
|
126
|
+
creds.model,
|
|
127
|
+
url,
|
|
128
|
+
creds.apiKey,
|
|
129
|
+
onToken,
|
|
130
|
+
onUsage,
|
|
131
|
+
);
|
|
132
|
+
} else {
|
|
133
|
+
// OpenAI-compatible — covers openai / volcengine / deepseek / dashscope /
|
|
134
|
+
// kimi / minimax / mistral / custom. baseUrl from creds; default-from
|
|
135
|
+
// BUILT_IN_PROVIDERS already applied above.
|
|
136
|
+
const def = BUILT_IN_PROVIDERS[creds.provider];
|
|
137
|
+
const url = baseUrl !== "http://localhost:11434" ? baseUrl : def?.baseUrl;
|
|
138
|
+
await streamOpenAI(
|
|
139
|
+
message.messages,
|
|
140
|
+
creds.model,
|
|
141
|
+
url,
|
|
142
|
+
creds.apiKey,
|
|
143
|
+
onToken,
|
|
144
|
+
onUsage,
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
send({
|
|
149
|
+
type: `${topic}.result`,
|
|
150
|
+
ok: true,
|
|
151
|
+
result: {
|
|
152
|
+
message: { role: "assistant", content: accumulator },
|
|
153
|
+
model: creds.model,
|
|
154
|
+
provider: creds.provider,
|
|
155
|
+
tokens: usage?.outputTokens ?? null,
|
|
156
|
+
promptTokens: usage?.inputTokens ?? null,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
} catch (err) {
|
|
160
|
+
send({
|
|
161
|
+
type: `${topic}.result`,
|
|
162
|
+
ok: false,
|
|
163
|
+
error: err?.message || String(err),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM credential resolver for WS handlers.
|
|
3
|
+
*
|
|
4
|
+
* Used by both `llm.chat` (single-shot streaming) and `chat.intent.*`
|
|
5
|
+
* (intent-understanding flow). Encapsulates the precedence rules so adding
|
|
6
|
+
* a third consumer doesn't fork them again.
|
|
7
|
+
*
|
|
8
|
+
* Resolution order (first non-null wins):
|
|
9
|
+
* 1. Explicit `message.options.{provider,model,baseUrl,apiKey}` from client.
|
|
10
|
+
* 2. WS session creds via `server.sessionManager.getSession(sessionId)`.
|
|
11
|
+
* 3. Process env — first BUILT_IN_PROVIDERS entry whose apiKeyEnv is set.
|
|
12
|
+
*
|
|
13
|
+
* Fall-throughs:
|
|
14
|
+
* - Provider with `free: true` (ollama) doesn't need apiKey; a session
|
|
15
|
+
* entry with provider=ollama and no apiKey is valid.
|
|
16
|
+
* - For non-ollama providers, missing apiKey is a fatal — the caller
|
|
17
|
+
* should send a clean error frame instead of hanging on a 401.
|
|
18
|
+
* - When no source has any creds, returns null. Caller decides whether
|
|
19
|
+
* to fail-fast (llm.chat) or yield "LLM not configured" (chat-intent).
|
|
20
|
+
*
|
|
21
|
+
* @returns {{provider, model, baseUrl, apiKey} | null}
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { BUILT_IN_PROVIDERS } from "../../lib/llm-providers.js";
|
|
25
|
+
|
|
26
|
+
const ENV_PREFERRED_ORDER = [
|
|
27
|
+
"volcengine",
|
|
28
|
+
"openai",
|
|
29
|
+
"anthropic",
|
|
30
|
+
"deepseek",
|
|
31
|
+
"dashscope",
|
|
32
|
+
"gemini",
|
|
33
|
+
"kimi",
|
|
34
|
+
"minimax",
|
|
35
|
+
"mistral",
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
export function resolveLlmCreds(server, message) {
|
|
39
|
+
const opts = message?.options || {};
|
|
40
|
+
const optProvider = opts.provider;
|
|
41
|
+
const optModel = opts.model;
|
|
42
|
+
const optBaseUrl = opts.baseUrl;
|
|
43
|
+
const optApiKey = opts.apiKey;
|
|
44
|
+
|
|
45
|
+
if (optProvider) {
|
|
46
|
+
const def = BUILT_IN_PROVIDERS[optProvider];
|
|
47
|
+
return {
|
|
48
|
+
provider: optProvider,
|
|
49
|
+
model: optModel || def?.models?.[0] || null,
|
|
50
|
+
baseUrl: optBaseUrl || def?.baseUrl || null,
|
|
51
|
+
apiKey: optApiKey || (def?.apiKeyEnv ? process.env[def.apiKeyEnv] : null),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const sessionId = message?.sessionId;
|
|
56
|
+
if (sessionId && server?.sessionManager?.getSession) {
|
|
57
|
+
let session;
|
|
58
|
+
try {
|
|
59
|
+
session = server.sessionManager.getSession(sessionId);
|
|
60
|
+
} catch {
|
|
61
|
+
session = null;
|
|
62
|
+
}
|
|
63
|
+
if (session?.provider) {
|
|
64
|
+
const def = BUILT_IN_PROVIDERS[session.provider];
|
|
65
|
+
// Don't default baseUrl to ollama — that breaks every cloud provider
|
|
66
|
+
// when the session was created without an explicit baseUrl. Fall back
|
|
67
|
+
// to the provider's own default endpoint instead.
|
|
68
|
+
const fallbackBase =
|
|
69
|
+
def?.baseUrl ||
|
|
70
|
+
(session.provider === "ollama" ? "http://localhost:11434" : null);
|
|
71
|
+
return {
|
|
72
|
+
provider: session.provider,
|
|
73
|
+
model: optModel || session.model,
|
|
74
|
+
baseUrl: session.baseUrl || fallbackBase,
|
|
75
|
+
apiKey: session.apiKey,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
for (const name of ENV_PREFERRED_ORDER) {
|
|
81
|
+
const def = BUILT_IN_PROVIDERS[name];
|
|
82
|
+
if (def?.apiKeyEnv && process.env[def.apiKeyEnv]) {
|
|
83
|
+
return {
|
|
84
|
+
provider: name,
|
|
85
|
+
model: optModel || def.models?.[0] || null,
|
|
86
|
+
baseUrl: def.baseUrl,
|
|
87
|
+
apiKey: process.env[def.apiKeyEnv],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
@@ -96,6 +96,7 @@ export function createWsMessageDispatcher(server) {
|
|
|
96
96
|
server._handleChatIntentUnderstandStream(id, ws, message),
|
|
97
97
|
"chat.intent.classify-followup": () =>
|
|
98
98
|
server._handleChatIntentClassifyFollowup(id, ws, message),
|
|
99
|
+
"llm.chat": () => server._handleLlmChat(id, ws, message),
|
|
99
100
|
};
|
|
100
101
|
|
|
101
102
|
// Phase I — Hosted Session API streaming routes (stream.run).
|
|
@@ -79,6 +79,7 @@ import {
|
|
|
79
79
|
handleChatIntentUnderstandStream,
|
|
80
80
|
handleChatIntentClassifyFollowup,
|
|
81
81
|
} from "./chat-intent-protocol.js";
|
|
82
|
+
import { handleLlmChat } from "./llm-chat-protocol.js";
|
|
82
83
|
|
|
83
84
|
const __filename = fileURLToPath(import.meta.url);
|
|
84
85
|
const __dirname = dirname(__filename);
|
|
@@ -519,6 +520,11 @@ export class ChainlessChainWSServer extends EventEmitter {
|
|
|
519
520
|
return handleChatIntentClassifyFollowup(this, id, ws, message);
|
|
520
521
|
}
|
|
521
522
|
|
|
523
|
+
/** @private — single-shot streaming chat for QuickAsk (`llm.chat` topic) */
|
|
524
|
+
async _handleLlmChat(id, ws, message) {
|
|
525
|
+
return handleLlmChat(this, id, ws, message);
|
|
526
|
+
}
|
|
527
|
+
|
|
522
528
|
/** @private */
|
|
523
529
|
_handleAuth(clientId, ws, message) {
|
|
524
530
|
const { id, token } = message;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{L as l,M as m,R as f,Q as z,u as _,P as u,S as O,Z as Y,f as k,w as Z,o as ge,n as W,x as Me,$ as ae,F as G,Y as J,U as de,r as L,K as D,c as y,N as w,O as A,a0 as Oe,a1 as ze,H as Ee,I as Ae,a as Te}from"./vendor-Ci2pTZ_t.js";import{_ as ee,b as Fe}from"./index-Bn_0bupT.js";import{u as Re,M as Pe}from"./chat-D7QE42qx.js";import{a as qe,L as ye,w as je,ad as De,ae as Le,f as Ne,c as We,p as Be,af as he,ag as Ve,b as He,F as fe,G as me,M as Ue,aa as pe,k as Qe,ah as Ke,ai as Ge}from"./icons-B2G69bhT.js";import{r as Je}from"./markdown-vYH_ziAO.js";import"./markdown-xjUYbPSW.js";const Xe=["data-testid"],Ye={class:"cb-action__icon"},Ze={class:"cb-action__label"},et={key:0,class:"cb-action__detail"},tt={key:1,class:"cb-action__caret"},st={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(c,{emit:g}){const e=c,t=g;function s(){e.expandable&&t("toggle")}return(n,i)=>(l(),m("div",{class:Y(["cb-action",[`cb-action--${c.item.status}`,{"cb-action--expandable":c.expandable,"cb-action--open":c.expanded}]]),"data-testid":`tool-card-${c.item.id}`,onClick:s},[f("span",Ye,[c.item.status==="done"?(l(),z(_(qe),{key:0})):c.item.status==="running"?(l(),z(_(ye),{key:1})):(l(),z(_(je),{key:2}))]),f("span",Ze,u(c.item.label),1),c.item.detail?(l(),m("span",et,u(c.item.detail),1)):O("",!0),c.expandable?(l(),m("span",tt,[c.expanded?(l(),z(_(De),{key:0})):(l(),z(_(Le),{key:1}))])):O("",!0)],10,Xe))}},nt=ee(st,[["__scopeId","data-v-cf5a0925"]]),it=["innerHTML"],ot={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(c){const g=c,e=k(()=>Je(g.content||""));return(t,s)=>(l(),m("div",{class:"markdown-content",innerHTML:e.value},null,8,it))}},at=ee(ot,[["__scopeId","data-v-693ca57e"]]);function K(c,g,e){let t=e.initialDeps??[],s,n=!0;function i(){var a,r,I;let S;e.key&&((a=e.debug)!=null&&a.call(e))&&(S=Date.now());const b=c();if(!(b.length!==t.length||b.some((v,x)=>t[x]!==v)))return s;t=b;let d;if(e.key&&((r=e.debug)!=null&&r.call(e))&&(d=Date.now()),s=g(...b),e.key&&((I=e.debug)!=null&&I.call(e))){const v=Math.round((Date.now()-S)*100)/100,x=Math.round((Date.now()-d)*100)/100,M=x/16,T=(E,P)=>{for(E=String(E);E.length<P;)E=" "+E;return E};console.info(`%c⏱ ${T(x,5)} /${T(v,5)} ms`,`
|
|
2
|
-
font-size: .6rem;
|
|
3
|
-
font-weight: bold;
|
|
4
|
-
color: hsl(${Math.max(0,Math.min(120-120*M,120))}deg 100% 31%);`,e?.key)}return e?.onChange&&!(n&&e.skipInitialOnChange)&&e.onChange(s),n=!1,s}return i.updateDeps=a=>{t=a},i}function ve(c,g){if(c===void 0)throw new Error("Unexpected undefined");return c}const lt=(c,g)=>Math.abs(c-g)<1.01,rt=c=>c,ct=c=>{const g=Math.max(c.startIndex-c.overscan,0),e=Math.min(c.endIndex+c.overscan,c.count-1),t=[];for(let s=g;s<=e;s++)t.push(s);return t},ut=(c,g,e)=>{if(g?.borderBoxSize){const t=g.borderBoxSize[0];if(t)return Math.round(t[e.options.horizontal?"inlineSize":"blockSize"])}return c[e.options.horizontal?"offsetWidth":"offsetHeight"]};class dt{constructor(g){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e,t,s;return((s=(t=(e=this.targetWindow)==null?void 0:e.performance)==null?void 0:t.now)==null?void 0:s.call(t))??Date.now()},this.observer=(()=>{let e=null;const t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(s=>{s.forEach(n=>{const i=()=>{const a=n.target,r=this.indexFromElement(a);if(!a.isConnected){this.observer.unobserve(a);return}this.shouldMeasureDuringScroll(r)&&this.resizeItem(r,this.options.measureElement(a,n,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(i):i()})}));return{disconnect:()=>{var s;(s=t())==null||s.disconnect(),e=null},observe:s=>{var n;return(n=t())==null?void 0:n.observe(s,{box:"border-box"})},unobserve:s=>{var n;return(n=t())==null?void 0:n.unobserve(s)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,s])=>{typeof s>"u"&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:rt,rangeExtractor:ct,onChange:()=>{},measureElement:ut,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...e}},this.notify=e=>{var t,s;(s=(t=this.options).onChange)==null||s.call(t,this,e)},this.maybeNotify=K(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t){this.maybeNotify();return}this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((e=this.scrollElement)==null?void 0:e.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,n)=>{this.scrollAdjustments=0,this.scrollDirection=n?this.getScrollOffset()<s?"forward":"backward":null,this.scrollOffset=s,this.isScrolling=n,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{const s=new Map,n=new Map;for(let i=t-1;i>=0;i--){const a=e[i];if(s.has(a.lane))continue;const r=n.get(a.lane);if(r==null||a.end>r.end?n.set(a.lane,a):a.end<r.end&&s.set(a.lane,!0),s.size===this.options.lanes)break}return n.size===this.options.lanes?Array.from(n.values()).sort((i,a)=>i.end===a.end?i.index-a.index:i.end-a.end)[0]:void 0},this.getMeasurementOptions=K(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,s,n,i,a,r)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:s,getItemKey:n,enabled:i,lanes:a,laneAssignmentMode:r}),{key:!1}),this.getMeasurements=K(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:s,getItemKey:n,enabled:i,lanes:a,laneAssignmentMode:r},I)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(const d of this.laneAssignments.keys())d>=e&&this.laneAssignments.delete(d);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(d=>{this.itemSizeCache.set(d.key,d.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);const b=this.measurementsCache.slice(0,S),R=new Array(a).fill(void 0);for(let d=0;d<S;d++){const v=b[d];v&&(R[v.lane]=d)}for(let d=S;d<e;d++){const v=n(d),x=this.laneAssignments.get(d);let M,T;const E=r==="estimate"||I.has(v);if(x!==void 0&&this.options.lanes>1){M=x;const C=R[M],B=C!==void 0?b[C]:void 0;T=B?B.end+this.options.gap:t+s}else{const C=this.options.lanes===1?b[d-1]:this.getFurthestMeasurement(b,d);T=C?C.end+this.options.gap:t+s,M=C?C.lane:d%this.options.lanes,this.options.lanes>1&&E&&this.laneAssignments.set(d,M)}const P=I.get(v),H=typeof P=="number"?P:this.options.estimateSize(d),q=T+H;b[d]={index:d,start:T,size:H,end:q,key:v,lane:M},R[M]=d}return this.measurementsCache=b,b},{key:!1,debug:()=>this.options.debug}),this.calculateRange=K(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,s,n)=>this.range=e.length>0&&t>0?ht({measurements:e,outerSize:t,scrollOffset:s,lanes:n}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=K(()=>{let e=null,t=null;const s=this.calculateRange();return s&&(e=s.startIndex,t=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,s,n,i)=>n===null||i===null?[]:e({startIndex:n,endIndex:i,overscan:t,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const t=this.options.indexAttribute,s=e.getAttribute(t);return s?parseInt(s,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var t;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((t=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:t.index);if(s!==void 0&&this.range){const n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),i=Math.max(0,s-n),a=Math.min(this.options.count-1,s+n);return e>=i&&e<=a}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((i,a)=>{i.isConnected||(this.observer.unobserve(i),this.elementsCache.delete(a))});return}const t=this.indexFromElement(e),s=this.options.getItemKey(t),n=this.elementsCache.get(s);n!==e&&(n&&this.observer.unobserve(n),this.observer.observe(e),this.elementsCache.set(s,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var s;const n=this.measurementsCache[e];if(!n)return;const i=this.itemSizeCache.get(n.key)??n.size,a=t-i;a!==0&&(((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(n,a,this):n.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=a,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=K(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{const s=[];for(let n=0,i=e.length;n<i;n++){const a=e[n],r=t[a];s.push(r)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{const t=this.getMeasurements();if(t.length!==0)return ve(t[_e(0,t.length-1,s=>ve(t[s]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,s=0)=>{if(!this.scrollElement)return 0;const n=this.getSize(),i=this.getScrollOffset();t==="auto"&&(t=e>=i+n?"end":"start"),t==="center"?e+=(s-n)/2:t==="end"&&(e-=n);const a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const s=this.getSize(),n=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t==="auto")if(i.end>=n+s-this.options.scrollPaddingEnd)t="end";else if(i.start<=n+this.options.scrollPaddingStart)t="start";else return[n,t];if(t==="end"&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];const a=t==="end"?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t="start",behavior:s="auto"}={})=>{const n=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:s,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t="auto",behavior:s="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=this.getOffsetForIndex(e,t);if(!n)return;const[i,a]=n,r=this.now();this.scrollState={index:e,align:a,behavior:s,startedAt:r,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t="auto"}={})=>{const s=this.getScrollOffset()+e,n=this.now();this.scrollState={index:null,align:"start",behavior:t,startedAt:n,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var e;const t=this.getMeasurements();let s;if(t.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((e=t[t.length-1])==null?void 0:e.end)??0;else{const n=Array(this.options.lanes).fill(null);let i=t.length-1;for(;i>=0&&n.some(a=>a===null);){const a=t[i];n[a.lane]===null&&(n[a.lane]=a.end),i--}s=Math.max(...n.filter(a=>a!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:s})=>{this.options.scrollToFn(e,{behavior:s,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(g)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const t=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=t?t[0]:this.scrollState.lastTargetOffset,n=1,i=s!==this.scrollState.lastTargetOffset;if(!i&<(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=n){this.scrollState=null;return}}else this.scrollState.stableFrames=0,i&&(this.scrollState.lastTargetOffset=s,this.scrollState.behavior="auto",this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(c,g,e,t)=>{for(;c<=g;){const s=(c+g)/2|0,n=e(s);if(n<t)c=s+1;else if(n>t)g=s-1;else return s}return c>0?c-1:0};function ht({measurements:c,outerSize:g,scrollOffset:e,lanes:t}){const s=c.length-1,n=r=>c[r].start;if(c.length<=t)return{startIndex:0,endIndex:s};let i=_e(0,s,n,e),a=i;if(t===1)for(;a<s&&c[a].end<e+g;)a++;else if(t>1){const r=Array(t).fill(0);for(;a<s&&r.some(S=>S<e+g);){const S=c[a];r[S.lane]=S.end,a++}const I=Array(t).fill(e+g);for(;i>=0&&I.some(S=>S>=e);){const S=c[i];I[S.lane]=S.start,i--}i=Math.max(0,i-i%t),a=Math.min(s,a+(t-1-a%t))}return{startIndex:i,endIndex:a}}const ft={key:1,class:"fallback-list"},mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(c,{expose:g,emit:e}){const t=c,s=e,n=L(null),i=L(null),a=L(0),r=k(()=>i.value?(a.value,i.value.getVirtualItems()):[]),I=()=>{if(n.value)try{i.value=new dt({count:t.messages.length,getScrollElement:()=>n.value,estimateSize:()=>t.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{a.value++}}),W(()=>{i.value&&n.value&&(i.value.measure(),a.value++,n.value.scrollTop=1,setTimeout(()=>{n.value&&(n.value.scrollTop=0)},50))})}catch(d){console.error("[VirtualMessageList] init failed:",d)}},S=()=>{if(!n.value)return;i.value&&i.value.measure();const{scrollTop:d,scrollHeight:v,clientHeight:x}=n.value;d<100&&s("load-more"),d+x>=v-50&&s("scroll-to-bottom")},b=()=>{n.value&&requestAnimationFrame(()=>{n.value&&(n.value.scrollTop=n.value.scrollHeight)})},R=d=>{const v=t.messages.findIndex(x=>x.id===d);v!==-1&&i.value&&i.value.scrollToIndex(v,{align:"center"})};return Z(()=>t.messages.length,(d,v)=>{i.value?(i.value.setOptions({count:d,estimateSize:()=>t.estimateSize}),a.value++,d>v&&W(()=>b())):W(()=>{I(),i.value&&a.value++})}),Z(()=>t.messages,d=>{!i.value&&d.length>0?W(()=>I()):i.value&&(i.value.setOptions({count:d.length,estimateSize:()=>t.estimateSize,getScrollElement:()=>n.value,overscan:5,scrollMargin:0,onChange:()=>{a.value++}}),a.value++,W(()=>{i.value&&i.value.measure()}))},{deep:!0}),g({scrollToBottom:b,scrollToMessage:R}),ge(()=>{W(()=>{I(),t.messages.length>0&&b()})}),Me(()=>{i.value&&(i.value=null)}),(d,v)=>(l(),m("div",{ref_key:"scrollContainer",ref:n,class:"virtual-message-list",onScroll:S},[i.value&&r.value.length>0?(l(),m("div",{key:0,style:ae({height:`${i.value.getTotalSize()}px`,width:"100%",position:"relative"})},[(l(!0),m(G,null,J(r.value,x=>(l(),m("div",{key:x.key,style:ae({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${x.start}px)`})},[de(d.$slots,"default",{message:c.messages[x.index],index:x.index},void 0)],4))),128))],4)):(l(),m("div",ft,[(l(!0),m(G,null,J(c.messages,(x,M)=>(l(),m("div",{key:x.id||M},[de(d.$slots,"default",{message:x,index:M},void 0)]))),128))]))],544))}},pt=ee(mt,[["__scopeId","data-v-3c34170a"]]),vt={class:"intent-confirmation-message"},gt={class:"confirmation-header"},yt={class:"header-icon"},_t={class:"header-text"},bt={key:0},St={key:1},xt={key:2},kt={class:"understanding-content"},Ct={key:0,class:"original-input"},wt={class:"label"},$t={class:"value original-text"},It={key:1,class:"corrected-input"},Mt={class:"label"},Ot={class:"value corrected-text"},zt={class:"intent-section"},Et={class:"label"},At={class:"value"},Tt={key:2,class:"key-points-section"},Ft={class:"label"},Rt={class:"key-points-list"},Pt={key:3,class:"correction-section"},qt={class:"label"},jt={class:"value correction-text"},Dt={key:0,class:"streaming-indicator"},Lt={key:0,class:"streaming-tokens"},Nt={key:1,class:"action-buttons"},Wt={key:2,class:"correction-input-section"},Bt={class:"correction-actions"},Vt={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(c,{emit:g}){const e=c,t=g,s=L(!1),n=L(""),i=k(()=>e.message.metadata?.originalInput||""),a=k(()=>e.message.metadata?.understanding||{}),r=k(()=>a.value.correctedInput||i.value),I=k(()=>a.value.intent||"未识别"),S=k(()=>a.value.keyPoints||[]),b=k(()=>r.value!==i.value&&i.value.trim()!==""),R=k(()=>e.message.metadata?.status||"pending"),d=k(()=>R.value==="confirmed"),v=k(()=>R.value==="corrected"),x=k(()=>!!e.message.metadata?.streaming),M=k(()=>e.message.metadata?.streamingTokens||0),T=k(()=>e.message.metadata?.correction||null);function E(){t("confirm",{messageId:e.message.id,originalInput:i.value,understanding:a.value})}function P(){s.value=!0,n.value=r.value}function H(){n.value.trim()&&(t("correct",{messageId:e.message.id,originalInput:i.value,correction:n.value}),s.value=!1)}function q(){s.value=!1,n.value=""}return(C,B)=>{const U=D("a-button"),Q=D("a-textarea");return l(),m("div",vt,[f("div",gt,[f("div",yt,[d.value?(l(),z(_(Ne),{key:0,style:{color:"#52c41a"}})):v.value?(l(),z(_(We),{key:1,style:{color:"#faad14"}})):(l(),z(_(Be),{key:2,style:{color:"#1890ff"}}))]),f("div",_t,[d.value?(l(),m("span",bt,u(C.$t("chat.intent.confirmed")),1)):v.value?(l(),m("span",St,u(C.$t("chat.intent.corrected")),1)):(l(),m("span",xt,u(c.message.content),1))])]),f("div",kt,[b.value?(l(),m("div",Ct,[f("div",wt,u(C.$t("chat.intent.label.original")),1),f("div",$t,u(i.value),1)])):O("",!0),b.value?(l(),m("div",It,[f("div",Mt,u(C.$t("chat.intent.label.understood")),1),f("div",Ot,u(r.value),1)])):O("",!0),f("div",zt,[f("div",Et,"🎯 "+u(C.$t("chat.intent.label.intent")),1),f("div",At,u(I.value),1)]),S.value&&S.value.length>0?(l(),m("div",Tt,[f("div",Ft,"📝 "+u(C.$t("chat.intent.label.keyPoints")),1),f("ul",Rt,[(l(!0),m(G,null,J(S.value,(N,ne)=>(l(),m("li",{key:ne},u(N),1))),128))])])):O("",!0),T.value?(l(),m("div",Pt,[f("div",qt,"📝 "+u(C.$t("chat.intent.label.correction")),1),f("div",jt,u(T.value),1)])):O("",!0)]),x.value?(l(),m("div",Dt,[y(_(ye),{spin:""}),f("span",null,u(C.$t("chat.intent.status.understanding")),1),M.value>0?(l(),m("span",Lt,"· "+u(M.value)+" tokens",1)):O("",!0)])):!d.value&&!v.value?(l(),m("div",Nt,[y(U,{type:"primary",onClick:E},{default:w(()=>[y(_(he)),A(" "+u(C.$t("chat.intent.action.confirm")),1)]),_:1}),y(U,{onClick:P},{default:w(()=>[y(_(Ve)),A(" "+u(C.$t("chat.intent.action.correct")),1)]),_:1})])):O("",!0),s.value?(l(),m("div",Wt,[y(Q,{value:n.value,"onUpdate:value":B[0]||(B[0]=N=>n.value=N),placeholder:C.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),f("div",Bt,[y(U,{type:"primary",size:"small",onClick:H},{default:w(()=>[y(_(he)),A(" "+u(C.$t("chat.intent.action.submitCorrection")),1)]),_:1}),y(U,{size:"small",onClick:q},{default:w(()=>[y(_(He)),A(" "+u(C.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):O("",!0)])}}},Ht=ee(Vt,[["__scopeId","data-v-ded139e5"]]),Ut={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Qt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Kt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Gt=["title"],Jt={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},Xt={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},Yt={style:{flex:"1","overflow-y":"auto",padding:"8px"}},Zt=["onClick"],es={class:"session-icon"},ts={class:"session-info"},ss={class:"session-title"},ns={class:"session-meta"},is={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},os={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},as={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},ls={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},rs={style:{"font-size":"13px",color:"var(--text-muted)"}},cs={style:{"margin-top":"24px",display:"flex",gap:"12px"}},us={key:1,class:"chat-header"},ds={key:2,class:"chat-area-body"},hs={key:0,class:"chat-empty-prompts"},fs={class:"empty-title"},ms={class:"empty-hint"},ps={class:"quick-prompts"},vs={key:1,class:"system-banner"},gs={key:2,class:"tool-msg"},ys={key:0,class:"tool-detail"},_s={class:"tool-detail__pre tool-detail__pre--input"},bs={key:0,class:"tool-detail__result"},Ss={class:"tool-detail__pre tool-detail__pre--result"},xs={class:"msg-body"},ks={class:"msg-meta-row"},Cs={class:"msg-role"},ws={class:"msg-time"},$s={key:0,class:"msg-tokens"},Is={key:0,class:"bubble user"},Ms={key:2,class:"question-card"},Os={class:"question-text"},zs={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Es={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},As={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Ts={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Fs={style:{"margin-top":"8px"}},Rs={__name:"Chat",setup(c){const{t:g,tm:e,rt:t}=Fe(),s=Ee()||null,n=Ae()||null,i=window.__CC_CONFIG__||{},a=k(()=>i.mode==="project"),r=Re(),I=new Set,S=L(null),b=L(""),R=k(()=>r.contextMode);function d(o){r.setContextMode(o)}const v=k(()=>r.currentSessionId),x=k(()=>v.value?r.getMessages(v.value):[]),M=k(()=>{const o=r.streaming[v.value];return o?.active?o.content:null}),T=k(()=>{const o=x.value;return M.value?[...o,{role:"assistant",content:M.value,_streaming:!0,timestamp:Date.now()}]:o}),E=k(()=>r.pendingQuestion[v.value]),P=k(()=>r.getIsLoading(v.value));function H(o){if(!o)return"";const p=new Date(o);return`${String(p.getHours()).padStart(2,"0")}:${String(p.getMinutes()).padStart(2,"0")}`}const q=Te(new Set);function C(o){q.has(o)?q.delete(o):q.add(o)}function B(o,p){return{id:`tool-${p}`,label:o.tool||g("chat.tool.unknownTool"),detail:U(o),status:o.status==="done"?"done":"running"}}function U(o){if(o.status==="running"){const F=o.input&&typeof o.input=="object"?Object.keys(o.input):[];return F.length?g("chat.tool.argsPreview",{n:F.length,key:F[0]}):g("chat.tool.running")}if(o.result==null)return g("chat.tool.done");const $=(typeof o.result=="string"?o.result:JSON.stringify(o.result)).split(`
|
|
5
|
-
`)[0]||"";return $.length>48?`${$.slice(0,48)}…`:$||g("chat.tool.done")}async function Q(o){await r.createSession(o)}async function N(){if(!b.value.trim()||P.value||!v.value)return;const o=b.value;b.value="",await r.submitUserInput(v.value,o)}function ne(o){r.confirmIntent(v.value,o.messageId)}function be(o){r.correctIntent(v.value,o.messageId,o.correction)}const le=k(()=>{const o=r.customQuickPrompts;if(Array.isArray(o)&&o.length>0)return o;const p=e("chat.quickPrompts");return p?Object.values(p).map($=>t($)):[]}),X=L(!1),te=L("");function Se(){te.value=le.value.join(`
|
|
6
|
-
`),X.value=!0}function xe(){const o=te.value.split(`
|
|
7
|
-
`).map(p=>p.trim()).filter(p=>p.length>0);r.setCustomQuickPrompts(o.length>0?o:null),X.value=!1}function ke(){r.setCustomQuickPrompts(null),X.value=!1}const Ce=k(()=>g(`chat.empty.hint.${R.value}`));async function we(o){v.value||await r.createSession("chat"),b.value=o,await N()}function re(o){r.answerQuestion(v.value,o)}Z([x,M],()=>{W(()=>{S.value?.scrollToBottom()})},{deep:!0});async function ce({prompt:o,autoSend:p,session:$,token:F}){if(!o||I.has(F))return;I.add(F);let j=$||v.value;j?j!==v.value&&await r.switchSession(j):j=await r.createSession("chat"),b.value=o,p!==!1&&(await W(),await N())}function $e(){const o=s?.query||{};if(!o.prompt)return null;const p=Array.isArray(o.prompt)?o.prompt[0]:String(o.prompt);if(!p.trim())return null;const F=(Array.isArray(o.autoSend)?o.autoSend[0]:o.autoSend)!=="false",j=Array.isArray(o.session)?o.session[0]:o.session,se=j?String(j):null,oe=`query::${p}::${se||""}::${F}`;return{prompt:p,autoSend:F,session:se,token:oe}}async function ie(){const o=$e();if(o){await ce(o),n&&s&&n.replace({path:s.path,query:{}}).catch(()=>{});return}const p=r.pendingAutoSend;if(p?.prompt){const $=p.token||`staged::${p.prompt}::${Date.now()}`;await ce({...p,token:$}),r.clearAutoSend?.()}}return s&&Z(()=>[s.query.prompt,s.query.autoSend,s.query.session],()=>{ie()},{immediate:!1}),Z(()=>r.pendingAutoSend,()=>{ie()},{deep:!0}),ge(async()=>{await r.loadSessions(),await ie()}),(o,p)=>{const $=D("a-button"),F=D("a-radio-button"),j=D("a-radio-group"),se=D("a-avatar"),oe=D("a-input-search"),ue=D("a-textarea"),Ie=D("a-modal");return l(),m("div",Ut,[f("div",Qt,[a.value?(l(),m("div",Kt,[y(_(fe)),f("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:_(i).projectRoot},u(_(i).projectName||o.$t("chat.scope.fallbackProjectName")),9,Gt)])):(l(),m("div",Jt,[y(_(me)),f("span",null,u(o.$t("chat.scope.globalSessions")),1)])),f("div",Xt,[y($,{type:"primary",size:"small",style:{flex:"1"},onClick:p[0]||(p[0]=h=>Q("chat"))},{icon:w(()=>[y(_(Ue))]),default:w(()=>[A(" "+u(o.$t("chat.newChat")),1)]),_:1}),y($,{size:"small",style:{flex:"1"},onClick:p[1]||(p[1]=h=>Q("agent"))},{icon:w(()=>[y(_(pe))]),default:w(()=>[A(" "+u(o.$t("chat.newAgent")),1)]),_:1})]),f("div",Yt,[(l(!0),m(G,null,J(_(r).sessions,h=>(l(),m("div",{key:h.id,class:Y(["session-item",{active:h.id===_(r).currentSessionId}]),onClick:V=>_(r).switchSession(h.id)},[f("span",es,u(h.type==="agent"?"🤖":"💬"),1),f("div",ts,[f("div",ss,u(h.title||o.$t("chat.session.untitled")),1),f("div",ns,u(o.$t("chat.session.messageCountSuffix",{n:h.messageCount||0})),1)])],10,Zt))),128)),_(r).sessions.length?O("",!0):(l(),m("div",is,u(o.$t("chat.sidebarEmpty")),1))])]),f("div",os,[v.value?O("",!0):(l(),m("div",as,[p[7]||(p[7]=f("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),f("div",ls,u(o.$t("chat.empty.title")),1),f("div",rs,u(o.$t("chat.empty.subtitle")),1),f("div",cs,[y($,{type:"primary",onClick:p[2]||(p[2]=h=>Q("chat"))},{default:w(()=>[A(u(o.$t("chat.empty.newChat")),1)]),_:1}),y($,{style:{},onClick:p[3]||(p[3]=h=>Q("agent"))},{default:w(()=>[A(u(o.$t("chat.empty.newAgent")),1)]),_:1})])])),v.value?(l(),m("div",us,[y(j,{value:R.value,size:"small","button-style":"solid","onUpdate:value":d},{default:w(()=>[y(F,{value:"project",disabled:!a.value},{default:w(()=>[y(_(fe)),A(" "+u(o.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),y(F,{value:"file",disabled:""},{default:w(()=>[y(_(Qe)),A(" "+u(o.$t("chat.contextMode.file")),1)]),_:1}),y(F,{value:"global"},{default:w(()=>[y(_(me)),A(" "+u(o.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"])])):O("",!0),v.value?(l(),m("div",ds,[T.value.length===0?(l(),m("div",hs,[p[8]||(p[8]=f("div",{class:"empty-icon"},"💬",-1)),f("div",fs,u(o.$t("chat.empty.startTitle")),1),f("div",ms,u(Ce.value),1),f("div",ps,[(l(!0),m(G,null,J(le.value,h=>(l(),z($,{key:h,size:"small",class:"quick-prompt-btn",onClick:V=>we(h)},{default:w(()=>[A(u(h),1)]),_:2},1032,["onClick"]))),128)),y($,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:Se},{default:w(()=>[A(u(o.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(l(),z(pt,{key:1,ref_key:"virtualListRef",ref:S,messages:T.value,"estimate-size":120,class:"chat-virtual-list"},{default:w(({message:h,index:V})=>[f("div",{class:Y(["message-row",h.role])},[h.type===_(Pe).INTENT_CONFIRMATION?(l(),z(Ht,{key:0,message:h,onConfirm:ne,onCorrect:be},null,8,["message"])):h.role==="system"?(l(),m("div",vs,u(h.content),1)):h.role==="tool"?(l(),m("div",gs,[y(nt,{item:B(h,V),expandable:"",expanded:q.has(V),onToggle:Ps=>C(V)},null,8,["item","expanded","onToggle"]),q.has(V)?(l(),m("div",ys,[f("pre",_s,u(JSON.stringify(h.input,null,2)),1),h.result?(l(),m("div",bs,[f("pre",Ss,u(typeof h.result=="string"?h.result:JSON.stringify(h.result,null,2)),1)])):O("",!0)])):O("",!0)])):(l(),m("div",{key:3,class:Y(["msg-with-avatar",h.role])},[y(se,{size:32,style:ae({backgroundColor:h.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:w(()=>[h.role==="user"?(l(),z(_(Ke),{key:0})):(l(),z(_(pe),{key:1}))]),_:2},1032,["style"]),f("div",xs,[f("div",ks,[f("span",Cs,u(h.role==="user"?o.$t("chat.role.me"):"AI"),1),f("span",ws,u(H(h.timestamp)),1),h.tokens?(l(),m("span",$s,"· "+u(h.tokens)+" tokens",1)):O("",!0)]),h.role==="user"?(l(),m("div",Is,u(h.content),1)):(l(),z(at,{key:1,class:Y(["bubble assistant",{streaming:h._streaming}]),content:h.content},null,8,["class","content"]))])],2))],2)]),_:1},8,["messages"])),E.value?(l(),m("div",Ms,[f("div",Os,u(E.value.question),1),E.value.choices?.length?(l(),m("div",zs,[(l(!0),m(G,null,J(E.value.choices,h=>(l(),z($,{key:h,size:"small",onClick:V=>re(h)},{default:w(()=>[A(u(h),1)]),_:2},1032,["onClick"]))),128))])):(l(),z(oe,{key:1,placeholder:o.$t("chat.input.answerPlaceholder"),"enter-button":o.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:re},null,8,["placeholder","enter-button"]))])):O("",!0)])):O("",!0),v.value?(l(),m("div",Es,[f("div",As,[y(ue,{value:b.value,"onUpdate:value":p[4]||(p[4]=h=>b.value=h),placeholder:P.value?o.$t("chat.input.loading"):o.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:P.value,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Oe(ze(N,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),y($,{type:"primary",loading:P.value,onClick:N,style:{height:"40px"}},{icon:w(()=>[y(_(Ge))]),_:1},8,["loading"])])])):O("",!0)]),y(Ie,{open:X.value,"onUpdate:open":p[6]||(p[6]=h=>X.value=h),title:o.$t("chat.quickPromptsEditor.title"),"ok-text":o.$t("chat.quickPromptsEditor.save"),"cancel-text":o.$t("chat.quickPromptsEditor.cancel"),onOk:xe},{default:w(()=>[f("div",Ts,u(o.$t("chat.quickPromptsEditor.hint")),1),y(ue,{value:te.value,"onUpdate:value":p[5]||(p[5]=h=>te.value=h),rows:8,placeholder:o.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),f("div",Fs,[y($,{size:"small",onClick:ke},{default:w(()=>[A(u(o.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}}},Bs=ee(Rs,[["__scopeId","data-v-937db6c5"]]);export{Bs as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.ss-error[data-v-03da8d86]{margin-bottom:12px}.ss-actions[data-v-03da8d86]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.ss-preview[data-v-03da8d86]{max-height:240px;overflow:auto;border:1px solid var(--border-color, #f0f0f0);border-radius:4px;margin-bottom:12px;background:var(--bg-base, #fafafa)}.ss-preview img[data-v-03da8d86]{display:block;max-width:100%;height:auto}[data-v-fe526205] .note-row:hover td{background:var(--bg-card-hover)!important;cursor:pointer}
|