@mujian/js-sdk 0.0.6-beta.77 → 0.0.6-beta.78

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.
@@ -6,10 +6,12 @@ interface ChatStreamingProps {
6
6
  common: UseChatCommon;
7
7
  setError: (error: unknown) => void;
8
8
  setMessages: Dispatch<SetStateAction<Message[]>>;
9
+ getMessages: () => Message[];
10
+ setInput: (input: string) => void;
9
11
  mujian: MujianSdk;
10
12
  }
11
13
  export declare const NOT_SAVED_MSG_ID_PREFIX = "not_saved";
12
- export declare const useChatStreaming: ({ common, setError, setMessages, mujian, }: ChatStreamingProps) => {
14
+ export declare const useChatStreaming: ({ common, setError, setMessages, getMessages, setInput, mujian, }: ChatStreamingProps) => {
13
15
  chatStreaming: ({ query, regenerate, is_continue, signal, }: {
14
16
  /** 用户输入 */
15
17
  query?: string;
package/dist/react.js CHANGED
@@ -1131,13 +1131,14 @@ async function* callSdk(mujian, content, type = 'generate', signal) {
1131
1131
  }
1132
1132
  const NOT_SAVED_MSG_ID_PREFIX = 'not_saved';
1133
1133
  const FALLBACK_MESSAGE = `哎呀,AI线路好像抽风了,请刷新页面后重新试试吧~`;
1134
- const useChatStreaming = ({ common, setError, setMessages, mujian })=>{
1134
+ const useChatStreaming = ({ common, setError, setMessages, getMessages, setInput, mujian })=>{
1135
1135
  const { body } = common;
1136
1136
  const [isStreaming, setIsStreaming] = useState(false);
1137
1137
  const chatStreaming = useCallback(async ({ query, regenerate, is_continue, signal })=>{
1138
1138
  try {
1139
1139
  setError(void 0);
1140
1140
  setIsStreaming(true);
1141
+ const backupMessages = getMessages();
1141
1142
  const userMessage = {
1142
1143
  id: `${NOT_SAVED_MSG_ID_PREFIX}_user_${Date.now()}`,
1143
1144
  content: query || '',
@@ -1274,7 +1275,11 @@ const useChatStreaming = ({ common, setError, setMessages, mujian })=>{
1274
1275
  }
1275
1276
  } catch (error) {
1276
1277
  Log.e('Stream error', error);
1277
- 'object' == typeof error && error && 'message' in error && 'string' == typeof error.message ? setError(new SendMessageError(error.message)) : setError(error);
1278
+ if ('object' == typeof error && error && 'message' in error && 'string' == typeof error.message) if ('code' in error && 2011030001 === error.code) {
1279
+ setMessages(backupMessages);
1280
+ if (query) setInput(query);
1281
+ } else setError(new SendMessageError(error.message));
1282
+ else setError(error);
1278
1283
  } finally{
1279
1284
  Log.i('stream end finally');
1280
1285
  setMessages((prev)=>{
@@ -1363,12 +1368,17 @@ const useChat = ({ body, onError, onFinish, pageSize })=>{
1363
1368
  list: newList
1364
1369
  });
1365
1370
  };
1371
+ const getMessages = useCallback(()=>latestListRef.current, [
1372
+ latestListRef
1373
+ ]);
1366
1374
  const { chatStreaming, isStreaming } = useChatStreaming({
1367
1375
  common: {
1368
1376
  body
1369
1377
  },
1370
1378
  setError,
1371
1379
  setMessages,
1380
+ getMessages,
1381
+ setInput,
1372
1382
  mujian
1373
1383
  });
1374
1384
  useUpdateEffect(()=>{
package/dist/umd/react.js CHANGED
@@ -135,4 +135,4 @@ ${n}
135
135
  0% { transform: rotate(0deg); }
136
136
  100% { transform: rotate(360deg); }
137
137
  }
138
- `,t2={width:48,height:48,animation:"spin 1s linear infinite"},t6=({className:e,style:t})=>(0,ep.jsxs)(ep.Fragment,{children:[(0,ep.jsx)("style",{children:t1}),(0,ep.jsx)("svg",{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",className:e,style:{...t2,...t},children:(0,ep.jsx)("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})]}),t4=(0,A.createContext)(null),t9=({children:e,loadingComponent:t})=>{let[r,n]=(0,A.useState)(null);return(0,A.useEffect)(()=>{(async()=>{let e=t0.getInstance();await e.init(),n(e)})()},[]),(0,ep.jsx)(t4.Provider,{value:r,children:r?e:t??(0,ep.jsx)("div",{style:{height:"100%",width:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:(0,ep.jsx)(t6,{style:{color:"#EC4342"}})})})},t7=()=>{let e=(0,A.useContext)(t4);if(!e){let e="Mujian is not initialized. Please check that useMujian is called inside MujianProvider";throw console.error(e),Error(e)}return e};var t5=n("../../common/temp/node_modules/.pnpm/react-dom@19.1.1_react@19.1.1/node_modules/react-dom/index.js");let{min:re,max:rt,abs:rr,floor:rn}=Math,rd=(e,t,r)=>re(r,rt(t,e)),ra=e=>[...e].sort((e,t)=>e-t),ri="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},ru=()=>{let e;return[new Promise(t=>{e=t}),e]},ro=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},rs=(e,t,r)=>{let n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](-1);return e},rc=(e,t)=>{let r=e.t[t];return -1===r?e.o:r},rl=(e,t,r)=>{let n=-1===e.t[t];return e.t[t]=r,e.i=re(t,e.i),n},rf=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,n=e.u[r];for(;r<t;)n+=rc(e,r),e.u[++r]=n;return e.i=t,n},rp=(e,t,r=0,n=e.l-1)=>{for(;r<=n;){let d=rn((r+n)/2),a=rf(e,d);if(a<=t){if(a+rc(e,d)>t)return d;r=d+1}else n=d-1}return rd(r,0,e.l-1)},rh=(e,t,r)=>{let n=t-e.l;return e.i=r?-1:re(t-1,e.i),e.l=t,n>0?(rs(e.u,n),rs(e.t,n,r),e.o*n):(e.u.splice(n),(r?e.t.splice(0,-n):e.t.splice(n)).reduce((t,r)=>t-(-1===r?e.o:r),0))},rm="undefined"!=typeof window,rg=ro(()=>!!rm&&"rtl"===getComputedStyle(document.documentElement).direction),r_=ro(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0),rb=ro(()=>"scrollBehavior"in document.documentElement.style),rw=setTimeout,ry=(e,t)=>t&&rg()?-e:e,rv=rm?A.useLayoutEffect:A.useEffect,rk="current",rE=(e,t)=>{if(Array.isArray(e))for(let r of e)rE(r,t);else null==e||"boolean"==typeof e||t.push(e)},rA=e=>{let t=(0,A.useRef)(e);return rv(()=>{t[rk]=e},[e]),t},rS=(0,A.memo)(({Z:e,ee:t,te:r,oe:n,ne:d,re:a,ie:i,se:u})=>{let o=(0,A.useRef)(null);rv(()=>t(o[rk],r),[r]);let s=(0,A.useMemo)(()=>{let e={contain:"layout style",position:d&&u?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:0,[i?rg()?"right":"left":"top"]:n,visibility:!d||u?"visible":"hidden"};return i&&(e.display="inline-flex"),e},[n,d,u,i]);return(0,ep.jsx)(a,"string"==typeof a?{ref:o,style:s,children:e}:{ref:o,style:s,index:r,children:e})}),rT=(0,A.forwardRef)(({children:e,data:t,overscan:r,itemSize:n,shift:d,horizontal:a,keepMounted:i,cache:u,startMargin:o=0,ssrCount:s,as:c="div",item:l="div",scrollRef:f,onScroll:p,onScrollEnd:h},m)=>{var g;let _,[b,w]=(0,A.useMemo)(()=>{let r;if("function"==typeof e)return[r=>e(t[r],r),t.length];let n=(rE(e,r=[]),r);return[e=>n[e],n.length]},[e,t]),y=(0,A.useRef)(null),v=(0,A.useRef)(!!s),k=rA(p),E=rA(h),[S,T,x,j]=(g=()=>{var e;let t,d,i,o,c,l=!!a,f=((e,t=40,r=4,n=0,d,a=!1)=>{let i=!!n,u=1,o=0,s=0,c=0,l=0,f=0,p=0,h=0,m=0,g=i?[0,rt(n-1,0)]:null,_=[0,0],b=0,w={o:d?d[1]:t,t:d&&d[0]?rs(d[0].slice(0,re(e,d[0].length)),rt(0,e-d[0].length)):rs([],e),l:e,i:-1,u:rs([],e)},y=new Set,v=()=>c-s+f+l,k=e=>((e,t,r,n)=>{if(n=re(n,e.l-1),rf(e,n)<=t){let d=rp(e,t+r,n);return[rp(e,t,n,d),d]}{let d=rp(e,t,void 0,n);return[d,rp(e,t+r,d)]}})(w,e,o,_[0]),E=()=>w.l?rf(w,w.l-1)+rc(w,w.l-1):0,A=e=>rf(w,e)-f,S=e=>rc(w,e),T=e=>{e&&(r_()&&0!==h||g&&1===m?f+=e:l+=e)};return{v:()=>u,m:()=>[w.t.slice(),w.o],_:()=>{let e,t;return p?[e,t]=_:([e,t]=_=k(rt(0,v())),g&&(e=re(e,g[0]),t=rt(t,g[1]))),1!==h&&(e-=rt(0,r)),2!==h&&(t+=rt(0,r)),[rt(e,0),re(t,w.l-1)]},S:()=>rp(w,v()),$:()=>rp(w,v()+o),I:e=>-1===w.t[e],k:A,R:S,T:()=>w.l,M:()=>c,C:()=>0!==h,p:()=>o,H:()=>s,h:E,W:()=>(p=l,l=0,[p,2===m]),O:(e,t)=>{let r=[e,t];return y.add(r),()=>{y.delete(r)}},B:(e,t)=>{let r,n,d=0;switch(e){case 1:{let e=p;p=0;let r=t-c,a=rr(r);e&&a<rr(e)+1||0!==m||(h=r<0?2:1),i&&(g=null,i=!1),c=t,d=4;let u=c-s;u>=-o&&u<=E()&&(d+=1,n=a>o);break}case 2:d=8,0!==h&&(r=!0,d+=1),h=0,m=0,g=null;break;case 3:{var _;let e,r,i,u,l,f,p,y=t.filter(([e,t])=>w.t[e]!==t);if(!y.length)break;for(let[e,t]of(T(y.reduce((e,[t,r])=>((2===m||(g&&1===m?t<g[0]:A(t)+(0===h&&0===m?S(t):0)<c-s))&&(e+=r-S(t)),e),0)),y)){let r=S(e),n=rl(w,e,t);a&&(b+=n?t:t-r)}a&&o&&b>o&&(T((_=rp(w,v()),e=0,r=[],w.t.forEach((t,n)=>{-1!==t&&(r.push(t),n<_&&e++)}),w.i=-1,l=(u=(i=ra(r)).length)/2|0,f=u%2==0?(i[l-1]+i[l])/2:i[l],p=w.o,((w.o=f)-p)*rt(_-e,0))),a=!1),d=3,n=!0;break}case 4:o!==t&&(o=t,d=3);break;case 5:t[1]?(T(rh(w,t[0],!0)),m=2):rh(w,t[0]),d=1;break;case 6:s=t;break;case 7:m=1;break;case 8:g=k(t),d=1}d&&(u=1+(0x7fffffff&u),r&&f&&(l+=f,f=0),y.forEach(([e,t])=>{d&e&&t(n)}))}}})(w,n,r,s,u,!n);return[f,(i=l?"width":"height",o=new WeakMap,e=e=>{let r=[];for(let{target:n,contentRect:d}of e)if(n.offsetParent)if(n===t)f.B(4,d[i]);else{let e=o.get(n);null!=e&&r.push([e,d[i]])}r.length&&f.B(3,r)},{U(e){c.q(t=e)},F:(e,t)=>(o.set(e,t),c.q(e),()=>{o.delete(e),c.G(e)}),P:(c={q(t){(d||(d=new t.ownerDocument.defaultView.ResizeObserver(e))).observe(t)},G(e){d.unobserve(e)},A(){d&&d.disconnect()}}).A}),((e,t)=>{var r,n;let d,a,i,u=ru(),o=t?"scrollLeft":"scrollTop",s=t?"overflowX":"overflowY",[c,l]=(r=()=>u[0],n=(e,r)=>{e=ry(e,t),r?a.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):a[o]=e},[async(t,a)=>{if(!await r())return;d&&d();let i=()=>{let[t,r]=ru();return d=()=>{r(!1)},e.p()&&rw(d,150),[t,e.O(2,()=>{r(!0)})]};if(a&&rb())e.B(8,t()),ri(async()=>{for(;;){let t=!0;for(let[r,n]=e._();r<=n;r++)if(e.I(r)){t=!1;break}if(t)break;let[r,n]=i();try{if(!await r)return}finally{n()}}e.B(7),n(t(),a)});else for(;;){let[r,d]=i();try{if(e.B(7),n(t()),!await r)return}finally{d()}}},()=>{d&&d()}]);return{D(r){var n,d;let c,f,p,h,m,g,_,b,w,y,v,k,E,A;a=r,n=()=>ry(r[o],t),c=Date.now,f=0,p=!1,h=!1,m=!1,g=!1,b=()=>{null!=_&&clearTimeout(_)},(w=()=>{b(),_=rw(()=>{_=null,(()=>{if(p||h)return p=!1,y();m=!1,e.B(2)})()},150)}).J=b,y=w,v=()=>{f=c(),m&&(g=!0),d&&e.B(6,d()),e.B(1,n()),y()},k=r=>{if(p||!e.C()||r.ctrlKey)return;let n=c()-f;150>n&&50<n&&(t?r.deltaX:r.deltaY)&&(p=!0)},E=()=>{h=!0,m=g=!1},A=()=>{h=!1,r_()&&(m=!0)},r.addEventListener("scroll",v),r.addEventListener("wheel",k,{passive:!0}),r.addEventListener("touchstart",E,{passive:!0}),r.addEventListener("touchend",A,{passive:!0}),i={A:()=>{r.removeEventListener("scroll",v),r.removeEventListener("wheel",k),r.removeEventListener("touchstart",E),r.removeEventListener("touchend",A),y.J()},L:()=>{let[d,a]=e.W();d&&(((t,n,d)=>{if(d){let e=r.style,t=e[s];e[s]="hidden",rw(()=>{e[s]=t})}r[o]=e.M()+t,n&&l()})(ry(d,t),a,g),g=!1,a&&e.p()>e.h()&&e.B(1,n()))}},u[1](!0)},P(){i&&i.A(),u[1](!1),u=ru()},V(e){c(()=>e)},X(t){t+=e.M(),c(()=>t)},Y(t,{align:r,smooth:n,offset:d=0}={}){if(t=rd(t,0,e.T()-1),"nearest"===r){let n=e.k(t),d=e.M();if(n<d)r="start";else{if(!(n+e.R(t)>d+e.p()))return;r="end"}}c(()=>d+e.H()+e.k(t)+("end"===r?e.R(t)-e.p():"center"===r?(e.R(t)-e.p())/2:0),n)},j:()=>{i&&i.L()}}})(f,l),l]},(_=(0,A.useRef)(null))[rk]||(_[rk]=g()));w!==S.T()&&S.B(5,[w,d]),o!==S.H()&&S.B(6,o);let[M,I]=(0,A.useReducer)(S.v,void 0,S.v),[P,C]=S._(),O=S.C(),N=S.h(),L=[],R=e=>{let t,r=b(e);return(0,ep.jsx)(rS,{ee:T.F,te:e,oe:S.k(e),ne:S.I(e),re:l,Z:r,ie:j,se:v[rk]},null!=(t=r.key)?t:"_"+e)};if(rv(()=>{v[rk]=!1;let e=S.O(1,e=>{e?(0,t5.flushSync)(I):I()}),t=S.O(4,()=>{k[rk]&&k[rk](S.M())}),r=S.O(8,()=>{E[rk]&&E[rk]()}),n=e=>{T.U(e),x.D(e)};return f?ri(()=>{f[rk]&&n(f[rk])}):n(y[rk].parentElement),()=>{e(),t(),r(),T.P(),x.P()}},[]),rv(()=>{x.j()},[M]),(0,A.useImperativeHandle)(m,()=>({get cache(){return S.m()},get scrollOffset(){return S.M()},get scrollSize(){return rt(S.h(),S.p())},get viewportSize(){return S.p()},findStartIndex:S.S,findEndIndex:S.$,getItemOffset:S.k,getItemSize:S.R,scrollToIndex:x.Y,scrollTo:x.V,scrollBy:x.X}),[]),i){let e=new Set(i);for(let t=P;t<=C;t++)e.add(t);ra([...e]).forEach(e=>{L.push(R(e))})}else for(let e=P;e<=C;e++)L.push(R(e));return(0,ep.jsx)(c,{ref:y,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:j?N:"100%",height:j?"100%":N,pointerEvents:O?"none":void 0},children:L})}),rx={MessageItem:e=>{let{message:t,children:r,depth:n,index:d}=e,a=t7(),{data:i}=ec(async()=>{let{isStreaming:e}=t;return e?t:await a.ai.chat.renderMessage({message:t,depth:n,index:d})},{refreshDeps:[t]});return r(i||t,t)},MessageList:(0,A.forwardRef)((e,t)=>{let{children:r,messages:n,vListProps:d}=e;return(0,ep.jsx)(rT,{...d,data:n,ref:t,children:(e,t)=>r({message:e,index:t,depth:n.length-1-t})})})};var rj=Array.isArray,rM="object"==typeof global&&global&&global.Object===Object&&global,rI="object"==typeof self&&self&&self.Object===Object&&self,rP=rM||rI||Function("return this")(),rC=rP.Symbol,rO=Object.prototype,rN=rO.hasOwnProperty,rL=rO.toString,rR=rC?rC.toStringTag:void 0;let rz=function(e){var t=rN.call(e,rR),r=e[rR];try{e[rR]=void 0;var n=!0}catch(e){}var d=rL.call(e);return n&&(t?e[rR]=r:delete e[rR]),d};var r$=Object.prototype.toString,rH=rC?rC.toStringTag:void 0;let rD=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":rH&&rH in Object(e)?rz(e):r$.call(e)},rU=function(e){return"symbol"==typeof e||null!=e&&"object"==typeof e&&"[object Symbol]"==rD(e)};var rB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rG=/^\w*$/;let rF=function(e,t){if(rj(e))return!1;var r=typeof e;return!!("number"==r||"symbol"==r||"boolean"==r||null==e||rU(e))||rG.test(e)||!rB.test(e)||null!=t&&e in Object(t)},rq=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},rV=function(e){if(!rq(e))return!1;var t=rD(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t};var rJ=rP["__core-js_shared__"],rW=(h=/[^.]+$/.exec(rJ&&rJ.keys&&rJ.keys.IE_PROTO||""))?"Symbol(src)_1."+h:"",rY=Function.prototype.toString;let rK=function(e){if(null!=e){try{return rY.call(e)}catch(e){}try{return e+""}catch(e){}}return""};var rX=/^\[object .+?Constructor\]$/,rZ=Object.prototype,rQ=Function.prototype.toString,r3=rZ.hasOwnProperty,r8=RegExp("^"+rQ.call(r3).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");let r0=function(e){return!!rq(e)&&(!rW||!(rW in e))&&(rV(e)?r8:rX).test(rK(e))},r1=function(e,t){var r=null==e?void 0:e[t];return r0(r)?r:void 0};var r2=r1(Object,"create"),r6=Object.prototype.hasOwnProperty,r4=Object.prototype.hasOwnProperty;function r9(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}r9.prototype.clear=function(){this.__data__=r2?r2(null):{},this.size=0},r9.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=!!t,t},r9.prototype.get=function(e){var t=this.__data__;if(r2){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return r6.call(t,e)?t[e]:void 0},r9.prototype.has=function(e){var t=this.__data__;return r2?void 0!==t[e]:r4.call(t,e)},r9.prototype.set=function(e,t){var r=this.__data__;return this.size+=+!this.has(e),r[e]=r2&&void 0===t?"__lodash_hash_undefined__":t,this};let r7=function(e,t){for(var r,n=e.length;n--;)if((r=e[n][0])===t||r!=r&&t!=t)return n;return -1};var r5=Array.prototype.splice;function ne(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ne.prototype.clear=function(){this.__data__=[],this.size=0},ne.prototype.delete=function(e){var t=this.__data__,r=r7(t,e);return!(r<0)&&(r==t.length-1?t.pop():r5.call(t,r,1),--this.size,!0)},ne.prototype.get=function(e){var t=this.__data__,r=r7(t,e);return r<0?void 0:t[r][1]},ne.prototype.has=function(e){return r7(this.__data__,e)>-1},ne.prototype.set=function(e,t){var r=this.__data__,n=r7(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var nt=r1(rP,"Map");let nr=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e},nn=function(e,t){var r=e.__data__;return nr(t)?r["string"==typeof t?"string":"hash"]:r.map};function nd(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function na(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw TypeError("Expected a function");var r=function(){var n=arguments,d=t?t.apply(this,n):n[0],a=r.cache;if(a.has(d))return a.get(d);var i=e.apply(this,n);return r.cache=a.set(d,i)||a,i};return r.cache=new(na.Cache||nd),r}nd.prototype.clear=function(){this.size=0,this.__data__={hash:new r9,map:new(nt||ne),string:new r9}},nd.prototype.delete=function(e){var t=nn(this,e).delete(e);return this.size-=!!t,t},nd.prototype.get=function(e){return nn(this,e).get(e)},nd.prototype.has=function(e){return nn(this,e).has(e)},nd.prototype.set=function(e,t){var r=nn(this,e),n=r.size;return r.set(e,t),this.size+=+(r.size!=n),this},na.Cache=nd;var ni=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nu=/\\(\\)?/g,no=(g=(m=na(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ni,function(e,r,n,d){t.push(n?d.replace(nu,"$1"):r||e)}),t},function(e){return 500===g.size&&g.clear(),e})).cache,m);let ns=function(e,t){for(var r=-1,n=null==e?0:e.length,d=Array(n);++r<n;)d[r]=t(e[r],r,e);return d};var nc=1/0,nl=rC?rC.prototype:void 0,nf=nl?nl.toString:void 0;let np=function e(t){if("string"==typeof t)return t;if(rj(t))return ns(t,e)+"";if(rU(t))return nf?nf.call(t):"";var r=t+"";return"0"==r&&1/t==-nc?"-0":r},nh=function(e,t){return rj(e)?e:rF(e,t)?[e]:no(null==e?"":np(e))};var nm=1/0;let ng=function(e){if("string"==typeof e||rU(e))return e;var t=e+"";return"0"==t&&1/e==-nm?"-0":t},n_=function(e,t){t=nh(t,e);for(var r=0,n=t.length;null!=e&&r<n;)e=e[ng(t[r++])];return r&&r==n?e:void 0},nb=function(e,t,r){var n=null==e?void 0:n_(e,t);return void 0===n?r:n},nw={ai:{chat:{get complete(){return t},get project(){return r},settings:{get persona(){return a}},get setFirstMesIndex(){return i}}}};function ny({projectInfo:e,activePersona:n,onSend:d,messages:s,setSwipe:c}){(0,A.useEffect)(()=>{r=e??void 0,a=n??void 0},[e,n]),(0,A.useEffect)(()=>{t=async e=>{await d(e)},i=async e=>{if(s.length>1)throw Error("已有新消息,不允许切换开场白");if(0===s.length)throw Error("断言失败:没有开场消息,无法切换开场白");let t=Math.floor(e)-1,r=s[0].swipes.length;t<0||t>=r||c(s[0].id,t)},o=(e,t)=>s.find(t=>t.id===e)?.swipeInfo[t]?.mjv?.value,u=(e,t,r)=>{let n=o?.(e,t);if(n)return nb(n,r)}},[d,s,c])}window.$mj_engine={...nw,bind:({messageId:e,swipeId:t})=>({ai:{chat:{...nw.ai.chat,mjv:{get:r=>u?.(e,t,r),getAll:()=>o?.(e,t)??{}}}}})};class nv extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}class nk extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}class nE extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}async function*nA(e,t,r="generate",n){let d=[],a=null,i=!1,u=null;try{let o=e=>{u||"string"==typeof e&&(d.push(e),a&&(a(),a=null))},s=()=>{i=!0,a&&(a(),a=null)},c=e=>{u=e,a&&(a(),a=null)};"generate"===r?e.ai.chat.complete(t,o,n).then(s).catch(c):"regenerate"===r?e.ai.chat.regenerate(o,n).then(s).catch(c):e.ai.chat.continue(o,n).then(s).catch(c)}catch(e){u=e,i=!0}for(;;)if(d.length>0)yield d.shift();else if(i)break;else if(u)throw u;else await new Promise(e=>{a=e})}let nS="not_saved",nT=`哎呀,AI线路好像抽风了,请刷新页面后重新试试吧~`,nx=({body:e,onError:t,onFinish:r,pageSize:n})=>{let[d,a]=(0,A.useState)(),[i,u]=(0,A.useState)(""),[o,s]=(0,A.useState)(),c=t7(),l=e=>{a(e),e&&t?.(e)},f=(0,A.useRef)(!1),{data:p,loadMoreAsync:h,loadingMore:m,loading:g,mutate:_,error:b}=ef(async e=>{if(f.current=!0,e?.noMore)return{noMore:!0,list:[]};try{let t=await c.ai.chat.message.getPage(e?.cursor,n);return{cursor:t.nextCursor,list:t.messages.map(e=>({...e,mjv:e.swipeInfo[e.activeSwipeId]?.mjv})),noMore:!t.nextCursor}}finally{f.current=!1}},{direction:"top"}),w=async()=>{if(!f.current)try{f.current=!0,await h()}finally{f.current=!1}},y=p?.list??[],v=T(p),k=(0,A.useRef)(y);k.current=y;let E=e=>{let t;t="function"==typeof e?e(k.current):e,k.current=t,_({...v.current,list:t})},{chatStreaming:S,isStreaming:x}=(({common:e,setError:t,setMessages:r,mujian:n})=>{let{body:d}=e,[a,i]=(0,A.useState)(!1);return{chatStreaming:(0,A.useCallback)(async({query:e,regenerate:d,is_continue:a,signal:u})=>{try{t(void 0),i(!0);let o={id:`${nS}_user_${Date.now()}`,content:e||"",role:"user",swipes:[],activeSwipeId:0,isStreaming:!1,sendAt:new Date,swipeInfo:[]},s={id:`${nS}_assistant_${Date.now()}`,content:"",role:"assistant",swipes:[""],activeSwipeId:0,isStreaming:!0,sendAt:new Date,swipeInfo:[{}]};d?r(e=>{let t=[...e],r=t[t.length-1];return t[t.length-1]={...r,activeSwipeId:r.swipes.length,swipes:[...r.swipes,""],content:"",isStreaming:!0},t}):a?r(e=>[...e,s]):r(e=>[...e,o,s]);let c=nA(n,e||"",a?"continue":d?"regenerate":"generate",u),l="",f="";try{for await(let e of c){let n=(l+=e).split("\n");for(let e of(l=n.pop()||"",n))if(e.startsWith("data: ")){let n=e.slice(6);try{let e=JSON.parse(n);if(d||"meta"!==e.type){if("stream"===e.type){let d=e.choices[0].delta.content;e.choices[0].delta.reasoning,(f+=d)||""===f?(r(e=>{let t=[...e],r=t[t.length-1];return r.swipes[r.activeSwipeId]=f,t[t.length-1]={...r,content:f,isStreaming:!0},t}),await new Promise(e=>setTimeout(e,10))):(console.error("data",n),t(new nk(n)))}else if("mjv"===e.type){let{value:t,delta:n,schema:d}=e;r(e=>{let r=[...e],a=r[r.length-1],i={value:t,delta:n,schema:d},u=a.swipeInfo;return u[a.activeSwipeId]?u[a.activeSwipeId].mjv=i:u[a.activeSwipeId]={mjv:i},r[r.length-1]={...a,swipeInfo:u,mjv:i},r})}}else{let{question_id:t,reply_id:n}=e;r(e=>{let r=[...e];t&&!a&&(r[r.length-2].id=t);let d=r[r.length-1];return r[r.length-1]={...d,id:n},r});continue}}catch{"[DONE]"!==n&&(console.error("Received plain SSE message:",n),t(new nE(n)))}}}}catch(e){tf.e("Stream error",e),"object"==typeof e&&e&&"message"in e&&"string"==typeof e.message?t(new nv(e.message)):t(e)}finally{tf.i("stream end finally"),r(e=>{let t=[...e],r={...t[t.length-1],isStreaming:!1};return r.swipes[r.activeSwipeId]||(r.swipes[r.activeSwipeId]=nT,r.content=nT),t[t.length-1]=r,t})}}catch(e){console.error("Error:",e),t(new nv("Send message failed",e)),r(e=>e.slice(0,-1))}finally{i(!1)}},[d,n]),isStreaming:a}})({common:{body:e},setError:l,setMessages:E,mujian:c});L(()=>{if(!x){let e=y[y.length-1];r?.(e)}},[x]);let j=(0,A.useCallback)(async e=>{if(x)throw Error("useChat is streaming already.");let t=new AbortController;s(t);try{await S({query:e,signal:t.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,S]),M=(0,A.useCallback)(async()=>{if(x)throw Error("useChat is streaming already.");let e=new AbortController;s(e);let t=y.findLast(e=>"user"===e.role);try{await S({query:t?.content||"",regenerate:!0,signal:e.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,y,S]),I=(0,A.useCallback)(async()=>{if(x)throw Error("useChat is streaming already.");let e=new AbortController;s(e);try{await S({query:"",is_continue:!0,signal:e.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,S]),P=async(e,t)=>{t<0||(E(r=>r.map(r=>r.id===e&&t<r.swipes.length?{...r,activeSwipeId:t,content:r.swipes[t],mjv:r.swipeInfo[t]?.mjv}:r)),await c.ai.chat.message.swipe(e,t))},C=async(e,t)=>{await c.ai.chat.message.editOne(e,t),E(r=>r.map(r=>{let n;return r.id===e?("assistant"===(n={...r,content:t}).role&&(n.swipes=[...n.swipes],n.swipes[n.activeSwipeId]=t),n):r}))},O=async e=>{if(!e.startsWith(nS))try{await c.ai.chat.message.deleteOne(e)}catch(e){if(e?.code!==0x77dde1f4)throw e}E(t=>t.filter(t=>t.id!==e))};return{append:j,regenerate:M,continueGenerate:I,stop:()=>{o?.abort()},messages:y,status:d?"error":x?"streaming":"ready",error:d,setMessages:E,input:i,setInput:u,handleSubmit:()=>{j(i)},setSwipe:P,editMessage:C,deleteMessage:O,loadMoreMessage:w,messagesStatus:b?"error":m||g?"loading":p?.noMore?"all-loaded":"has-more"}}})(),d})());
138
+ `,t2={width:48,height:48,animation:"spin 1s linear infinite"},t6=({className:e,style:t})=>(0,ep.jsxs)(ep.Fragment,{children:[(0,ep.jsx)("style",{children:t1}),(0,ep.jsx)("svg",{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",className:e,style:{...t2,...t},children:(0,ep.jsx)("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})]}),t4=(0,A.createContext)(null),t9=({children:e,loadingComponent:t})=>{let[r,n]=(0,A.useState)(null);return(0,A.useEffect)(()=>{(async()=>{let e=t0.getInstance();await e.init(),n(e)})()},[]),(0,ep.jsx)(t4.Provider,{value:r,children:r?e:t??(0,ep.jsx)("div",{style:{height:"100%",width:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:(0,ep.jsx)(t6,{style:{color:"#EC4342"}})})})},t7=()=>{let e=(0,A.useContext)(t4);if(!e){let e="Mujian is not initialized. Please check that useMujian is called inside MujianProvider";throw console.error(e),Error(e)}return e};var t5=n("../../common/temp/node_modules/.pnpm/react-dom@19.1.1_react@19.1.1/node_modules/react-dom/index.js");let{min:re,max:rt,abs:rr,floor:rn}=Math,rd=(e,t,r)=>re(r,rt(t,e)),ra=e=>[...e].sort((e,t)=>e-t),ri="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},ru=()=>{let e;return[new Promise(t=>{e=t}),e]},ro=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},rs=(e,t,r)=>{let n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](-1);return e},rc=(e,t)=>{let r=e.t[t];return -1===r?e.o:r},rl=(e,t,r)=>{let n=-1===e.t[t];return e.t[t]=r,e.i=re(t,e.i),n},rf=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,n=e.u[r];for(;r<t;)n+=rc(e,r),e.u[++r]=n;return e.i=t,n},rp=(e,t,r=0,n=e.l-1)=>{for(;r<=n;){let d=rn((r+n)/2),a=rf(e,d);if(a<=t){if(a+rc(e,d)>t)return d;r=d+1}else n=d-1}return rd(r,0,e.l-1)},rh=(e,t,r)=>{let n=t-e.l;return e.i=r?-1:re(t-1,e.i),e.l=t,n>0?(rs(e.u,n),rs(e.t,n,r),e.o*n):(e.u.splice(n),(r?e.t.splice(0,-n):e.t.splice(n)).reduce((t,r)=>t-(-1===r?e.o:r),0))},rm="undefined"!=typeof window,rg=ro(()=>!!rm&&"rtl"===getComputedStyle(document.documentElement).direction),r_=ro(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0),rb=ro(()=>"scrollBehavior"in document.documentElement.style),rw=setTimeout,ry=(e,t)=>t&&rg()?-e:e,rv=rm?A.useLayoutEffect:A.useEffect,rk="current",rE=(e,t)=>{if(Array.isArray(e))for(let r of e)rE(r,t);else null==e||"boolean"==typeof e||t.push(e)},rA=e=>{let t=(0,A.useRef)(e);return rv(()=>{t[rk]=e},[e]),t},rS=(0,A.memo)(({Z:e,ee:t,te:r,oe:n,ne:d,re:a,ie:i,se:u})=>{let o=(0,A.useRef)(null);rv(()=>t(o[rk],r),[r]);let s=(0,A.useMemo)(()=>{let e={contain:"layout style",position:d&&u?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:0,[i?rg()?"right":"left":"top"]:n,visibility:!d||u?"visible":"hidden"};return i&&(e.display="inline-flex"),e},[n,d,u,i]);return(0,ep.jsx)(a,"string"==typeof a?{ref:o,style:s,children:e}:{ref:o,style:s,index:r,children:e})}),rT=(0,A.forwardRef)(({children:e,data:t,overscan:r,itemSize:n,shift:d,horizontal:a,keepMounted:i,cache:u,startMargin:o=0,ssrCount:s,as:c="div",item:l="div",scrollRef:f,onScroll:p,onScrollEnd:h},m)=>{var g;let _,[b,w]=(0,A.useMemo)(()=>{let r;if("function"==typeof e)return[r=>e(t[r],r),t.length];let n=(rE(e,r=[]),r);return[e=>n[e],n.length]},[e,t]),y=(0,A.useRef)(null),v=(0,A.useRef)(!!s),k=rA(p),E=rA(h),[S,T,x,j]=(g=()=>{var e;let t,d,i,o,c,l=!!a,f=((e,t=40,r=4,n=0,d,a=!1)=>{let i=!!n,u=1,o=0,s=0,c=0,l=0,f=0,p=0,h=0,m=0,g=i?[0,rt(n-1,0)]:null,_=[0,0],b=0,w={o:d?d[1]:t,t:d&&d[0]?rs(d[0].slice(0,re(e,d[0].length)),rt(0,e-d[0].length)):rs([],e),l:e,i:-1,u:rs([],e)},y=new Set,v=()=>c-s+f+l,k=e=>((e,t,r,n)=>{if(n=re(n,e.l-1),rf(e,n)<=t){let d=rp(e,t+r,n);return[rp(e,t,n,d),d]}{let d=rp(e,t,void 0,n);return[d,rp(e,t+r,d)]}})(w,e,o,_[0]),E=()=>w.l?rf(w,w.l-1)+rc(w,w.l-1):0,A=e=>rf(w,e)-f,S=e=>rc(w,e),T=e=>{e&&(r_()&&0!==h||g&&1===m?f+=e:l+=e)};return{v:()=>u,m:()=>[w.t.slice(),w.o],_:()=>{let e,t;return p?[e,t]=_:([e,t]=_=k(rt(0,v())),g&&(e=re(e,g[0]),t=rt(t,g[1]))),1!==h&&(e-=rt(0,r)),2!==h&&(t+=rt(0,r)),[rt(e,0),re(t,w.l-1)]},S:()=>rp(w,v()),$:()=>rp(w,v()+o),I:e=>-1===w.t[e],k:A,R:S,T:()=>w.l,M:()=>c,C:()=>0!==h,p:()=>o,H:()=>s,h:E,W:()=>(p=l,l=0,[p,2===m]),O:(e,t)=>{let r=[e,t];return y.add(r),()=>{y.delete(r)}},B:(e,t)=>{let r,n,d=0;switch(e){case 1:{let e=p;p=0;let r=t-c,a=rr(r);e&&a<rr(e)+1||0!==m||(h=r<0?2:1),i&&(g=null,i=!1),c=t,d=4;let u=c-s;u>=-o&&u<=E()&&(d+=1,n=a>o);break}case 2:d=8,0!==h&&(r=!0,d+=1),h=0,m=0,g=null;break;case 3:{var _;let e,r,i,u,l,f,p,y=t.filter(([e,t])=>w.t[e]!==t);if(!y.length)break;for(let[e,t]of(T(y.reduce((e,[t,r])=>((2===m||(g&&1===m?t<g[0]:A(t)+(0===h&&0===m?S(t):0)<c-s))&&(e+=r-S(t)),e),0)),y)){let r=S(e),n=rl(w,e,t);a&&(b+=n?t:t-r)}a&&o&&b>o&&(T((_=rp(w,v()),e=0,r=[],w.t.forEach((t,n)=>{-1!==t&&(r.push(t),n<_&&e++)}),w.i=-1,l=(u=(i=ra(r)).length)/2|0,f=u%2==0?(i[l-1]+i[l])/2:i[l],p=w.o,((w.o=f)-p)*rt(_-e,0))),a=!1),d=3,n=!0;break}case 4:o!==t&&(o=t,d=3);break;case 5:t[1]?(T(rh(w,t[0],!0)),m=2):rh(w,t[0]),d=1;break;case 6:s=t;break;case 7:m=1;break;case 8:g=k(t),d=1}d&&(u=1+(0x7fffffff&u),r&&f&&(l+=f,f=0),y.forEach(([e,t])=>{d&e&&t(n)}))}}})(w,n,r,s,u,!n);return[f,(i=l?"width":"height",o=new WeakMap,e=e=>{let r=[];for(let{target:n,contentRect:d}of e)if(n.offsetParent)if(n===t)f.B(4,d[i]);else{let e=o.get(n);null!=e&&r.push([e,d[i]])}r.length&&f.B(3,r)},{U(e){c.q(t=e)},F:(e,t)=>(o.set(e,t),c.q(e),()=>{o.delete(e),c.G(e)}),P:(c={q(t){(d||(d=new t.ownerDocument.defaultView.ResizeObserver(e))).observe(t)},G(e){d.unobserve(e)},A(){d&&d.disconnect()}}).A}),((e,t)=>{var r,n;let d,a,i,u=ru(),o=t?"scrollLeft":"scrollTop",s=t?"overflowX":"overflowY",[c,l]=(r=()=>u[0],n=(e,r)=>{e=ry(e,t),r?a.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):a[o]=e},[async(t,a)=>{if(!await r())return;d&&d();let i=()=>{let[t,r]=ru();return d=()=>{r(!1)},e.p()&&rw(d,150),[t,e.O(2,()=>{r(!0)})]};if(a&&rb())e.B(8,t()),ri(async()=>{for(;;){let t=!0;for(let[r,n]=e._();r<=n;r++)if(e.I(r)){t=!1;break}if(t)break;let[r,n]=i();try{if(!await r)return}finally{n()}}e.B(7),n(t(),a)});else for(;;){let[r,d]=i();try{if(e.B(7),n(t()),!await r)return}finally{d()}}},()=>{d&&d()}]);return{D(r){var n,d;let c,f,p,h,m,g,_,b,w,y,v,k,E,A;a=r,n=()=>ry(r[o],t),c=Date.now,f=0,p=!1,h=!1,m=!1,g=!1,b=()=>{null!=_&&clearTimeout(_)},(w=()=>{b(),_=rw(()=>{_=null,(()=>{if(p||h)return p=!1,y();m=!1,e.B(2)})()},150)}).J=b,y=w,v=()=>{f=c(),m&&(g=!0),d&&e.B(6,d()),e.B(1,n()),y()},k=r=>{if(p||!e.C()||r.ctrlKey)return;let n=c()-f;150>n&&50<n&&(t?r.deltaX:r.deltaY)&&(p=!0)},E=()=>{h=!0,m=g=!1},A=()=>{h=!1,r_()&&(m=!0)},r.addEventListener("scroll",v),r.addEventListener("wheel",k,{passive:!0}),r.addEventListener("touchstart",E,{passive:!0}),r.addEventListener("touchend",A,{passive:!0}),i={A:()=>{r.removeEventListener("scroll",v),r.removeEventListener("wheel",k),r.removeEventListener("touchstart",E),r.removeEventListener("touchend",A),y.J()},L:()=>{let[d,a]=e.W();d&&(((t,n,d)=>{if(d){let e=r.style,t=e[s];e[s]="hidden",rw(()=>{e[s]=t})}r[o]=e.M()+t,n&&l()})(ry(d,t),a,g),g=!1,a&&e.p()>e.h()&&e.B(1,n()))}},u[1](!0)},P(){i&&i.A(),u[1](!1),u=ru()},V(e){c(()=>e)},X(t){t+=e.M(),c(()=>t)},Y(t,{align:r,smooth:n,offset:d=0}={}){if(t=rd(t,0,e.T()-1),"nearest"===r){let n=e.k(t),d=e.M();if(n<d)r="start";else{if(!(n+e.R(t)>d+e.p()))return;r="end"}}c(()=>d+e.H()+e.k(t)+("end"===r?e.R(t)-e.p():"center"===r?(e.R(t)-e.p())/2:0),n)},j:()=>{i&&i.L()}}})(f,l),l]},(_=(0,A.useRef)(null))[rk]||(_[rk]=g()));w!==S.T()&&S.B(5,[w,d]),o!==S.H()&&S.B(6,o);let[M,I]=(0,A.useReducer)(S.v,void 0,S.v),[P,C]=S._(),O=S.C(),N=S.h(),L=[],R=e=>{let t,r=b(e);return(0,ep.jsx)(rS,{ee:T.F,te:e,oe:S.k(e),ne:S.I(e),re:l,Z:r,ie:j,se:v[rk]},null!=(t=r.key)?t:"_"+e)};if(rv(()=>{v[rk]=!1;let e=S.O(1,e=>{e?(0,t5.flushSync)(I):I()}),t=S.O(4,()=>{k[rk]&&k[rk](S.M())}),r=S.O(8,()=>{E[rk]&&E[rk]()}),n=e=>{T.U(e),x.D(e)};return f?ri(()=>{f[rk]&&n(f[rk])}):n(y[rk].parentElement),()=>{e(),t(),r(),T.P(),x.P()}},[]),rv(()=>{x.j()},[M]),(0,A.useImperativeHandle)(m,()=>({get cache(){return S.m()},get scrollOffset(){return S.M()},get scrollSize(){return rt(S.h(),S.p())},get viewportSize(){return S.p()},findStartIndex:S.S,findEndIndex:S.$,getItemOffset:S.k,getItemSize:S.R,scrollToIndex:x.Y,scrollTo:x.V,scrollBy:x.X}),[]),i){let e=new Set(i);for(let t=P;t<=C;t++)e.add(t);ra([...e]).forEach(e=>{L.push(R(e))})}else for(let e=P;e<=C;e++)L.push(R(e));return(0,ep.jsx)(c,{ref:y,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:j?N:"100%",height:j?"100%":N,pointerEvents:O?"none":void 0},children:L})}),rx={MessageItem:e=>{let{message:t,children:r,depth:n,index:d}=e,a=t7(),{data:i}=ec(async()=>{let{isStreaming:e}=t;return e?t:await a.ai.chat.renderMessage({message:t,depth:n,index:d})},{refreshDeps:[t]});return r(i||t,t)},MessageList:(0,A.forwardRef)((e,t)=>{let{children:r,messages:n,vListProps:d}=e;return(0,ep.jsx)(rT,{...d,data:n,ref:t,children:(e,t)=>r({message:e,index:t,depth:n.length-1-t})})})};var rj=Array.isArray,rM="object"==typeof global&&global&&global.Object===Object&&global,rI="object"==typeof self&&self&&self.Object===Object&&self,rP=rM||rI||Function("return this")(),rC=rP.Symbol,rO=Object.prototype,rN=rO.hasOwnProperty,rL=rO.toString,rR=rC?rC.toStringTag:void 0;let rz=function(e){var t=rN.call(e,rR),r=e[rR];try{e[rR]=void 0;var n=!0}catch(e){}var d=rL.call(e);return n&&(t?e[rR]=r:delete e[rR]),d};var r$=Object.prototype.toString,rH=rC?rC.toStringTag:void 0;let rD=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":rH&&rH in Object(e)?rz(e):r$.call(e)},rU=function(e){return"symbol"==typeof e||null!=e&&"object"==typeof e&&"[object Symbol]"==rD(e)};var rB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rG=/^\w*$/;let rF=function(e,t){if(rj(e))return!1;var r=typeof e;return!!("number"==r||"symbol"==r||"boolean"==r||null==e||rU(e))||rG.test(e)||!rB.test(e)||null!=t&&e in Object(t)},rq=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},rV=function(e){if(!rq(e))return!1;var t=rD(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t};var rJ=rP["__core-js_shared__"],rW=(h=/[^.]+$/.exec(rJ&&rJ.keys&&rJ.keys.IE_PROTO||""))?"Symbol(src)_1."+h:"",rY=Function.prototype.toString;let rK=function(e){if(null!=e){try{return rY.call(e)}catch(e){}try{return e+""}catch(e){}}return""};var rX=/^\[object .+?Constructor\]$/,rZ=Object.prototype,rQ=Function.prototype.toString,r3=rZ.hasOwnProperty,r8=RegExp("^"+rQ.call(r3).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");let r0=function(e){return!!rq(e)&&(!rW||!(rW in e))&&(rV(e)?r8:rX).test(rK(e))},r1=function(e,t){var r=null==e?void 0:e[t];return r0(r)?r:void 0};var r2=r1(Object,"create"),r6=Object.prototype.hasOwnProperty,r4=Object.prototype.hasOwnProperty;function r9(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}r9.prototype.clear=function(){this.__data__=r2?r2(null):{},this.size=0},r9.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=!!t,t},r9.prototype.get=function(e){var t=this.__data__;if(r2){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return r6.call(t,e)?t[e]:void 0},r9.prototype.has=function(e){var t=this.__data__;return r2?void 0!==t[e]:r4.call(t,e)},r9.prototype.set=function(e,t){var r=this.__data__;return this.size+=+!this.has(e),r[e]=r2&&void 0===t?"__lodash_hash_undefined__":t,this};let r7=function(e,t){for(var r,n=e.length;n--;)if((r=e[n][0])===t||r!=r&&t!=t)return n;return -1};var r5=Array.prototype.splice;function ne(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ne.prototype.clear=function(){this.__data__=[],this.size=0},ne.prototype.delete=function(e){var t=this.__data__,r=r7(t,e);return!(r<0)&&(r==t.length-1?t.pop():r5.call(t,r,1),--this.size,!0)},ne.prototype.get=function(e){var t=this.__data__,r=r7(t,e);return r<0?void 0:t[r][1]},ne.prototype.has=function(e){return r7(this.__data__,e)>-1},ne.prototype.set=function(e,t){var r=this.__data__,n=r7(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var nt=r1(rP,"Map");let nr=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e},nn=function(e,t){var r=e.__data__;return nr(t)?r["string"==typeof t?"string":"hash"]:r.map};function nd(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function na(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw TypeError("Expected a function");var r=function(){var n=arguments,d=t?t.apply(this,n):n[0],a=r.cache;if(a.has(d))return a.get(d);var i=e.apply(this,n);return r.cache=a.set(d,i)||a,i};return r.cache=new(na.Cache||nd),r}nd.prototype.clear=function(){this.size=0,this.__data__={hash:new r9,map:new(nt||ne),string:new r9}},nd.prototype.delete=function(e){var t=nn(this,e).delete(e);return this.size-=!!t,t},nd.prototype.get=function(e){return nn(this,e).get(e)},nd.prototype.has=function(e){return nn(this,e).has(e)},nd.prototype.set=function(e,t){var r=nn(this,e),n=r.size;return r.set(e,t),this.size+=+(r.size!=n),this},na.Cache=nd;var ni=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nu=/\\(\\)?/g,no=(g=(m=na(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ni,function(e,r,n,d){t.push(n?d.replace(nu,"$1"):r||e)}),t},function(e){return 500===g.size&&g.clear(),e})).cache,m);let ns=function(e,t){for(var r=-1,n=null==e?0:e.length,d=Array(n);++r<n;)d[r]=t(e[r],r,e);return d};var nc=1/0,nl=rC?rC.prototype:void 0,nf=nl?nl.toString:void 0;let np=function e(t){if("string"==typeof t)return t;if(rj(t))return ns(t,e)+"";if(rU(t))return nf?nf.call(t):"";var r=t+"";return"0"==r&&1/t==-nc?"-0":r},nh=function(e,t){return rj(e)?e:rF(e,t)?[e]:no(null==e?"":np(e))};var nm=1/0;let ng=function(e){if("string"==typeof e||rU(e))return e;var t=e+"";return"0"==t&&1/e==-nm?"-0":t},n_=function(e,t){t=nh(t,e);for(var r=0,n=t.length;null!=e&&r<n;)e=e[ng(t[r++])];return r&&r==n?e:void 0},nb=function(e,t,r){var n=null==e?void 0:n_(e,t);return void 0===n?r:n},nw={ai:{chat:{get complete(){return t},get project(){return r},settings:{get persona(){return a}},get setFirstMesIndex(){return i}}}};function ny({projectInfo:e,activePersona:n,onSend:d,messages:s,setSwipe:c}){(0,A.useEffect)(()=>{r=e??void 0,a=n??void 0},[e,n]),(0,A.useEffect)(()=>{t=async e=>{await d(e)},i=async e=>{if(s.length>1)throw Error("已有新消息,不允许切换开场白");if(0===s.length)throw Error("断言失败:没有开场消息,无法切换开场白");let t=Math.floor(e)-1,r=s[0].swipes.length;t<0||t>=r||c(s[0].id,t)},o=(e,t)=>s.find(t=>t.id===e)?.swipeInfo[t]?.mjv?.value,u=(e,t,r)=>{let n=o?.(e,t);if(n)return nb(n,r)}},[d,s,c])}window.$mj_engine={...nw,bind:({messageId:e,swipeId:t})=>({ai:{chat:{...nw.ai.chat,mjv:{get:r=>u?.(e,t,r),getAll:()=>o?.(e,t)??{}}}}})};class nv extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}class nk extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}class nE extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.cause=t}}async function*nA(e,t,r="generate",n){let d=[],a=null,i=!1,u=null;try{let o=e=>{u||"string"==typeof e&&(d.push(e),a&&(a(),a=null))},s=()=>{i=!0,a&&(a(),a=null)},c=e=>{u=e,a&&(a(),a=null)};"generate"===r?e.ai.chat.complete(t,o,n).then(s).catch(c):"regenerate"===r?e.ai.chat.regenerate(o,n).then(s).catch(c):e.ai.chat.continue(o,n).then(s).catch(c)}catch(e){u=e,i=!0}for(;;)if(d.length>0)yield d.shift();else if(i)break;else if(u)throw u;else await new Promise(e=>{a=e})}let nS="not_saved",nT=`哎呀,AI线路好像抽风了,请刷新页面后重新试试吧~`,nx=({body:e,onError:t,onFinish:r,pageSize:n})=>{let[d,a]=(0,A.useState)(),[i,u]=(0,A.useState)(""),[o,s]=(0,A.useState)(),c=t7(),l=e=>{a(e),e&&t?.(e)},f=(0,A.useRef)(!1),{data:p,loadMoreAsync:h,loadingMore:m,loading:g,mutate:_,error:b}=ef(async e=>{if(f.current=!0,e?.noMore)return{noMore:!0,list:[]};try{let t=await c.ai.chat.message.getPage(e?.cursor,n);return{cursor:t.nextCursor,list:t.messages.map(e=>({...e,mjv:e.swipeInfo[e.activeSwipeId]?.mjv})),noMore:!t.nextCursor}}finally{f.current=!1}},{direction:"top"}),w=async()=>{if(!f.current)try{f.current=!0,await h()}finally{f.current=!1}},y=p?.list??[],v=T(p),k=(0,A.useRef)(y);k.current=y;let E=e=>{let t;t="function"==typeof e?e(k.current):e,k.current=t,_({...v.current,list:t})},{chatStreaming:S,isStreaming:x}=(({common:e,setError:t,setMessages:r,getMessages:n,setInput:d,mujian:a})=>{let{body:i}=e,[u,o]=(0,A.useState)(!1);return{chatStreaming:(0,A.useCallback)(async({query:e,regenerate:i,is_continue:u,signal:s})=>{try{t(void 0),o(!0);let c=n(),l={id:`${nS}_user_${Date.now()}`,content:e||"",role:"user",swipes:[],activeSwipeId:0,isStreaming:!1,sendAt:new Date,swipeInfo:[]},f={id:`${nS}_assistant_${Date.now()}`,content:"",role:"assistant",swipes:[""],activeSwipeId:0,isStreaming:!0,sendAt:new Date,swipeInfo:[{}]};i?r(e=>{let t=[...e],r=t[t.length-1];return t[t.length-1]={...r,activeSwipeId:r.swipes.length,swipes:[...r.swipes,""],content:"",isStreaming:!0},t}):u?r(e=>[...e,f]):r(e=>[...e,l,f]);let p=nA(a,e||"",u?"continue":i?"regenerate":"generate",s),h="",m="";try{for await(let e of p){let n=(h+=e).split("\n");for(let e of(h=n.pop()||"",n))if(e.startsWith("data: ")){let n=e.slice(6);try{let e=JSON.parse(n);if(i||"meta"!==e.type){if("stream"===e.type){let d=e.choices[0].delta.content;e.choices[0].delta.reasoning,(m+=d)||""===m?(r(e=>{let t=[...e],r=t[t.length-1];return r.swipes[r.activeSwipeId]=m,t[t.length-1]={...r,content:m,isStreaming:!0},t}),await new Promise(e=>setTimeout(e,10))):(console.error("data",n),t(new nk(n)))}else if("mjv"===e.type){let{value:t,delta:n,schema:d}=e;r(e=>{let r=[...e],a=r[r.length-1],i={value:t,delta:n,schema:d},u=a.swipeInfo;return u[a.activeSwipeId]?u[a.activeSwipeId].mjv=i:u[a.activeSwipeId]={mjv:i},r[r.length-1]={...a,swipeInfo:u,mjv:i},r})}}else{let{question_id:t,reply_id:n}=e;r(e=>{let r=[...e];t&&!u&&(r[r.length-2].id=t);let d=r[r.length-1];return r[r.length-1]={...d,id:n},r});continue}}catch{"[DONE]"!==n&&(console.error("Received plain SSE message:",n),t(new nE(n)))}}}}catch(n){tf.e("Stream error",n),"object"==typeof n&&n&&"message"in n&&"string"==typeof n.message?"code"in n&&0x77dde1f1===n.code?(r(c),e&&d(e)):t(new nv(n.message)):t(n)}finally{tf.i("stream end finally"),r(e=>{let t=[...e],r={...t[t.length-1],isStreaming:!1};return r.swipes[r.activeSwipeId]||(r.swipes[r.activeSwipeId]=nT,r.content=nT),t[t.length-1]=r,t})}}catch(e){console.error("Error:",e),t(new nv("Send message failed",e)),r(e=>e.slice(0,-1))}finally{o(!1)}},[i,a]),isStreaming:u}})({common:{body:e},setError:l,setMessages:E,getMessages:(0,A.useCallback)(()=>k.current,[k]),setInput:u,mujian:c});L(()=>{if(!x){let e=y[y.length-1];r?.(e)}},[x]);let j=(0,A.useCallback)(async e=>{if(x)throw Error("useChat is streaming already.");let t=new AbortController;s(t);try{await S({query:e,signal:t.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,S]),M=(0,A.useCallback)(async()=>{if(x)throw Error("useChat is streaming already.");let e=new AbortController;s(e);let t=y.findLast(e=>"user"===e.role);try{await S({query:t?.content||"",regenerate:!0,signal:e.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,y,S]),I=(0,A.useCallback)(async()=>{if(x)throw Error("useChat is streaming already.");let e=new AbortController;s(e);try{await S({query:"",is_continue:!0,signal:e.signal})}catch(e){throw l(e),e}finally{s(void 0)}},[x,S]),P=async(e,t)=>{t<0||(E(r=>r.map(r=>r.id===e&&t<r.swipes.length?{...r,activeSwipeId:t,content:r.swipes[t],mjv:r.swipeInfo[t]?.mjv}:r)),await c.ai.chat.message.swipe(e,t))},C=async(e,t)=>{await c.ai.chat.message.editOne(e,t),E(r=>r.map(r=>{let n;return r.id===e?("assistant"===(n={...r,content:t}).role&&(n.swipes=[...n.swipes],n.swipes[n.activeSwipeId]=t),n):r}))},O=async e=>{if(!e.startsWith(nS))try{await c.ai.chat.message.deleteOne(e)}catch(e){if(e?.code!==0x77dde1f4)throw e}E(t=>t.filter(t=>t.id!==e))};return{append:j,regenerate:M,continueGenerate:I,stop:()=>{o?.abort()},messages:y,status:d?"error":x?"streaming":"ready",error:d,setMessages:E,input:i,setInput:u,handleSubmit:()=>{j(i)},setSwipe:P,editMessage:C,deleteMessage:O,loadMoreMessage:w,messagesStatus:b?"error":m||g?"loading":p?.noMore?"all-loaded":"has-more"}}})(),d})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mujian/js-sdk",
3
- "version": "0.0.6-beta.77",
3
+ "version": "0.0.6-beta.78",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {