@zhin.js/adapter-sandbox 5.0.5 → 6.0.0

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/dist/index.js DELETED
@@ -1,45 +0,0 @@
1
- import Ze,{useState as w,useEffect as he,useRef as Ae}from"react";import{cn as M,resolveMediaSrc as Me,pickMediaRawUrl as Be}from"@zhin.js/client";function la(){let c=localStorage.getItem("zhin_api_base")?.trim();return(c?c.replace(/\/$/,""):null)??window.location.origin}function sa(){return localStorage.getItem("zhin_api_token")?.trim()||localStorage.getItem("HTTP_TOKEN")?.trim()||localStorage.getItem("zhin_http_token")?.trim()||""}function Oe(c){let m=(c??la()).replace(/\/$/,""),g=new URL("/sandbox",`${m}/`);g.protocol=g.protocol==="https:"?"wss:":"ws:";let I=sa();return I&&g.searchParams.set("token",I),g.href}import{forwardRef as na,createElement as pa}from"react";var Ce=(...c)=>c.filter((m,g,I)=>!!m&&m.trim()!==""&&I.indexOf(m)===g).join(" ").trim();var He=c=>c.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var Ne=c=>c.replace(/^([A-Z])|[\s-_]+(\w)/g,(m,g,I)=>I?I.toUpperCase():g.toLowerCase());var ye=c=>{let m=Ne(c);return m.charAt(0).toUpperCase()+m.slice(1)};import{forwardRef as ca,createElement as We}from"react";var ge={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Ee=c=>{for(let m in c)if(m.startsWith("aria-")||m==="role"||m==="title")return!0;return!1};import{createContext as ra,useContext as fa,useMemo as Za,createElement as _a}from"react";var ia=ra({});var Ge=()=>fa(ia);var Ve=ca(({color:c,size:m,strokeWidth:g,absoluteStrokeWidth:I,className:E="",children:F,iconNode:h,...L},P)=>{let{size:D=24,strokeWidth:U=2,absoluteStrokeWidth:Q=!1,color:G="currentColor",className:W=""}=Ge()??{},O=I??Q?Number(g??U)*24/Number(m??D):g??U;return We("svg",{ref:P,...ge,width:m??D??ge.width,height:m??D??ge.height,stroke:c??G,strokeWidth:O,className:Ce("lucide",W,E),...!F&&!Ee(L)&&{"aria-hidden":"true"},...L},[...h.map(([B,y])=>We(B,y)),...Array.isArray(F)?F:[F]])});var f=(c,m)=>{let g=na(({className:I,...E},F)=>pa(Ve,{ref:F,iconNode:m,className:Ce(`lucide-${He(ye(c))}`,`lucide-${c}`,I),...E}));return g.displayName=ye(c),g};var ma=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],K=f("bell",ma);var La=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],te=f("bot",La);var xa=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],oe=f("check",xa);var Ia=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],de=f("hash",Ia);var Ca=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],ue=f("image",Ca);var ga=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],le=f("info",ga);var ha=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],N=f("message-square",ha);var Sa=[["path",{d:"M9 18V5l12-2v13",key:"1jmyc2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["circle",{cx:"18",cy:"16",r:"3",key:"1hluhg"}]],se=f("music",Sa);var ka=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],$=f("search",ka);var wa=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],re=f("send",wa);var Pa=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],fe=f("smile",Pa);var ya=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],ie=f("trash-2",ya);var Aa=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],Z=f("user-plus",Aa);var Ma=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],_=f("user",Ma);var Ba=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],ce=f("users",Ba);var Da=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]],ne=f("video",Da);var Fa=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],pe=f("wifi-off",Fa);var ba=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],me=f("wifi",ba);var Ra=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Le=f("x",Ra);import{useRef as ze,forwardRef as va,useImperativeHandle as Ta}from"react";import{jsx as qa}from"react/jsx-runtime";var Xe=va(({placeholder:c="\u8F93\u5165\u6D88\u606F...",onSend:m,onChange:g,onAtTrigger:I,minHeight:E="44px",maxHeight:F="200px"},h)=>{let L=ze(null),P=ze(null),D=()=>{if(!L.current)return{text:"",segments:[]};let d="",o=[],u=Array.from(L.current.childNodes);for(let p of u)if(p.nodeType===Node.TEXT_NODE){let r=p.textContent||"";r&&(d+=r,o.push({type:"text",data:{text:r}}))}else if(p.nodeType===Node.ELEMENT_NODE){let r=p;if(r.classList.contains("editor-face")){let n=r.dataset.id;d+=`[face:${n}]`,o.push({type:"face",data:{id:Number(n)}})}else if(r.classList.contains("editor-image")){let n=r.dataset.url;d+=`[image:${n}]`,o.push({type:"image",data:{url:n}})}else if(r.classList.contains("editor-video")){let n=r.dataset.url||"";d+=`[video:${n}]`,o.push({type:"video",data:{url:n}})}else if(r.classList.contains("editor-audio")){let n=r.dataset.url||"";d+=`[audio:${n}]`,o.push({type:"audio",data:{url:n}})}else if(r.classList.contains("editor-at")){let n=r.dataset.name,A=r.dataset.id;d+=`[@${n}]`,o.push({type:"mention",data:A?{target:A,name:n}:{target:n,name:n}})}else r.tagName==="BR"&&(d+=`
2
- `)}return{text:d,segments:o}},U=d=>{if(!L.current)return;let o=document.createElement("img");o.src=`https://face.viki.moe/apng/${d}.png`,o.alt=`[face:${d}]`,o.dataset.type="face",o.dataset.id=String(d),o.className="editor-face",B(o),R()},Q=d=>{if(!L.current||!d.trim())return;let o=document.createElement("img");o.src=d.trim(),o.alt=`[image:${d.trim()}]`,o.dataset.type="image",o.dataset.url=d.trim(),o.className="editor-image",B(o),R()},G=d=>{if(!L.current||!d.trim())return;let o=d.trim(),u=document.createElement("span");u.className="editor-video",u.dataset.url=o,u.contentEditable="false",u.textContent="\u{1F4F9} \u89C6\u9891",B(u),R()},W=d=>{if(!L.current||!d.trim())return;let o=d.trim(),u=document.createElement("span");u.className="editor-audio",u.dataset.url=o,u.contentEditable="false",u.textContent="\u{1F3B5} \u97F3\u9891",B(u),R()},O=(d,o)=>{if(!L.current||!d.trim())return;let u=document.createElement("span");u.dataset.type="at",u.dataset.name=d,o&&(u.dataset.id=o),u.className="editor-at",u.contentEditable="false";let p=document.createElement("span");p.textContent="@",p.className="editor-at-symbol";let r=document.createElement("span");r.textContent=d,r.className="editor-at-name",u.appendChild(p),u.appendChild(r),B(u),R()},B=d=>{if(!L.current)return;L.current.focus();let o=window.getSelection();if(o&&o.rangeCount>0){let u=o.getRangeAt(0);if(L.current.contains(u.commonAncestorContainer))u.deleteContents(),u.insertNode(d),u.collapse(!1),o.removeAllRanges(),o.addRange(u);else{L.current.appendChild(d);let r=document.createRange();r.setStartAfter(d),r.collapse(!0),o.removeAllRanges(),o.addRange(r)}}else{L.current.appendChild(d);let u=window.getSelection();if(u){let p=document.createRange();p.setStartAfter(d),p.collapse(!0),u.removeAllRanges(),u.addRange(p)}}},y=()=>{L.current&&(L.current.innerHTML="",R())},V=()=>{L.current?.focus()},Y=()=>D(),xe=()=>{if(!L.current||!I)return;let d=window.getSelection();if(!d||d.rangeCount===0){I(!1,""),P.current=null;return}let o=d.getRangeAt(0);if(!L.current.contains(o.commonAncestorContainer)){I(!1,""),P.current=null;return}let u=o.startContainer;if(u.nodeType!==Node.TEXT_NODE){I(!1,""),P.current=null;return}let p=u,r=p.textContent?.substring(0,o.startOffset)||"",n=r.lastIndexOf("@");if(n!==-1){let A=r.substring(n+1);if(A.includes(" ")||A.includes(`
3
- `)){I(!1,""),P.current=null;return}P.current=p;let z=document.createRange();z.setStart(p,n),z.setEnd(p,n+1);let v=z.getBoundingClientRect(),b=L.current.getBoundingClientRect();I(!0,A,{top:v.bottom-b.top,left:v.left-b.left})}else I(!1,""),P.current=null},R=()=>{if(xe(),g){let{text:d,segments:o}=D();g(d,o)}},Se=(d,o)=>{if(!P.current)return;let u=P.current,p=u.textContent||"",r=p.lastIndexOf("@");if(r!==-1){let n=p.substring(r+1),A=r+1+n.split(/[\s\n]/)[0].length,z=p.substring(0,r),v=p.substring(A);u.textContent=z+v;let b=window.getSelection();if(b){let T=document.createRange();T.setStart(u,r),T.collapse(!0),b.removeAllRanges(),b.addRange(T)}}P.current=null,O(d,o)},ee=d=>{d.preventDefault();let o=d.clipboardData,p=Array.from(o.items).find(n=>n.type.startsWith("image/"));if(p){let n=p.getAsFile();if(n){let A=new FileReader;A.onload=()=>{typeof A.result=="string"&&Q(A.result)},A.readAsDataURL(n)}return}let r=o.getData("text/plain");r&&(document.execCommand("insertText",!1,r),R())},J=d=>{if(d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),m)){let{text:o,segments:u}=D();m(o,u)}};return Ta(h,()=>({focus:V,clear:y,insertFace:U,insertImage:Q,insertVideo:G,insertAudio:W,insertAt:O,replaceAtTrigger:Se,getContent:Y})),qa("div",{ref:L,contentEditable:!0,suppressContentEditableWarning:!0,onInput:R,onKeyDown:J,onPaste:ee,"data-placeholder":c,className:"rich-text-editor",style:{width:"100%",minHeight:E,maxHeight:F,padding:"0.5rem 0.75rem",border:"1px solid var(--gray-6)",borderRadius:"6px",backgroundColor:"var(--gray-1)",fontSize:"var(--font-size-2)",outline:"none",overflowY:"auto",lineHeight:"1.5",wordWrap:"break-word",color:"var(--gray-12)"}})});Xe.displayName="RichTextEditor";var Ke=Xe;import{Fragment as Ua,jsx as a,jsxs as t}from"react/jsx-runtime";function De(){let[c,m]=w([]),[g,I]=w([{id:"user_1001",name:"\u6D4B\u8BD5\u7528\u6237",type:"private",unread:0},{id:"group_2001",name:"\u6D4B\u8BD5\u7FA4\u7EC4",type:"group",unread:0},{id:"channel_3001",name:"\u6D4B\u8BD5\u9891\u9053",type:"channel",unread:0}]),[E,F]=w([]),[h,L]=w(g[0]),[P,D]=w(""),[U,Q]=w("ProcessEndpoint"),[G,W]=w(!1),[O,B]=w(!1),[y,V]=w(null),[Y,xe]=w(""),[R,Se]=w(!1),[ee,J]=w(null),[d,o]=w(""),[u,p]=w(""),[r,n]=w(""),[A]=w([{id:"10001",name:"\u5F20\u4E09"},{id:"10002",name:"\u674E\u56DB"},{id:"10003",name:"\u738B\u4E94"},{id:"10004",name:"\u8D75\u516D"},{id:"10005",name:"\u6D4B\u8BD5\u7528\u6237"},{id:"10086",name:"Admin"},{id:"10010",name:"Test User"}]),[z,v]=w([]),[b,T]=w(!1),[j,ke]=w("chat"),Fe=Ae(null),H=Ae(null),q=Ae(null),_e=async()=>{try{let e=await fetch("https://face.viki.moe/metadata.json");F(await e.json())}catch(e){console.error("[Sandbox] Failed to fetch face list:",e)}};he(()=>{_e()},[]);let Qe=e=>{if(e.type==="edit"&&e.messageId){let l=Array.isArray(e.content)?e.content:Ie(String(e.content??""));m(i=>i.map(C=>C.id===e.messageId?{...C,content:l}:C));return}let s=typeof e.content=="string"?Ie(e.content):Array.isArray(e.content)?e.content:Ie(String(e.content??"")),x=e.type==="private"?`\u79C1\u804A-${e.bot||U}`:e.type==="group"?`\u7FA4\u7EC4-${e.id}`:`\u9891\u9053-${e.id}`,S=e.type;I(l=>{if(l.some(C=>C.id===e.id))return l;let i={id:e.id,name:x,type:S,unread:0};return L(i),[...l,i]}),m(l=>[...l,{id:e.messageId??`bot_${e.timestamp}`,type:"received",channelType:S,channelId:e.id,channelName:x,senderId:"endpoint",senderName:e.bot||U,content:s,timestamp:e.timestamp}])},Je=e=>{let s=[{type:"action",data:{id:e,payload:e}}],x=JSON.stringify({type:h.type,id:h.id,content:s,timestamp:Date.now()});H.current?.send(x)};he(()=>{let e=Oe();return H.current=new WebSocket(e),H.current.onopen=()=>W(!0),H.current.onmessage=s=>{try{Qe(JSON.parse(s.data))}catch(x){console.error("[Sandbox] Failed to parse message:",x)}},H.current.onclose=()=>W(!1),()=>{H.current?.close(),H.current=null,W(!1)}},[]),he(()=>{Fe.current?.scrollIntoView({behavior:"smooth"})},[c]),he(()=>{v(P.trim()?Ie(P):[])},[P]);let Ie=e=>{let s=[],x=/\[@([^\]]+)\]|\[face:(\d+)\]|\[image:([^\]]+)\]|\[video:([^\]]+)\]|\[audio:([^\]]+)\]/g,S=0,l;for(;(l=x.exec(e))!==null;){if(l.index>S){let i=e.substring(S,l.index);i&&s.push({type:"text",data:{text:i}})}l[1]?s.push({type:"mention",data:{target:l[1],name:l[1]}}):l[2]?s.push({type:"face",data:{id:parseInt(l[2],10)}}):l[3]?s.push({type:"image",data:{url:l[3]}}):l[4]?s.push({type:"video",data:{url:l[4]}}):l[5]&&s.push({type:"audio",data:{url:l[5]}}),S=x.lastIndex}if(S<e.length){let i=e.substring(S);i&&s.push({type:"text",data:{text:i}})}return s.length>0?s:[{type:"text",data:{text:e}}]},be=e=>e.length===0?!1:e.some(s=>s.type==="text"?!!String(s.data?.text??"").trim():(s.type==="keyboard",!0)),je=(e,s)=>{let x=s?"ring-1 ring-primary-foreground/25":"ring-1 ring-border/60";return e.map((S,l)=>{if(typeof S=="string")return a("span",{children:S.split(`
4
- `).map((C,k)=>t(Ze.Fragment,{children:[C,k<S.split(`
5
- `).length-1&&a("br",{})]},k))},l);let i=S.data;switch(S.type){case"text":return a("span",{children:String(i.text??"").split(`
6
- `).map((C,k)=>t(Ze.Fragment,{children:[C,k<String(i.text??"").split(`
7
- `).length-1&&a("br",{})]},k))},l);case"mention":case"at":return t("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded bg-accent text-accent-foreground text-xs mx-0.5",children:["@",String(i.name??i.target??i.qq??"")]},l);case"face":return a("img",{src:`https://face.viki.moe/apng/${i.id}.png`,alt:String(i.name??""),className:"w-6 h-6 inline-block align-middle mx-0.5",title:String(i.name??i.id??"")},l);case"dice":return t("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded bg-secondary text-xs mx-0.5",children:["\u{1F3B2} ",i.result!=null?`\u70B9\u6570 ${String(i.result)}`:"\u9AB0\u5B50"]},l);case"rps":return t("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded bg-secondary text-xs mx-0.5",children:["\u270A ",i.result!=null?`\u7ED3\u679C ${String(i.result)}`:"\u731C\u62F3"]},l);case"image":{let C=Be(i),k=Me(C,"image");return k?a("a",{href:k,target:"_blank",rel:"noreferrer",className:"block my-1",children:a("img",{src:k,alt:"",className:M("max-w-[min(320px,88vw)] rounded-lg block",x,"ring-offset-0"),onError:ae=>{ae.target.style.display="none"}})},l):a("span",{className:"text-xs opacity-70",children:"[\u56FE\u7247]"},l)}case"video":{let C=Be(i),k=Me(C,"video");return k?a("video",{src:k,controls:!0,playsInline:!0,preload:"metadata",className:M("max-w-[min(360px,92vw)] max-h-72 rounded-lg my-1 bg-black/10",x)},l):a("span",{className:"text-xs opacity-70",children:"[\u89C6\u9891\u65E0\u5730\u5740]"},l)}case"audio":case"record":{let C=Be(i),k=Me(C,"audio");return k?a("audio",{src:k,controls:!0,preload:"metadata",className:M("w-full max-w-sm my-2 h-10",s&&"opacity-95")},l):a("span",{className:"text-xs opacity-70",children:"[\u97F3\u9891\u65E0\u5730\u5740]"},l)}case"reply":return t("div",{className:"mb-1 rounded-md border border-dashed px-2 py-1 text-xs opacity-90",children:["\u21A9 \u5F15\u7528\u6D88\u606F #",String(i.message_id??i.id??"")]},l);case"forward":{let C=i.messages,k=String(i.title??"\u804A\u5929\u8BB0\u5F55");return t("div",{className:"my-1 rounded-md border bg-background/40 px-2 py-2 text-xs space-y-1",children:[t("div",{className:"font-medium",children:["\u{1F4E8} ",k]}),Array.isArray(C)&&C.length>0?t("div",{className:"space-y-1 pl-2 border-l-2 border-muted",children:[C.slice(0,3).map((ae,X)=>a("div",{className:"opacity-90",children:ae.map((Pe,ua)=>a("span",{children:Pe.type==="text"?String(Pe.data?.text??""):`[${Pe.type??"seg"}]`},ua))},X)),C.length>3&&t("div",{className:"opacity-60",children:["\u2026\u5171 ",C.length," \u6761"]})]}):a("div",{className:"opacity-70",children:"[\u5408\u5E76\u8F6C\u53D1]"})]},l)}case"keyboard":{let C=i.rows??[];return a("div",{className:"inline-grid gap-1 my-1",children:C.map((k,ae)=>a("div",{className:"flex gap-1",children:k.map(X=>a("button",{type:"button",disabled:X.disabled||s,onClick:()=>Je(X.payload),className:M("min-w-9 h-9 rounded-md border text-sm font-medium transition-colors",X.disabled?"opacity-50 cursor-not-allowed":"hover:bg-accent active:scale-95"),children:X.label},X.payload))},ae))},l)}default:return t("span",{className:"text-xs opacity-70",children:["[",S.type,"]"]},l)}})},Re=(e,s)=>{if(!be(s))return;let x={id:`msg_${Date.now()}`,type:"sent",channelType:h.type,channelId:h.id,channelName:h.name,senderId:"test_user",senderName:"\u6D4B\u8BD5\u7528\u6237",content:s,timestamp:Date.now()};m(l=>[...l,x]),D(""),v([]),q.current?.clear();let S=JSON.stringify({type:h.type,id:h.id,content:s,timestamp:Date.now()});H.current?.send(S)},$e=()=>{confirm("\u786E\u5B9A\u6E05\u7A7A\u6240\u6709\u6D88\u606F\u8BB0\u5F55\uFF1F")&&m([])},Ye=e=>{ke("chat"),L(e),I(s=>s.map(x=>x.id===e.id?{...x,unread:0}:x)),window.innerWidth<768&&T(!1)},ea=()=>{let e=["private","group","channel"],s=e[Math.floor(Math.random()*e.length)],x=prompt("\u8BF7\u8F93\u5165\u9891\u9053\u540D\u79F0\uFF1A");if(x){let S={id:`${s}_${Date.now()}`,name:x,type:s,unread:0};I(l=>[...l,S]),L(S)}},ve=e=>{switch(e){case"private":return a(_,{size:16});case"group":return a(ce,{size:16});case"channel":return a(de,{size:16});default:return a(N,{size:16})}},aa=e=>{q.current?.insertFace(e),B(!1)},Te=()=>{let e=Y.trim();!e||!y||(y==="image"?q.current?.insertImage(e):y==="video"?q.current?.insertVideo(e):q.current?.insertAudio(e),xe(""),V(null))},Oa=()=>{r.trim()&&(q.current?.insertAt(r.trim()),n(""),Se(!1))},ta=e=>{q.current?.replaceAtTrigger(e.name,e.id),J(null),o("")},oa=(e,s,x)=>{if(h.type==="private"){J(null),o("");return}e&&x?(J(x),o(s)):(J(null),o(""))},qe=A.filter(e=>{if(!d.trim())return!0;let s=d.toLowerCase();return e.name.toLowerCase().includes(s)||e.id.toLowerCase().includes(s)}),da=(e,s)=>{D(e),v(s)},Ue=E.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())||e.describe.toLowerCase().includes(u.toLowerCase())),we=c.filter(e=>e.channelId===h.id);return t("div",{className:"sandbox-container rounded-xl border border-border/70 bg-card/30 shadow-sm",children:[t("button",{className:"mobile-channel-toggle md:hidden",onClick:()=>T(!b),children:[a(N,{size:20})," \u9891\u9053\u5217\u8868"]}),t("div",{className:M("channel-sidebar rounded-lg border bg-card",b&&"show"),children:[a("div",{className:"p-3 border-b",children:t("div",{className:"flex justify-between items-center",children:[t("div",{className:"flex items-center gap-2",children:[a("div",{className:"p-1 rounded-md bg-secondary",children:a(N,{size:16,className:"text-muted-foreground"})}),a("h3",{className:"font-semibold",children:"\u9891\u9053\u5217\u8868"})]}),t("span",{className:M("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium border",G?"bg-emerald-100 text-emerald-800 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800":"bg-muted text-muted-foreground"),children:[G?a(me,{size:12}):a(pe,{size:12}),G?"\u5DF2\u8FDE\u63A5":"\u672A\u8FDE\u63A5"]})]})}),t("div",{className:"flex-1 overflow-y-auto p-2 space-y-1",children:[g.map(e=>{let s=j==="chat"&&h.id===e.id;return t("div",{className:M("menu-item",s&&"active"),onClick:()=>Ye(e),children:[a("span",{className:"shrink-0",children:ve(e.type)}),t("div",{className:"flex-1 min-w-0",children:[a("div",{className:"text-sm font-medium truncate",children:e.name}),a("div",{className:"text-xs text-muted-foreground",children:e.type==="private"?"\u79C1\u804A":e.type==="group"?"\u7FA4\u804A":"\u9891\u9053"})]}),e.unread>0&&a("span",{className:"inline-flex items-center justify-center h-5 min-w-5 rounded-full bg-destructive text-destructive-foreground text-[10px] font-medium px-1",children:e.unread})]},e.id)}),t("div",{className:"pt-2 mt-2 border-t space-y-1",children:[t("div",{className:M("menu-item",j==="requests"&&"active"),onClick:()=>{ke("requests"),window.innerWidth<768&&T(!1)},children:[a(Z,{size:16,className:"shrink-0"}),t("div",{className:"flex-1 min-w-0",children:[a("div",{className:"text-sm font-medium",children:"\u8BF7\u6C42"}),a("div",{className:"text-xs text-muted-foreground",children:"\u597D\u53CB/\u7FA4\u9080\u8BF7\u7B49"})]})]}),t("div",{className:M("menu-item",j==="notices"&&"active"),onClick:()=>{ke("notices"),window.innerWidth<768&&T(!1)},children:[a(K,{size:16,className:"shrink-0"}),t("div",{className:"flex-1 min-w-0",children:[a("div",{className:"text-sm font-medium",children:"\u901A\u77E5"}),a("div",{className:"text-xs text-muted-foreground",children:"\u7FA4\u7BA1/\u64A4\u56DE\u7B49"})]})]})]})]}),a("div",{className:"p-2 border-t",children:a("button",{className:"w-full py-2 px-3 rounded-md border border-dashed text-sm text-muted-foreground hover:bg-accent transition-colors",onClick:ea,children:"+ \u6DFB\u52A0\u9891\u9053"})})]}),b&&a("div",{className:"channel-overlay md:hidden",onClick:()=>T(!1)}),t("div",{className:"chat-area",children:[j==="requests"&&t("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[a("div",{className:"p-3 border-b flex-shrink-0",children:t("h2",{className:"text-lg font-bold flex items-center gap-2",children:[a(Z,{size:20})," \u8BF7\u6C42"]})}),t("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[a(Z,{size:48,className:"opacity-30"}),a("span",{children:"\u6C99\u76D2\u4E3A\u6A21\u62DF\u73AF\u5883\uFF0C\u6682\u65E0\u8BF7\u6C42\u6570\u636E"}),t("span",{className:"text-sm",children:["\u5B9E\u9645\u597D\u53CB/\u7FA4\u9080\u8BF7\u7B49\u8BF7\u6C42\u8BF7\u5230\u4FA7\u8FB9\u680F ",a("strong",{children:"\u673A\u5668\u4EBA"})," \u9875\u9762\u8FDB\u5165\u5BF9\u5E94\u673A\u5668\u4EBA\u7BA1\u7406\u67E5\u770B"]})]})]}),j==="notices"&&t("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[a("div",{className:"p-3 border-b flex-shrink-0",children:t("h2",{className:"text-lg font-bold flex items-center gap-2",children:[a(K,{size:20})," \u901A\u77E5"]})}),t("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[a(K,{size:48,className:"opacity-30"}),a("span",{children:"\u6C99\u76D2\u4E3A\u6A21\u62DF\u73AF\u5883\uFF0C\u6682\u65E0\u901A\u77E5\u6570\u636E"}),t("span",{className:"text-sm",children:["\u5B9E\u9645\u7FA4\u7BA1\u3001\u64A4\u56DE\u7B49\u901A\u77E5\u8BF7\u5230\u4FA7\u8FB9\u680F ",a("strong",{children:"\u673A\u5668\u4EBA"})," \u9875\u9762\u8FDB\u5165\u5BF9\u5E94\u673A\u5668\u4EBA\u7BA1\u7406\u67E5\u770B"]})]})]}),j==="chat"&&t(Ua,{children:[a("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0",children:t("div",{className:"flex justify-between items-center flex-wrap gap-2",children:[t("div",{className:"flex items-center gap-3",children:[a("div",{className:"p-2 rounded-lg bg-secondary",children:ve(h.type)}),t("div",{children:[a("h2",{className:"text-lg font-bold",children:h.name}),t("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[a("span",{children:h.id}),a("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded border text-[10px]",children:we.length}),a("span",{children:"\u6761\u6D88\u606F"})]})]}),a("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground",children:h.type==="private"?"\u79C1\u804A":h.type==="group"?"\u7FA4\u804A":"\u9891\u9053"})]}),t("div",{className:"flex items-center gap-2",children:[a("input",{value:U,onChange:e=>Q(e.target.value),placeholder:"\u673A\u5668\u4EBA\u540D\u79F0",className:"h-8 w-28 rounded-md border bg-transparent px-2 text-sm"}),t("button",{className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-secondary text-secondary-foreground text-sm hover:bg-secondary/80",onClick:$e,children:[a(ie,{size:14})," \u6E05\u7A7A"]})]})]})}),a("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0",children:a("div",{className:"flex-1 overflow-y-auto p-4",children:we.length===0?t("div",{className:"flex flex-col items-center justify-center h-full gap-3",children:[a(N,{size:64,className:"text-muted-foreground/20"}),a("span",{className:"text-muted-foreground",children:"\u6682\u65E0\u6D88\u606F\uFF0C\u5F00\u59CB\u5BF9\u8BDD\u5427\uFF01"})]}):t("div",{className:"space-y-2",children:[we.map(e=>a("div",{className:M("flex",e.type==="sent"?"justify-end":"justify-start"),children:t("div",{className:M("max-w-[70%] p-3 rounded-2xl",e.type==="sent"?"bg-primary text-primary-foreground":"bg-muted"),children:[t("div",{className:"flex items-center gap-2 mb-1",children:[e.type==="received"&&a(te,{size:14}),e.type==="sent"&&a(_,{size:14}),a("span",{className:"text-xs font-medium opacity-90",children:e.senderName}),a("span",{className:"text-xs opacity-70",children:new Date(e.timestamp).toLocaleTimeString()})]}),a("div",{className:"text-sm space-y-1",children:je(e.content,e.type==="sent")})]})},e.id)),a("div",{ref:Fe})]})})}),t("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0 space-y-3",children:[t("div",{className:"flex gap-2 items-center flex-wrap",children:[a("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",O?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{B(!O),V(null)},title:"\u63D2\u5165\u8868\u60C5",children:a(fe,{size:16})}),a("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",y==="image"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{V(e=>e==="image"?null:"image"),B(!1)},title:"\u63D2\u5165\u56FE\u7247 URL",children:a(ue,{size:16})}),a("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",y==="video"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{V(e=>e==="video"?null:"video"),B(!1)},title:"\u63D2\u5165\u89C6\u9891 URL",children:a(ne,{size:16})}),a("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",y==="audio"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{V(e=>e==="audio"?null:"audio"),B(!1)},title:"\u63D2\u5165\u97F3\u9891 URL",children:a(se,{size:16})}),a("div",{className:"flex-1 min-w-[1rem]"}),P&&a("button",{className:"h-8 w-8 rounded-md flex items-center justify-center hover:bg-accent transition-colors",onClick:()=>{D(""),v([])},children:a(Le,{size:16})})]}),O&&t("div",{className:"p-3 rounded-md border bg-muted/30 max-h-64 overflow-y-auto space-y-2",children:[a("input",{value:u,onChange:e=>p(e.target.value),placeholder:"\u641C\u7D22\u8868\u60C5...",className:"w-full h-8 rounded-md border bg-transparent px-2 text-sm"}),a("div",{className:"grid grid-cols-8 gap-1",children:Ue.slice(0,80).map(e=>a("button",{onClick:()=>aa(e.id),title:e.name,className:"w-10 h-10 rounded-md border flex items-center justify-center hover:bg-accent transition-colors",children:a("img",{src:`https://face.viki.moe/apng/${e.id}.png`,alt:e.name,className:"w-8 h-8"})},e.id))}),Ue.length===0&&t("div",{className:"flex flex-col items-center gap-2 py-4",children:[a($,{size:32,className:"text-muted-foreground/30"}),a("span",{className:"text-sm text-muted-foreground",children:"\u672A\u627E\u5230\u5339\u914D\u7684\u8868\u60C5"})]})]}),y&&t("div",{className:"p-3 rounded-md border bg-muted/30 space-y-2",children:[t("p",{className:"text-xs text-muted-foreground",children:[y==="image"&&"\u652F\u6301 http(s) \u56FE\u7247\u94FE\u63A5\u6216 data URL",y==="video"&&"\u652F\u6301\u6D4F\u89C8\u5668\u53EF\u89E3\u7801\u7684\u89C6\u9891\u76F4\u94FE\uFF08\u5982 .mp4\u3001.webm\uFF09",y==="audio"&&"\u652F\u6301 .mp3\u3001.ogg\u3001.wav \u7B49\u97F3\u9891\u76F4\u94FE"]}),a("input",{value:Y,onChange:e=>xe(e.target.value),placeholder:y==="image"?"\u56FE\u7247 URL\u2026":y==="video"?"\u89C6\u9891 URL\u2026":"\u97F3\u9891 URL\u2026",className:"w-full h-8 rounded-md border border-input bg-background px-2 text-sm",onKeyDown:e=>{e.key==="Enter"&&(e.preventDefault(),Te())}}),t("button",{type:"button",className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",onClick:Te,disabled:!Y.trim(),children:[a(oe,{size:14})," \u63D2\u5165\u5230\u8F93\u5165\u6846"]})]}),t("div",{className:"flex gap-2 items-start",children:[t("div",{className:"flex-1 relative",children:[a(Ke,{ref:q,placeholder:`\u5411 ${h.name} \u53D1\u9001\u6D88\u606F...`,onSend:Re,onChange:da,onAtTrigger:oa,minHeight:"44px",maxHeight:"200px"}),ee&&a("div",{className:"absolute z-50 rounded-lg border bg-popover shadow-md min-w-60 max-h-72 overflow-y-auto p-1",style:{top:`${ee.top}px`,left:`${ee.left}px`},children:qe.length>0?qe.map(e=>t("div",{className:"flex items-center gap-2 p-2 rounded-md cursor-pointer hover:bg-accent transition-colors",onClick:()=>ta(e),children:[a(_,{size:16,className:"text-muted-foreground"}),t("div",{className:"flex-1",children:[a("div",{className:"text-sm font-medium",children:e.name}),t("div",{className:"text-xs text-muted-foreground",children:["ID: ",e.id]})]})]},e.id)):t("div",{className:"flex flex-col items-center gap-2 p-4",children:[a($,{size:20,className:"text-muted-foreground/50"}),a("span",{className:"text-xs text-muted-foreground",children:"\u672A\u627E\u5230\u5339\u914D\u7684\u7528\u6237"})]})})]}),t("button",{className:"inline-flex items-center gap-1.5 h-10 px-4 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50 transition-colors hover:bg-primary/90",onClick:()=>{let e=q.current?.getContent();e&&Re(e.text,e.segments)},disabled:!be(z),children:[a(re,{size:16})," \u53D1\u9001"]})]}),t("div",{className:"flex items-center gap-2 flex-wrap text-xs text-muted-foreground",children:[a(le,{size:12})," \u5FEB\u6377\u64CD\u4F5C:",a("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Enter"})," \u53D1\u9001",a("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Shift+Enter"})," \u6362\u884C",a("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[@\u540D\u79F0]"})," @\u67D0\u4EBA",a("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[video:URL]"}),a("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[audio:URL]"})]})]})]})]})]})}function Bo(c){c.addRoute({path:"/console/sandbox",name:"\u6C99\u76D2",element:c.React.createElement(De,{hostReact:c.React})}),c.addTool({id:"sandbox",name:"\u6C99\u76D2",path:"/console/sandbox"})}export{Bo as register};
8
- /*! Bundled license information:
9
-
10
- lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs:
11
- lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
12
- lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs:
13
- lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs:
14
- lucide-react/dist/esm/defaultAttributes.mjs:
15
- lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs:
16
- lucide-react/dist/esm/context.mjs:
17
- lucide-react/dist/esm/Icon.mjs:
18
- lucide-react/dist/esm/createLucideIcon.mjs:
19
- lucide-react/dist/esm/icons/bell.mjs:
20
- lucide-react/dist/esm/icons/bot.mjs:
21
- lucide-react/dist/esm/icons/check.mjs:
22
- lucide-react/dist/esm/icons/hash.mjs:
23
- lucide-react/dist/esm/icons/image.mjs:
24
- lucide-react/dist/esm/icons/info.mjs:
25
- lucide-react/dist/esm/icons/message-square.mjs:
26
- lucide-react/dist/esm/icons/music.mjs:
27
- lucide-react/dist/esm/icons/search.mjs:
28
- lucide-react/dist/esm/icons/send.mjs:
29
- lucide-react/dist/esm/icons/smile.mjs:
30
- lucide-react/dist/esm/icons/trash-2.mjs:
31
- lucide-react/dist/esm/icons/user-plus.mjs:
32
- lucide-react/dist/esm/icons/user.mjs:
33
- lucide-react/dist/esm/icons/users.mjs:
34
- lucide-react/dist/esm/icons/video.mjs:
35
- lucide-react/dist/esm/icons/wifi-off.mjs:
36
- lucide-react/dist/esm/icons/wifi.mjs:
37
- lucide-react/dist/esm/icons/x.mjs:
38
- lucide-react/dist/esm/lucide-react.mjs:
39
- (**
40
- * @license lucide-react v1.23.0 - ISC
41
- *
42
- * This source code is licensed under the ISC license.
43
- * See the LICENSE file in the root directory of this source tree.
44
- *)
45
- */
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAEjD,OAAO,EACL,oBAAoB,EAGrB,MAAM,iBAAiB,CAAC;AAGzB,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,QAAQ;QAChB,OAAO,EAAE,cAAc,CAAC;KACzB;CACF;AAKD,uBAAuB;AACvB,qBAAa,cAAe,SAAQ,oBAAoB;IACtD,GAAG,CAAC,EAAE;QAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;gBAE5E,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB3D;AAkCD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- /** Sandbox 传输 — Node WebSocket。 */
2
- import { EventEmitter } from "node:events";
3
- import { Adapter, Endpoint, Message, type MessageElement, type MessageType, type Plugin, type SendOptions } from 'zhin.js';
4
- export interface SandboxWsConfig {
5
- context: "sandbox";
6
- ws?: SandboxWsSocket;
7
- name: string;
8
- owner?: string;
9
- /** yaml 预置名:启动时占位,WS 连接前在 endpoint:list 显示为离线 */
10
- offline?: boolean;
11
- }
12
- /** 无 WS 时的占位 socket(仅用于 endpoint:list,不可收发) */
13
- export declare function createOfflineSandboxWs(): SandboxWsSocket;
14
- /** 兼容 `ws` 包与标准 WebSocket */
15
- export type SandboxWsSocket = {
16
- send(data: string): void;
17
- close(code?: number, reason?: string): void;
18
- on?(event: "message" | "close" | "error", listener: (...args: unknown[]) => void): void;
19
- off?(event: "message" | "close" | "error", listener: (...args: unknown[]) => void): void;
20
- addEventListener?(type: "message" | "close" | "error", listener: (ev: Event | MessageEvent | CloseEvent) => void): void;
21
- removeEventListener?(type: "message" | "close" | "error", listener: (ev: Event | MessageEvent | CloseEvent) => void): void;
22
- };
23
- export type SandboxBotDefaults = {
24
- name: string;
25
- owner: string;
26
- /** true:每连接随机 bot 名(Node 本地默认);false:固定 name */
27
- randomNamePerConnection?: boolean;
28
- };
29
- export type ResolvedSandboxBot = {
30
- context: "sandbox";
31
- name: string;
32
- owner: string;
33
- randomNamePerConnection: boolean;
34
- };
35
- export declare function resolveSandboxEndpoint(appConfig: Record<string, unknown>): ResolvedSandboxBot;
36
- export declare function bindSandboxWsSocket(ws: SandboxWsSocket, handlers: {
37
- onMessage: (raw: string) => void;
38
- onClose: () => void;
39
- onError?: (err: unknown) => void;
40
- }): () => void;
41
- export declare function parseSandboxWsPayload(raw: string): {
42
- type: MessageType;
43
- id: string;
44
- content: MessageElement[];
45
- timestamp: number;
46
- };
47
- type EndpointEvent = {
48
- content: MessageElement[];
49
- type: MessageType;
50
- id: string;
51
- ts: number;
52
- };
53
- export declare class SandboxWsEndpoint extends EventEmitter implements Endpoint<SandboxWsConfig, EndpointEvent> {
54
- #private;
55
- adapter: SandboxWsHostAdapter;
56
- $config: SandboxWsConfig;
57
- $connected: boolean;
58
- get $id(): string;
59
- constructor(adapter: SandboxWsHostAdapter, $config: SandboxWsConfig);
60
- $connect(): Promise<void>;
61
- $disconnect(): Promise<void>;
62
- $formatMessage({ content, type, id, ts }: EndpointEvent): Message<EndpointEvent>;
63
- $sendMessage(options: SendOptions): Promise<string>;
64
- $editMessage(options: import('zhin.js').EditMessageOptions): Promise<void>;
65
- $recallMessage(_id: string): Promise<void>;
66
- }
67
- export declare class SandboxWsHostAdapter extends Adapter<SandboxWsEndpoint> {
68
- protected readonly defaults: ResolvedSandboxBot;
69
- static readonly capabilities: readonly ["inbound", "outbound"];
70
- static interactivePolicy: "native";
71
- constructor(plugin: Plugin, defaults: ResolvedSandboxBot);
72
- getOutboundMediaCapabilities(): {
73
- image: boolean;
74
- audio: boolean;
75
- video: boolean;
76
- file: boolean;
77
- maxAttachmentBytes: number;
78
- };
79
- createEndpoint(config: SandboxWsConfig): SandboxWsEndpoint;
80
- /** `zhin.config.yml` 中 `context: sandbox` + 固定 `name` 时,启动即出现在 endpoint:list(离线) */
81
- registerConfiguredPlaceholder(): void;
82
- /** 外部 upgrade:注入已建立的 WebSocket */
83
- acceptWebSocket(ws: SandboxWsSocket, overrides?: Partial<Pick<SandboxWsConfig, "name" | "owner">>): SandboxWsEndpoint;
84
- }
85
- export {};
86
- //# sourceMappingURL=sandbox-ws.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox-ws.d.ts","sourceRoot":"","sources":["../src/sandbox-ws.ts"],"names":[],"mappings":"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"}
package/lib/sandbox-ws.js DELETED
@@ -1,295 +0,0 @@
1
- /** Sandbox 传输 — Node WebSocket。 */
2
- import { EventEmitter } from "node:events";
3
- import { Adapter, Message, segment, } from 'zhin.js';
4
- import { fromCanonicalSegments, toCanonicalSegments } from './segment-mapper.js';
5
- /** 无 WS 时的占位 socket(仅用于 endpoint:list,不可收发) */
6
- export function createOfflineSandboxWs() {
7
- return { send: () => { }, close: () => { } };
8
- }
9
- function envVar(key) {
10
- const g = globalThis;
11
- return g.Deno?.env.get(key) ?? g.process?.env[key];
12
- }
13
- export function resolveSandboxEndpoint(appConfig) {
14
- const endpoints = appConfig.endpoints;
15
- const entry = endpoints?.find((b) => b.context === "sandbox");
16
- const fixedName = typeof entry?.name === "string" ? entry.name : undefined;
17
- const name = fixedName ||
18
- envVar("SANDBOX_BOT_NAME") ||
19
- "sandbox-bot";
20
- const owner = (typeof entry?.owner === "string" && entry.owner) ||
21
- envVar("SANDBOX_BOT_OWNER") ||
22
- "sandbox-user";
23
- return {
24
- context: "sandbox",
25
- name,
26
- owner,
27
- randomNamePerConnection: !fixedName,
28
- };
29
- }
30
- /** 标准 WebSocket 在 upgrade 后可能尚未 OPEN;Node `ws` 在 connection 回调里通常已可 send */
31
- function whenWsOpen(ws, fn) {
32
- const std = ws;
33
- if (typeof std.readyState === "number") {
34
- if (std.readyState === WebSocket.OPEN) {
35
- fn();
36
- return;
37
- }
38
- std.addEventListener("open", fn, { once: true });
39
- return;
40
- }
41
- fn();
42
- }
43
- export function bindSandboxWsSocket(ws, handlers) {
44
- if (typeof ws.on === "function") {
45
- const onMessage = (...args) => {
46
- const data = args[0];
47
- const raw = typeof data === "string"
48
- ? data
49
- : data instanceof ArrayBuffer
50
- ? new TextDecoder().decode(data)
51
- : Buffer.isBuffer(data)
52
- ? data.toString()
53
- : String(data ?? "");
54
- handlers.onMessage(raw);
55
- };
56
- ws.on("message", onMessage);
57
- ws.on("close", handlers.onClose);
58
- if (handlers.onError)
59
- ws.on("error", handlers.onError);
60
- return () => {
61
- ws.off?.("message", onMessage);
62
- ws.off?.("close", handlers.onClose);
63
- if (handlers.onError)
64
- ws.off?.("error", handlers.onError);
65
- };
66
- }
67
- const onMessage = (ev) => {
68
- const data = ev.data;
69
- handlers.onMessage(typeof data === "string" ? data : "");
70
- };
71
- const onClose = () => handlers.onClose();
72
- const onError = handlers.onError
73
- ? () => handlers.onError?.(new Error("WebSocket error"))
74
- : undefined;
75
- ws.addEventListener("message", onMessage);
76
- ws.addEventListener("close", onClose);
77
- if (onError)
78
- ws.addEventListener("error", onError);
79
- return () => {
80
- ws.removeEventListener("message", onMessage);
81
- ws.removeEventListener("close", onClose);
82
- if (onError)
83
- ws.removeEventListener("error", onError);
84
- };
85
- }
86
- export function parseSandboxWsPayload(raw) {
87
- let payload;
88
- try {
89
- payload = JSON.parse(raw);
90
- }
91
- catch {
92
- payload = { text: raw };
93
- }
94
- const type = payload.type ?? "private";
95
- const id = payload.id ?? "sandbox-user";
96
- const content = typeof payload.content === "string"
97
- ? [{ type: "text", data: { text: payload.content } }]
98
- : Array.isArray(payload.content)
99
- ? toCanonicalSegments(payload.content)
100
- : [{ type: "text", data: { text: payload.text ?? raw } }];
101
- return { type, id, content, timestamp: payload.timestamp ?? Date.now() };
102
- }
103
- export class SandboxWsEndpoint extends EventEmitter {
104
- adapter;
105
- $config;
106
- $connected = false;
107
- #unbind = null;
108
- get $id() {
109
- return this.$config.name;
110
- }
111
- constructor(adapter, $config) {
112
- super();
113
- this.adapter = adapter;
114
- this.$config = $config;
115
- }
116
- async $connect() {
117
- if (this.$config.offline || !this.$config.ws)
118
- return;
119
- const ws = this.$config.ws;
120
- if (typeof ws.on !== "function" && typeof ws.addEventListener !== "function") {
121
- this.$connected = true;
122
- return;
123
- }
124
- this.#unbind = bindSandboxWsSocket(ws, {
125
- onMessage: (raw) => {
126
- const { type, id, content, timestamp } = parseSandboxWsPayload(raw);
127
- this.adapter.emit("message.receive", this.$formatMessage({ content, type, id, ts: timestamp }));
128
- },
129
- onClose: () => {
130
- this.$connected = false;
131
- if (!this.$config.offline) {
132
- this.adapter.endpoints.delete(this.$id);
133
- }
134
- },
135
- onError: (err) => {
136
- this.adapter.logger.warn(`sandbox ws error (${this.$config.name}): ${err instanceof Error ? err.message : String(err)}`);
137
- },
138
- });
139
- this.$connected = true;
140
- }
141
- async $disconnect() {
142
- this.#unbind?.();
143
- this.#unbind = null;
144
- this.$config.ws?.close();
145
- this.$connected = false;
146
- }
147
- $formatMessage({ content, type, id, ts }) {
148
- if (!this.$config.owner)
149
- this.$config.owner = id;
150
- const canonical = toCanonicalSegments(content);
151
- const message = Message.from({ content, type, id, ts }, {
152
- $id: `${ts}`,
153
- $adapter: "sandbox",
154
- $endpoint: this.$config.name,
155
- $sender: { id, name: "mock" },
156
- $channel: { id, type },
157
- $content: canonical,
158
- $raw: segment.raw(canonical),
159
- $timestamp: ts,
160
- $recall: async () => { },
161
- $reply: async (replyContent, quote) => {
162
- const normalized = Array.isArray(replyContent) ? replyContent : [replyContent];
163
- if (quote) {
164
- normalized.unshift({
165
- type: "reply",
166
- data: {
167
- id: typeof quote === "boolean" ? message.$id : quote,
168
- },
169
- });
170
- }
171
- return await this.adapter.sendMessage({
172
- context: "sandbox",
173
- endpoint: this.$config.name,
174
- content: normalized,
175
- id,
176
- type,
177
- });
178
- },
179
- });
180
- return message;
181
- }
182
- async $sendMessage(options) {
183
- options = {
184
- ...options,
185
- };
186
- if (!this.$connected)
187
- return "";
188
- const ws = this.$config.ws;
189
- if (!ws)
190
- return "";
191
- const messageId = `sb_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
192
- const normalized = (Array.isArray(options.content) ? options.content : [options.content]).map((s) => typeof s === 'string' ? { type: 'text', data: { text: s } } : s);
193
- const wire = fromCanonicalSegments(toCanonicalSegments(normalized));
194
- ws.send(JSON.stringify({
195
- ...options,
196
- messageId,
197
- content: wire,
198
- timestamp: Date.now(),
199
- }));
200
- return messageId;
201
- }
202
- async $editMessage(options) {
203
- if (!this.$connected)
204
- return;
205
- const ws = this.$config.ws;
206
- if (!ws)
207
- return;
208
- ws.send(JSON.stringify({
209
- type: 'edit',
210
- messageId: options.messageId,
211
- context: options.context,
212
- endpoint: options.endpoint,
213
- id: options.id,
214
- channelType: options.type,
215
- content: options.content,
216
- timestamp: Date.now(),
217
- }));
218
- }
219
- async $recallMessage(_id) { }
220
- }
221
- export class SandboxWsHostAdapter extends Adapter {
222
- defaults;
223
- static capabilities = ['inbound', 'outbound'];
224
- static interactivePolicy = 'native';
225
- constructor(plugin, defaults) {
226
- super(plugin, "sandbox", []);
227
- this.defaults = defaults;
228
- }
229
- getOutboundMediaCapabilities() {
230
- return {
231
- image: true,
232
- audio: true,
233
- video: true,
234
- file: true,
235
- maxAttachmentBytes: 26_214_400,
236
- };
237
- }
238
- createEndpoint(config) {
239
- const endpoint = new SandboxWsEndpoint(this, config);
240
- this.endpoints.set(endpoint.$id, endpoint);
241
- return endpoint;
242
- }
243
- /** `zhin.config.yml` 中 `context: sandbox` + 固定 `name` 时,启动即出现在 endpoint:list(离线) */
244
- registerConfiguredPlaceholder() {
245
- if (this.defaults.randomNamePerConnection)
246
- return;
247
- if (this.endpoints.has(this.defaults.name))
248
- return;
249
- this.createEndpoint({
250
- context: "sandbox",
251
- name: this.defaults.name,
252
- owner: this.defaults.owner,
253
- ws: createOfflineSandboxWs(),
254
- offline: true,
255
- });
256
- }
257
- /** 外部 upgrade:注入已建立的 WebSocket */
258
- acceptWebSocket(ws, overrides) {
259
- const name = overrides?.name ??
260
- (this.defaults.randomNamePerConnection
261
- ? `sandbox-${crypto.randomUUID().slice(0, 8)}`
262
- : this.defaults.name);
263
- const owner = overrides?.owner ?? this.defaults.owner;
264
- const existing = this.endpoints.get(name);
265
- if (existing) {
266
- void existing.$disconnect();
267
- this.endpoints.delete(name);
268
- }
269
- const endpoint = this.createEndpoint({ context: "sandbox", ws, name, owner, offline: false });
270
- void endpoint.$connect();
271
- if (!this.defaults.randomNamePerConnection) {
272
- const readyPayload = JSON.stringify({
273
- type: "ready",
274
- id: owner,
275
- endpoint: name,
276
- content: [
277
- {
278
- type: "text",
279
- data: {
280
- text: [
281
- `已连接 Sandbox「${name}」`,
282
- "与 Node Host 控制台沙盒协议一致(/sandbox)",
283
- "命令: help · ping · zt · status",
284
- ].join("\n"),
285
- },
286
- },
287
- ],
288
- timestamp: Date.now(),
289
- });
290
- whenWsOpen(ws, () => ws.send(readyPayload));
291
- }
292
- return endpoint;
293
- }
294
- }
295
- //# sourceMappingURL=sandbox-ws.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox-ws.js","sourceRoot":"","sources":["../src/sandbox-ws.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { toCanonicalSegments, fromCanonicalSegments } from 'zhin.js';
2
- //# sourceMappingURL=segment-mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segment-mapper.d.ts","sourceRoot":"","sources":["../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,2 +0,0 @@
1
- export { toCanonicalSegments, fromCanonicalSegments } from 'zhin.js';
2
- //# sourceMappingURL=segment-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segment-mapper.js","sourceRoot":"","sources":["../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}