@topthink/chat 1.2.1 → 1.2.2

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.
Files changed (2) hide show
  1. package/es/index.js +64 -64
  2. package/package.json +3 -3
package/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as n,css as i,formatSize as o,Tooltip as s,useAsync as a,isRequestError as l,Form as c,Toast as d,InfiniteScroller as m,useDebounce as u,Offcanvas as h,ModalForm as p,RequestButton as g,Loader as f,useImmer as b,createGlobalStyle as v,getAbsoluteUrl as x,Lightbox as y,Clipboard as k,Button as w,isImageUrl as E,request as N}from"@topthink/components";import*as j from"react";import{createContext as $,useContext as C,useEffect as M,useState as S,useRef as q,useCallback as R,forwardRef as z,useMemo as I,useImperativeHandle as F,Fragment as A,memo as D}from"react";import*as L from"path";import T from"path";import{Spinner as P,Badge as O,Dropdown as _,FormControl as B,CloseButton as U,OverlayTrigger as H,Popover as J}from"react-bootstrap";import Q from"eventemitter3";import{Editor as W,Delta as X,SKILL_KEY as G,VARS_KEY as K,SEL_VALUE_KEY as V,SEL_KEY as Y,EditableInputPlugin as Z,SelectorInputPlugin as ee,SkillInputPlugin as te,BlockKit as re,Editable as ne,VARS_VALUE_KEY as ie}from"@block-kit/variable";import"@block-kit/variable/dist/style/index.css";import oe from"lodash/isEqual";import{toString as se}from"hast-util-to-string";import ae from"react-markdown";import"katex/dist/katex.min.css";import le from"rehype-highlight";import ce from"rehype-katex";import de from"remark-breaks";import me from"remark-gfm";import ue from"remark-math";import{codes as he,types as pe}from"micromark-util-symbol";import{markdownLineEnding as ge}from"micromark-util-character";import{createPortal as fe}from"react-dom";import be from"use-resize-observer";import{unified as ve}from"unified";import xe from"rehype-stringify";import ye from"remark-parse";import ke from"remark-rehype";function we(e,t){return e.name===t}const Ee=$(null);function Ne(e){const t=C(Ee);if(!t)throw new Error("useContext must be used within a Provider");const{setHandles:r}=t;return M(()=>{if(e)return r(e),()=>{r({})}},[e]),t}function je({children:t,...r}){const[n,i]=S({});return e(Ee.Provider,{value:{...r,handles:n,setHandles:i},children:t})}const $e=function({ext:t}){const{result:r}=a(async e=>{try{return(await function(e){switch(e){case"../../images/file/docx.svg":return import("./docx-2LwnwWwv.js");case"../../images/file/html.svg":return import("./html-BSKTzJZQ.js");case"../../images/file/jpg.svg":return import("./jpg-muicsKjX.js");case"../../images/file/md.svg":return import("./md-DRS7QmE8.js");case"../../images/file/mp3.svg":return import("./mp3-HhP1Gk4B.js");case"../../images/file/mp4.svg":return import("./mp4-CWxSyjdn.js");case"../../images/file/pdf.svg":return import("./pdf-CWBi2u4Z.js");case"../../images/file/png.svg":return import("./png-DNwbFeJk.js");case"../../images/file/pptx.svg":return import("./pptx-Bv4V_F_3.js");case"../../images/file/py.svg":return import("./py-D30pRTJN.js");case"../../images/file/txt.svg":return import("./txt-CsqmEKjF.js");case"../../images/file/unknown.svg":return import("./unknown-DW8znerP.js");case"../../images/file/xlsx.svg":return import("./xlsx-CmkshfKZ.js");default:return new Promise(function(t,r){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(r.bind(null,new Error("Unknown variable dynamic import: "+e)))})}}(`../../images/file/${e}.svg`)).default}catch{return(await import("./unknown-DW8znerP.js")).default}},[t]);return r?e("img",{width:30,height:30,src:r}):null},Ce=function({className:r,name:n,size:i=0,loading:a,error:l,onRemove:c,onClick:d}){const m=T.extname(n).substring(1),u=t(ze,{className:r,$error:!!l,onClick:d,children:[t(Re,{children:[e($e,{ext:m}),a&&e(P,{variant:"primary"})]}),t(qe,{children:[e("h4",{children:n}),i>0&&e("p",{children:o(i,1)})]}),c&&e(Se,{onClick:e=>{e.preventDefault(),c()},children:e("i",{className:"bi bi-trash3"})})]});return l?e(s,{placement:"top",tooltip:l,children:u}):u};function Me(t){const{renderFileItem:r}=Ne();return r?r({Component:Ce,props:t}):e(Ce,{...t})}const Se=n.div`
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as n,css as i,formatSize as o,Tooltip as s,useAsync as a,isCancel as l,isRequestError as c,Form as d,Toast as u,InfiniteScroller as m,useDebounce as h,Offcanvas as p,ModalForm as g,RequestButton as f,Loader as b,useImmer as v,createGlobalStyle as y,getAbsoluteUrl as x,Lightbox as k,Clipboard as w,Button as E,isImageUrl as N,request as j}from"@topthink/components";import*as $ from"react";import{createContext as C,useContext as M,useEffect as S,useState as q,useRef as R,useCallback as z,forwardRef as I,useMemo as F,useImperativeHandle as A,Fragment as D,memo as L}from"react";import*as T from"path";import P from"path";import{Spinner as O,Badge as _,Dropdown as B,FormControl as U,CloseButton as H,OverlayTrigger as J,Popover as Q}from"react-bootstrap";import W from"eventemitter3";import{Editor as X,Delta as G,SKILL_KEY as K,VARS_KEY as V,SEL_VALUE_KEY as Y,SEL_KEY as Z,EditableInputPlugin as ee,SelectorInputPlugin as te,SkillInputPlugin as re,BlockKit as ne,Editable as ie,VARS_VALUE_KEY as oe}from"@block-kit/variable";import"@block-kit/variable/dist/style/index.css";import se from"lodash/isEqual";import{toString as ae}from"hast-util-to-string";import le from"react-markdown";import"katex/dist/katex.min.css";import ce from"rehype-highlight";import de from"rehype-katex";import ue from"remark-breaks";import me from"remark-gfm";import he from"remark-math";import{codes as pe,types as ge}from"micromark-util-symbol";import{markdownLineEnding as fe}from"micromark-util-character";import{createPortal as be}from"react-dom";import ve from"use-resize-observer";import{unified as ye}from"unified";import xe from"rehype-stringify";import ke from"remark-parse";import we from"remark-rehype";function Ee(e,t){return e.name===t}const Ne=C(null);function je(e){const t=M(Ne);if(!t)throw new Error("useContext must be used within a Provider");const{setHandles:r}=t;return S(()=>{if(e)return r(e),()=>{r({})}},[e]),t}function $e({children:t,...r}){const[n,i]=q({});return e(Ne.Provider,{value:{...r,handles:n,setHandles:i},children:t})}const Ce=function({ext:t}){const{result:r}=a(async e=>{try{return(await function(e){switch(e){case"../../images/file/docx.svg":return import("./docx-2LwnwWwv.js");case"../../images/file/html.svg":return import("./html-BSKTzJZQ.js");case"../../images/file/jpg.svg":return import("./jpg-muicsKjX.js");case"../../images/file/md.svg":return import("./md-DRS7QmE8.js");case"../../images/file/mp3.svg":return import("./mp3-HhP1Gk4B.js");case"../../images/file/mp4.svg":return import("./mp4-CWxSyjdn.js");case"../../images/file/pdf.svg":return import("./pdf-CWBi2u4Z.js");case"../../images/file/png.svg":return import("./png-DNwbFeJk.js");case"../../images/file/pptx.svg":return import("./pptx-Bv4V_F_3.js");case"../../images/file/py.svg":return import("./py-D30pRTJN.js");case"../../images/file/txt.svg":return import("./txt-CsqmEKjF.js");case"../../images/file/unknown.svg":return import("./unknown-DW8znerP.js");case"../../images/file/xlsx.svg":return import("./xlsx-CmkshfKZ.js");default:return new Promise(function(t,r){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(r.bind(null,new Error("Unknown variable dynamic import: "+e)))})}}(`../../images/file/${e}.svg`)).default}catch{return(await import("./unknown-DW8znerP.js")).default}},[t]);return r?e("img",{width:30,height:30,src:r}):null},Me=function({className:r,name:n,size:i=0,loading:a,error:l,onRemove:c,onClick:d}){const u=P.extname(n).substring(1),m=t(Ie,{className:r,$error:!!l,onClick:d,children:[t(ze,{children:[e(Ce,{ext:u}),a&&e(O,{variant:"primary"})]}),t(Re,{children:[e("h4",{children:n}),i>0&&e("p",{children:o(i,1)})]}),c&&e(qe,{onClick:e=>{e.preventDefault(),c()},children:e("i",{className:"bi bi-trash3"})})]});return l?e(s,{placement:"top",tooltip:l,children:m}):m};function Se(t){const{renderFileItem:r}=je();return r?r({Component:Me,props:t}):e(Me,{...t})}const qe=n.div`
2
2
  width: 1.75rem;
3
3
  height: 1.75rem;
4
4
  align-items: center;
@@ -13,7 +13,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
13
13
  color: var(--bs-danger);
14
14
  background-color: var(--bs-danger-bg-subtle);
15
15
  }
16
- `,qe=n.div`
16
+ `,Re=n.div`
17
17
  flex: 1;
18
18
  overflow: hidden;
19
19
 
@@ -34,7 +34,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
34
34
  line-height: 20px;
35
35
  margin-bottom: 0;
36
36
  }
37
- `,Re=n.div`
37
+ `,ze=n.div`
38
38
  position: relative;
39
39
  width: 3rem;
40
40
  height: 3rem;
@@ -48,7 +48,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
48
48
  position: absolute;
49
49
  }
50
50
 
51
- `,ze=n.div`
51
+ `,Ie=n.div`
52
52
  display: flex;
53
53
  gap: .5rem;
54
54
  padding: .5rem;
@@ -65,7 +65,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
65
65
  ${e=>e.$error&&i`
66
66
  border-color: var(--bs-danger) !important;
67
67
  `}
68
- `,Ie=[".txt",".md",".pdf",".docx",".xlsx",".pptx",".png",".jpg"];function Fe(){const{setMessages:e,setSuggestions:t,setLoading:r,conversationId:n,setConversationId:i,request:o,handles:s,messages:a}=Ne(),c=q(null),d=q(!1),m=q(n),{onSuccess:u,onComplete:h,onEvent:p}=s,g=R(t=>{if(t.data)if("[DONE]"!=t.data)try{const r=JSON.parse(t.data);r.conversation?(m.current=r.conversation,i(r.conversation)):r.suspend?d.current=!0:r.event?p?.(r.event):e(e=>{const t=e[e.length-1];if(r.chunks){if(t.chunks){const e=r.chunks.index;if(t.chunks[e]||(t.chunks[e]={content:"",reasoning:"",tools:[]}),r.chunks.error)t.chunks[e].error=r.chunks.error;else if(r.chunks.tools){t.chunks[e].tools||(t.chunks[e].tools=[]);const n=r.chunks.tools.index;delete r.chunks.tools.index,t.chunks[e].tools[n]&&"arguments"in r.chunks.tools?t.chunks[e].tools[n].arguments+=r.chunks.tools.arguments:t.chunks[e].tools[n]={...t.chunks[e].tools[n],...r.chunks.tools}}else if(r.chunks.reasoning)t.chunks[e].reasoning+=r.chunks.reasoning;else if(r.chunks.content)if("object"==typeof r.chunks.content){Array.isArray(t.chunks[e].content)||(t.chunks[e].content=[]);const n=r.chunks.content.index,i=r.chunks.content.value;"string"==typeof i?(t.chunks[e].content[n]||(t.chunks[e].content[n]=""),t.chunks[e].content[n]+=i):t.chunks[e].content[n]=i}else t.chunks[e].content+=r.chunks.content;else r.chunks.node&&(t.chunks[e].node={...t.chunks[e].node,...r.chunks.node})}}else r.stats?t.stats=r.stats:r.id&&(t.id=r.id)})}catch(e){console.error(e)}else e(e=>{e[e.length-1].loading=!1})},[s]),f=R(t=>{let r="未知错误";l(t)&&(r=401==t.response?.status?"未授权或授权已过期,请刷新页面后重试":"string"==typeof t.errors?t.errors:Object.values(t.errors).join("\n")),e(e=>{const t=e[e.length-1];t.chunks&&(0===t.chunks.length?t.chunks=[{error:r}]:t.chunks[t.chunks.length-1].error=r),t.loading=!1})},[]),b=R(async()=>{try{c.current&&c.current.abort(),d.current=!1,r(!0),e(e=>{e[e.length-1].loading=!0,delete e[e.length-1].stats});let t={url:"message",method:"get",params:{conversation:m.current},onMessage:g};await o(t),d.current||u?.()}catch(e){f(e)}r(!1),h?.()},[]);M(()=>{m.current=n;const e=a[a.length-1];e&&0==e.chunks?.length&&!e.loading&&b()},[n]);const v=R(async(n,...i)=>{"string"==typeof n&&(n={query:n,...i});const{query:s,files:a=[],variables:l={},quote:p}=n;if(s||a.length>0){c.current&&c.current.abort(),d.current=!1,r(!0),t([]),e(e=>{e.push({query:s,quote:p,files:a,variables:l,chunks:[],loading:!0})});try{let e={method:"post",data:{query:s,quote:p,files:a,variables:l,conversation:m.current},onMessage:g};await o(e),d.current||u?.()}catch(e){f(e)}r(!1),h?.()}},[o,s]),x=R(async t=>{try{c.current&&c.current.abort(),d.current=!1,r(!0),e(e=>{e[e.length-1].loading=!0});let n={url:"resume",method:"post",data:{conversation:m.current,chunk:t.chunk,tool:t.tool,payload:t.payload},onMessage:g};await o(n),d.current||u?.()}catch(e){f(e)}r(!1),h?.()},[o,s]);return{send:v,resume:x,suggest:R(async()=>{c.current=new AbortController;try{let e={method:"post",url:"/suggestion",data:{conversation:m.current},signal:c.current.signal};const r=await o(e);t(r)}catch{}finally{c.current=null}},[o])}}function Ae({variables:t,values:r,onSubmit:n,onChange:i,children:o}){const s={},a=[],l={};return t.forEach(e=>{s[e.key]={type:"string",title:e.label},"textarea"===e.type?l[e.key]={"ui:widget":"textarea"}:"select"===e.type&&e.options&&(s[e.key].enum=e.options,s[e.key].enumNames=e.options,e.options.length>0&&(s[e.key].default=e.options[0])),e.required&&a.push(e.key)}),e(c,{schema:{type:"object",properties:s,required:a},formData:r,omitExtraData:!0,uiSchema:l,submitText:"开始对话",onSubmit:n,onChange:i,children:o})}const De=n.button`
68
+ `,Fe=[".txt",".md",".pdf",".docx",".xlsx",".pptx",".png",".jpg"];function Ae(){const{setMessages:e,setSuggestions:t,setLoading:r,conversationId:n,setConversationId:i,request:o,handles:s,messages:a}=je(),d=R(null),u=R(!1),m=R(n),h=()=>(d.current&&d.current.abort(),d.current=new AbortController,d.current.signal),{onSuccess:p,onComplete:g,onEvent:f}=s,b=z(t=>{if(t.data)if("[DONE]"!=t.data)try{const r=JSON.parse(t.data);r.conversation?(m.current=r.conversation,i(r.conversation)):r.suspend?u.current=!0:r.event?f?.(r.event):e(e=>{const t=e[e.length-1];if(r.chunks){if(t.chunks){const e=r.chunks.index;if(t.chunks[e]||(t.chunks[e]={content:"",reasoning:"",tools:[]}),r.chunks.error)t.chunks[e].error=r.chunks.error;else if(r.chunks.tools){t.chunks[e].tools||(t.chunks[e].tools=[]);const n=r.chunks.tools.index;delete r.chunks.tools.index,t.chunks[e].tools[n]&&"arguments"in r.chunks.tools?t.chunks[e].tools[n].arguments+=r.chunks.tools.arguments:t.chunks[e].tools[n]={...t.chunks[e].tools[n],...r.chunks.tools}}else if(r.chunks.reasoning)t.chunks[e].reasoning+=r.chunks.reasoning;else if(r.chunks.content)if("object"==typeof r.chunks.content){Array.isArray(t.chunks[e].content)||(t.chunks[e].content=[]);const n=r.chunks.content.index,i=r.chunks.content.value;"string"==typeof i?(t.chunks[e].content[n]||(t.chunks[e].content[n]=""),t.chunks[e].content[n]+=i):t.chunks[e].content[n]=i}else t.chunks[e].content+=r.chunks.content;else r.chunks.node&&(t.chunks[e].node={...t.chunks[e].node,...r.chunks.node})}}else r.stats?t.stats=r.stats:r.id&&(t.id=r.id)})}catch(e){console.error(e)}else e(e=>{e[e.length-1].loading=!1})},[s]),v=z(t=>{if(l(t))e(e=>{const t=e[e.length-1];t&&(t.loading=!1)});else{let r="未知错误";c(t)&&(r=401==t.response?.status?"未授权或授权已过期,请刷新页面后重试":"string"==typeof t.errors?t.errors:Object.values(t.errors).join("\n")),e(e=>{const t=e[e.length-1];t.chunks&&(0===t.chunks.length?t.chunks=[{error:r}]:t.chunks[t.chunks.length-1].error=r),t.loading=!1})}},[]),y=z(async()=>{try{const t=h();u.current=!1,r(!0),e(e=>{e[e.length-1].loading=!0,delete e[e.length-1].stats});let n={url:"message",method:"get",params:{conversation:m.current},onMessage:b,signal:t};await o(n),u.current||p?.()}catch(e){v(e)}finally{d.current=null}r(!1),g?.()},[]),x=z(async(n,...i)=>{"string"==typeof n&&(n={query:n,...i});const{query:s,files:a=[],variables:l={},quote:c}=n;if(s||a.length>0){const n=h();u.current=!1,r(!0),t([]),e(e=>{e.push({query:s,quote:c,files:a,variables:l,chunks:[],loading:!0})});try{let e={method:"post",data:{query:s,quote:c,files:a,variables:l,conversation:m.current},onMessage:b,signal:n};await o(e),u.current||p?.()}catch(e){v(e)}finally{d.current=null}r(!1),g?.()}},[o,s]),k=z(async t=>{try{const n=h();u.current=!1,r(!0),e(e=>{e[e.length-1].loading=!0});let i={url:"resume",method:"post",data:{conversation:m.current,chunk:t.chunk,tool:t.tool,payload:t.payload},onMessage:b,signal:n};await o(i),u.current||p?.()}catch(e){v(e)}finally{d.current=null}r(!1),g?.()},[o,s]),w=z(async()=>{try{const e=h();let r={method:"post",url:"/suggestion",data:{conversation:m.current},signal:e};const n=await o(r);t(n)}catch{}finally{d.current=null}},[o]);return S(()=>{if(n!=m.current){m.current=n,d.current&&d.current.abort();const e=a[a.length-1];e&&0==e.chunks?.length&&!e.loading&&y()}},[n]),{send:x,resume:k,suggest:w}}function De({variables:t,values:r,onSubmit:n,onChange:i,children:o}){const s={},a=[],l={};return t.forEach(e=>{s[e.key]={type:"string",title:e.label},"textarea"===e.type?l[e.key]={"ui:widget":"textarea"}:"select"===e.type&&e.options&&(s[e.key].enum=e.options,s[e.key].enumNames=e.options,e.options.length>0&&(s[e.key].default=e.options[0])),e.required&&a.push(e.key)}),e(d,{schema:{type:"object",properties:s,required:a},formData:r,omitExtraData:!0,uiSchema:l,submitText:"开始对话",onSubmit:n,onChange:i,children:o})}const Le=n.button`
69
69
  color: var(--bs-secondary);
70
70
  cursor: pointer;
71
71
  display: flex;
@@ -88,12 +88,12 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
88
88
  background-color: var(--bs-gray-200);
89
89
  }
90
90
 
91
- `;let Le=class{#e;#t;constructor(){this.#t=new Q}onResult(e){this.#t.on("result",e)}onRecording(e){this.#t.on("recording",e)}onTranscribing(e){this.#t.on("transcribing",e)}start(){if(!this.#e){const e=window.SpeechRecognition||window.webkitSpeechRecognition;if(!e)return void d.error("浏览器不支持语音识别");const t=new e;t.continuous=!0,t.lang=navigator.language,t.onresult=e=>{const t=Array.from(e.results).at(-1)?.item(0).transcript;t&&this.#t.emit("result",t)},t.onspeechend=()=>{this.#t.emit("recording",!1)},t.onerror=e=>{this.#t.emit("recording",!1),d.error(e.error)},this.#e=t}this.#t.emit("recording",!0),this.#e.start()}stop(){this.#e?.stop(),this.#t.emit("recording",!1)}},Te=class{#t;#r;#n;#i;constructor(e){this.#r=e,this.#t=new Q}async start(){try{this.#n=await navigator.mediaDevices.getUserMedia({audio:!0}),this.#i=new AudioContext;const e=this.#i.createScriptProcessor(0,1,1);this.#i.createMediaStreamSource(this.#n).connect(e),e.connect(this.#i.destination);let t=[],r=0;const n=.01,i=1;e.onaudioprocess=e=>{const o=e.playbackTime,s=e.inputBuffer.getChannelData(0);let a=!0;for(let e=0;e<s.length;e++)if(Math.abs(s[e])>n){a=!1;break}if(a){const e=o-r;e>i&&(t.length>1&&(this.save(t),t=[]),e>10&&this.stop())}else t.push(new Float32Array(s)),r=o},this.#t.emit("recording",!0)}catch(e){d.error(e.message)}}convertBuffer(e){const t=new Float32Array(e),r=new Int16Array(e.length);for(let e=0;e<t.length;e++){const n=Math.max(-1,Math.min(1,t[e]));r[e]=n<0?32768*n:32767*n}return r}async encodeMP3(e){const{Mp3Encoder:t}=await import("@breezystack/lamejs"),r=new t(1,44100,128),n=[];for(const t of e){const e=this.convertBuffer(t),i=1152;let o=e.length;for(let t=0;o>=0;t+=i){const s=e.subarray(t,t+i),a=r.encodeBuffer(s);n.push(new Int8Array(a)),o-=i}}return n.push(r.flush()),new Blob(n,{type:"audio/mp3"})}async save(e){const t=await this.encodeMP3(e);try{this.#t.emit("transcribing",!0);const e=await this.#r(t);e&&this.#t.emit("result",e)}catch(e){}finally{this.#t.emit("transcribing",!1)}}stop(){this.#n&&(this.#n.getTracks().forEach(e=>e.stop()),this.#n=void 0),this.#i&&(this.#i.close(),this.#i=void 0),this.#t.emit("recording",!1)}onResult(e){this.#t.on("result",e)}onRecording(e){this.#t.on("recording",e)}onTranscribing(e){this.#t.on("transcribing",e)}};const Pe=z(({onResult:r,model:n="builtin"},i)=>{const{request:o}=Ne(),a=I(()=>{if("builtin"!==n)return async e=>{const t=new FormData;t.append("file",e,"audio.mp3"),t.append("model",n);return(await o({url:"/transcriptions",method:"post",data:t})).text}},[n]),{start:l,stop:c,recording:d,transcribing:m}=function({onResult:e,loader:t}){const r=q(),[n,i]=S(!1),[o,s]=S(!1);return M(()=>()=>{r.current&&(r.current.stop(),r.current=void 0)},[]),{recording:n,transcribing:o,start:async()=>{r.current||(r.current=t?new Te(t):new Le,r.current.onRecording(i),r.current.onTranscribing(s),r.current.onResult(e)),r.current.start()},stop:()=>{r.current&&r.current.stop()}}}({onResult:r,loader:a});return F(i,()=>({start:l,stop:c}),[l,c]),e(s,{tooltip:d?"停止":"语音输入",placement:"top",children:t(De,{onMouseDown:e=>{e.preventDefault(),d?c():l()},children:[m&&e(Oe,{animation:"border",variant:"primary",size:"sm"}),e("i",d?{className:"bi bi-mic-fill text-danger"}:{className:"bi bi-mic"})]})})}),Oe=n(P)`
91
+ `;let Te=class{#e;#t;constructor(){this.#t=new W}onResult(e){this.#t.on("result",e)}onRecording(e){this.#t.on("recording",e)}onTranscribing(e){this.#t.on("transcribing",e)}start(){if(!this.#e){const e=window.SpeechRecognition||window.webkitSpeechRecognition;if(!e)return void u.error("浏览器不支持语音识别");const t=new e;t.continuous=!0,t.lang=navigator.language,t.onresult=e=>{const t=Array.from(e.results).at(-1)?.item(0).transcript;t&&this.#t.emit("result",t)},t.onspeechend=()=>{this.#t.emit("recording",!1)},t.onerror=e=>{this.#t.emit("recording",!1),u.error(e.error)},this.#e=t}this.#t.emit("recording",!0),this.#e.start()}stop(){this.#e?.stop(),this.#t.emit("recording",!1)}},Pe=class{#t;#r;#n;#i;constructor(e){this.#r=e,this.#t=new W}async start(){try{this.#n=await navigator.mediaDevices.getUserMedia({audio:!0}),this.#i=new AudioContext;const e=this.#i.createScriptProcessor(0,1,1);this.#i.createMediaStreamSource(this.#n).connect(e),e.connect(this.#i.destination);let t=[],r=0;const n=.01,i=1;e.onaudioprocess=e=>{const o=e.playbackTime,s=e.inputBuffer.getChannelData(0);let a=!0;for(let e=0;e<s.length;e++)if(Math.abs(s[e])>n){a=!1;break}if(a){const e=o-r;e>i&&(t.length>1&&(this.save(t),t=[]),e>10&&this.stop())}else t.push(new Float32Array(s)),r=o},this.#t.emit("recording",!0)}catch(e){u.error(e.message)}}convertBuffer(e){const t=new Float32Array(e),r=new Int16Array(e.length);for(let e=0;e<t.length;e++){const n=Math.max(-1,Math.min(1,t[e]));r[e]=n<0?32768*n:32767*n}return r}async encodeMP3(e){const{Mp3Encoder:t}=await import("@breezystack/lamejs"),r=new t(1,44100,128),n=[];for(const t of e){const e=this.convertBuffer(t),i=1152;let o=e.length;for(let t=0;o>=0;t+=i){const s=e.subarray(t,t+i),a=r.encodeBuffer(s);n.push(new Int8Array(a)),o-=i}}return n.push(r.flush()),new Blob(n,{type:"audio/mp3"})}async save(e){const t=await this.encodeMP3(e);try{this.#t.emit("transcribing",!0);const e=await this.#r(t);e&&this.#t.emit("result",e)}catch(e){}finally{this.#t.emit("transcribing",!1)}}stop(){this.#n&&(this.#n.getTracks().forEach(e=>e.stop()),this.#n=void 0),this.#i&&(this.#i.close(),this.#i=void 0),this.#t.emit("recording",!1)}onResult(e){this.#t.on("result",e)}onRecording(e){this.#t.on("recording",e)}onTranscribing(e){this.#t.on("transcribing",e)}};const Oe=I(({onResult:r,model:n="builtin"},i)=>{const{request:o}=je(),a=F(()=>{if("builtin"!==n)return async e=>{const t=new FormData;t.append("file",e,"audio.mp3"),t.append("model",n);return(await o({url:"/transcriptions",method:"post",data:t})).text}},[n]),{start:l,stop:c,recording:d,transcribing:u}=function({onResult:e,loader:t}){const r=R(),[n,i]=q(!1),[o,s]=q(!1);return S(()=>()=>{r.current&&(r.current.stop(),r.current=void 0)},[]),{recording:n,transcribing:o,start:async()=>{r.current||(r.current=t?new Pe(t):new Te,r.current.onRecording(i),r.current.onTranscribing(s),r.current.onResult(e)),r.current.start()},stop:()=>{r.current&&r.current.stop()}}}({onResult:r,loader:a});return A(i,()=>({start:l,stop:c}),[l,c]),e(s,{tooltip:d?"停止":"语音输入",placement:"top",children:t(Le,{onMouseDown:e=>{e.preventDefault(),d?c():l()},children:[u&&e(_e,{animation:"border",variant:"primary",size:"sm"}),e("i",d?{className:"bi bi-mic-fill text-danger"}:{className:"bi bi-mic"})]})})}),_e=n(O)`
92
92
  position: absolute;
93
93
  --bs-spinner-width: .75rem;
94
94
  --bs-spinner-height: .75rem;
95
95
  --bs-spinner-border-width: 0.1em;
96
- `,_e=z(({className:t,children:r,size:n,tooltip:i,placement:o,onClick:a,onMouseDown:l},c)=>{const d=e(Be,{ref:c,className:t,onClick:a,onMouseDown:l,$size:n,children:r});return i?e(s,{tooltip:i,placement:o,children:d}):d}),Be=n.div`
96
+ `,Be=I(({className:t,children:r,size:n,tooltip:i,placement:o,onClick:a,onMouseDown:l},c)=>{const d=e(Ue,{ref:c,className:t,onClick:a,onMouseDown:l,$size:n,children:r});return i?e(s,{tooltip:i,placement:o,children:d}):d}),Ue=n.div`
97
97
  width: 2rem;
98
98
  height: 2rem;
99
99
  align-items: center;
@@ -117,10 +117,10 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
117
117
  &:hover {
118
118
  background-color: var(--bs-secondary-bg-subtle);
119
119
  }
120
- `;function Ue(){const{request:n,reset:i,conversationId:o}=Ne(),[s,a]=S(!1),[l,c]=S(""),[d,m]=S(""),b=u(e=>{m(e)},500);return M(()=>{b(l)},[l]),t(r,{children:[e(_e,{tooltip:"历史记录",placement:"top",onClick:()=>a(!0),children:e("i",{className:"bi bi-clock-history"})}),e(h,{show:s,onHide:()=>{a(!1)},placement:"end",headerAs:Xe,header:t(r,{children:[e("span",{children:"聊天历史记录"}),e(Ge,{children:e(B,{type:"search",placeholder:"搜索聊天记录...",value:l,onChange:e=>c(e.target.value),autoFocus:!0})})]}),bodyAs:He,children:s&&e(We,{children:e(Qe,{useWindow:!1,source:e=>n({url:"/conversation",params:{...e,...d&&{keyword:d}}}),render:({data:s,loading:l,setData:c})=>s.length||l?t(r,{children:[s.map((s,l)=>t(A,{children:[l>0&&e("hr",{className:"mx-2 my-2"}),t(Je,{children:[o===s.id&&e(O,{bg:"secondary",children:"当前"}),e("span",{className:"overflow-hidden text-truncate flex-fill",onClick:()=>{i(s),a(!1)},children:s.title||"未命名对话"}),t(_,{align:"end",children:[e(_.Toggle,{size:"sm",className:"no-caret",as:_e,children:e("i",{className:"bi bi-three-dots-vertical"})}),t(_.Menu,{children:[e(p,{buttonProps:{as:_.Item},text:t(r,{children:[e("i",{className:"bi bi-pencil me-2"}),"重命名"]}),modalProps:{header:"编辑对话名称"},schema:{type:"object",properties:{title:{type:"string"}}},uiSchema:{title:{"ui:label":!1,"ui:autofocus":!0}},formData:{title:s.title},onRequest:e=>n({url:`/conversation/${s.id}`,method:"PUT",data:e}),onSuccess:(e,t)=>{c(e=>{const r=e.findIndex(e=>e.id===s.id);-1!==r&&Object.assign(e[r],t)})}}),t(g,{as:_.Item,confirm:"确定要删除吗?",onRequest:()=>n({url:`/conversation/${s.id}`,method:"DELETE"}),onSuccess:()=>{c(e=>{const t=e.findIndex(e=>e.id===s.id);-1!==t&&e.splice(t,1)})},children:[e("i",{className:"bi bi-trash3 me-2"}),"删除"]})]})]})]})]},s.id)),l&&e(f,{wrap:!0})]}):e("div",{className:"text-muted text-center py-5",children:d?"未找到匹配的聊天记录":"暂无对话记录"})},d)})})]})}const He=n.div`
120
+ `;function He(){const{request:n,reset:i,conversationId:o}=je(),[s,a]=q(!1),[l,c]=q(""),[d,u]=q(""),m=h(e=>{u(e)},500);return S(()=>{m(l)},[l]),t(r,{children:[e(Be,{tooltip:"历史记录",placement:"top",onClick:()=>a(!0),children:e("i",{className:"bi bi-clock-history"})}),e(p,{show:s,onHide:()=>{a(!1)},placement:"end",headerAs:Ge,header:t(r,{children:[e("span",{children:"聊天历史记录"}),e(Ke,{children:e(U,{type:"search",placeholder:"搜索聊天记录...",value:l,onChange:e=>c(e.target.value),autoFocus:!0})})]}),bodyAs:Je,children:s&&e(Xe,{children:e(We,{useWindow:!1,source:e=>n({url:"/conversation",params:{...e,...d&&{keyword:d}}}),render:({data:s,loading:l,setData:c})=>s.length||l?t(r,{children:[s.map((s,l)=>t(D,{children:[l>0&&e("hr",{className:"mx-2 my-2"}),t(Qe,{children:[o===s.id&&e(_,{bg:"secondary",children:"当前"}),e("span",{className:"overflow-hidden text-truncate flex-fill",onClick:()=>{i(s),a(!1)},children:s.title||"未命名对话"}),t(B,{align:"end",children:[e(B.Toggle,{size:"sm",className:"no-caret",as:Be,children:e("i",{className:"bi bi-three-dots-vertical"})}),t(B.Menu,{children:[e(g,{buttonProps:{as:B.Item},text:t(r,{children:[e("i",{className:"bi bi-pencil me-2"}),"重命名"]}),modalProps:{header:"编辑对话名称"},schema:{type:"object",properties:{title:{type:"string"}}},uiSchema:{title:{"ui:label":!1,"ui:autofocus":!0}},formData:{title:s.title},onRequest:e=>n({url:`/conversation/${s.id}`,method:"PUT",data:e}),onSuccess:(e,t)=>{c(e=>{const r=e.findIndex(e=>e.id===s.id);-1!==r&&Object.assign(e[r],t)})}}),t(f,{as:B.Item,confirm:"确定要删除吗?",onRequest:()=>n({url:`/conversation/${s.id}`,method:"DELETE"}),onSuccess:()=>{c(e=>{const t=e.findIndex(e=>e.id===s.id);-1!==t&&e.splice(t,1)})},children:[e("i",{className:"bi bi-trash3 me-2"}),"删除"]})]})]})]})]},s.id)),l&&e(b,{wrap:!0})]}):e("div",{className:"text-muted text-center py-5",children:d?"未找到匹配的聊天记录":"暂无对话记录"})},d)})})]})}const Je=n.div`
121
121
  padding: 0;
122
122
  overflow: hidden;
123
- `,Je=n.div`
123
+ `,Qe=n.div`
124
124
  gap: .5rem;
125
125
  display: flex;
126
126
  cursor: pointer;
@@ -139,40 +139,40 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
139
139
  display: block;
140
140
  }
141
141
  }
142
- `,Qe=n(m)`
142
+ `,We=n(m)`
143
143
  display: flex;
144
144
  flex-direction: column;
145
145
  padding: .5rem;
146
- `,We=n.div`
146
+ `,Xe=n.div`
147
147
  height: 100%;
148
148
  overflow-y: auto;
149
- `,Xe=n.div`
149
+ `,Ge=n.div`
150
150
  display: flex;
151
151
  align-items: center;
152
152
  justify-content: space-between;
153
153
  gap: 0.5rem;
154
154
  flex: 1;
155
155
  margin-right: .5rem;
156
- `,Ge=n.div`
156
+ `,Ke=n.div`
157
157
  display: flex;
158
158
  align-items: center;
159
159
  gap: 0.5rem;
160
- `;var Ke;function Ve(){return Ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ve.apply(null,arguments)}const Ye=e=>j.createElement("svg",Ve({width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 256 256"},e),Ke||(Ke=j.createElement("path",{fillRule:"evenodd",d:"M128 22C69.458 22 22 69.458 22 128v96c0 5.523 4.477 10 10 10h96c58.542 0 106-47.458 106-106S186.542 22 128 22m0 56c5.523 0 10 4.477 10 10v30h30c5.523 0 10 4.477 10 10s-4.477 10-10 10h-30v30c0 5.523-4.477 10-10 10s-10-4.477-10-10v-30H88c-5.523 0-10-4.477-10-10s4.477-10 10-10h30V88c0-5.523 4.477-10 10-10",clipRule:"evenodd","data-follow-fill":"#000"})));function Ze(){const{reset:t}=Ne();return e(_e,{className:"text-primary",tooltip:"新会话",placement:"top",onClick:t,children:e(Ye,{})})}function et({children:r}){return t(rt,{children:[r,t(tt,{children:[e(Ue,{}),e(Ze,{})]})]})}const tt=n.div`
160
+ `;var Ve;function Ye(){return Ye=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ye.apply(null,arguments)}const Ze=e=>$.createElement("svg",Ye({width:"1em",height:"1em",fill:"currentColor",viewBox:"0 0 256 256"},e),Ve||(Ve=$.createElement("path",{fillRule:"evenodd",d:"M128 22C69.458 22 22 69.458 22 128v96c0 5.523 4.477 10 10 10h96c58.542 0 106-47.458 106-106S186.542 22 128 22m0 56c5.523 0 10 4.477 10 10v30h30c5.523 0 10 4.477 10 10s-4.477 10-10 10h-30v30c0 5.523-4.477 10-10 10s-10-4.477-10-10v-30H88c-5.523 0-10-4.477-10-10s4.477-10 10-10h30V88c0-5.523 4.477-10 10-10",clipRule:"evenodd","data-follow-fill":"#000"})));function et(){const{reset:t}=je();return e(Be,{className:"text-primary",tooltip:"新会话",placement:"top",onClick:t,children:e(Ze,{})})}function tt({children:r}){return t(nt,{children:[r,t(rt,{children:[e(He,{}),e(et,{})]})]})}const rt=n.div`
161
161
  display: flex;
162
162
  gap: .25rem;
163
163
  margin-left: auto;
164
- `,rt=n.div`
164
+ `,nt=n.div`
165
165
  margin-bottom: .5rem;
166
166
  display: flex;
167
167
  padding: 0 .125rem;
168
- `,nt=function(e){return e.ops.map(e=>e.attributes?.[ie]||e.attributes?.[V]||e.insert||"").join("")};var it=z(function({suggestion:r,fileTypes:n,speech:i,scrollRef:o,variables:a,minRows:c=1,maxRows:m=5,toolbar:u,disabled:h,autoFocus:p,placeholder:g="请输入你的问题, Enter+Shift换行, Enter发送",onEvent:f},v){const x=q(null),y=q(null),k=q(),[w,E]=S(""),[N,j]=S(""),[$,C]=b([]),[z,A]=S(!1),D=n&&n.length>0?n:Ie,{send:T,resume:P,suggest:O}=Fe(),_=I(()=>{const e=new W({schema:{[K]:{void:!0,inline:!0},[Y]:{void:!0,inline:!0},[G]:{void:!0,inline:!0}}});return e.event.on("focus_capture",()=>A(!0)),e.event.on("blur_capture",()=>A(!1)),e.event.on("keydown_capture",t=>{if("Escape"===t.key){const{ops:t}=e.state.toBlock();t.some(e=>"skill-key"in(e.attributes||{}))&&e.state.setContent(new X)}else"Enter"!==t.key||t.shiftKey||(t.preventDefault(),t.stopPropagation(),k.current?.())}),e.event.on("CONTENT_CHANGE",e=>{E(nt(e.current).trim())}),e},[]),B=I(()=>({onSuccess(){r&&O()},onComplete(){requestAnimationFrame(()=>{_.selection.focus()})},onEvent:f}),[r,f]),{messages:H,loading:J,request:Q,setInput:ne}=Ne(B),[ie,oe]=S();M(()=>{const e=H.filter(e=>!!e.query);oe(e.at(-1)?.variables)},[H]),M(()=>{!n&&$.length>0&&C([])},[n]),M(()=>{const e=o.current;if(e&&T){const t=e=>{if(e.target instanceof HTMLAnchorElement&&"#!question"===e.target.hash){e.preventDefault();const t={query:e.target.text};a&&(t.variables={...ie,...a.values}),T(t)}};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[a,ie]);const se=R(({target:e})=>{if(e.files){const t=Array.from(e.files).filter(e=>!!D.includes(L.extname(e.name))&&(!(e.size>20971520)&&e)).slice(0,6-$.length);C(e=>{e.push(...t.map(e=>({file:e})))}),t.forEach(async e=>{try{const t=new FormData;t.set("file",e);const r=await Q({method:"POST",url:"/upload",data:t});C(t=>{const n=t.find(t=>t.file===e);n&&(n.path=r.path)})}catch(t){const r=l(t)?t.message:"unknown error";C(t=>{const n=t.find(t=>t.file===e);n&&(n.error=r)})}})}e.value=""},[$,D]),ae=$.flatMap(({file:e,path:t})=>t?[{name:e.name,size:e.size,path:t}]:[]),le=R(()=>{if(w||ae.length>0){const e={query:w,files:ae};a&&(e.variables={...ie,...a.values}),N&&(e.quote=N),T(e),de(""),j(""),C([]),y.current?.stop(!0)}},[w,ae,a,ie,N]);M(()=>{k.current=le},[le]);const ce=R(e=>{const t={},r={},n=new X;let i=1,o=1,s=0;const a=/\(([^)]+)\)|\[([^\]]+)\]|\{([^}]+)\}/g;let l;for(;null!==(l=a.exec(e));){if(l.index>s){const t=e.substring(s,l.index);t&&n.insert(t)}if(l[1])n.insert(" ",{[G]:l[1].trim()});else if(l[2]){const e=`var-${i}`;t[e]=l[0],n.insert(" ",{[K]:e}),i++}else if(l[3]){const e=l[3].split("|").map(e=>e.trim()),t=`sel-${o}`;r[t]=e,n.insert(" ",{[Y]:t,[V]:e[0]}),o++}s=a.lastIndex}if(s<e.length){const t=e.substring(s);t&&n.insert(t)}return{delta:n,placeholders:t,selector:r}},[]),de=R(e=>{let t;t="string"==typeof e?e:e(nt(_.state.block.toDelta()));const{delta:r,placeholders:n,selector:i}=ce(t);_.plugin.register([new Z({placeholders:n}),new ee({selector:i}),new te]),_.state.setContent(r),requestAnimationFrame(()=>{_.selection.focus()})},[_,ce]),me=I(()=>({setQuery:de,setQuote:j,send:T,resume:P,editor:_,focus(){_.selection.focus()}}),[de,j,T,P,_]);if(M(()=>{ne(me)},[me]),F(v,()=>me,[me]),a){const t=a.config.filter(e=>!(e.key in(a.values||{}))),r=(e,r=!1)=>!!e&&t.every(t=>{const n=!t.required||e?.[t.key];return!n&&r&&d.error("请完善必填信息"),n});if(t.length>0&&!r(ie))return e(st,{children:e(ot,{children:e(Ae,{values:ie,variables:t,onSubmit:({formData:e})=>{if(r(e,!0))return oe(e),!0}})})})}return t(pt,{children:[e(lt,{}),u&&e(et,{children:u}),t(ht,{$focused:z&&!J,children:[$.length>0&&e(dt,{children:$.map(({file:t,error:r,path:n},i)=>{const o=void 0===r&&void 0===n;return e(at,{name:t.name,size:t.size,error:r,loading:o,onRemove:()=>{C(e=>{const r=e.findIndex(e=>e.file===t);-1!==r&&e.splice(r,1)})}},i)})}),!!N&&t(ut,{children:[e("i",{className:"bi bi-quote"}),e("p",{children:N}),e(U,{onClick:()=>j("")})]}),t(mt,{children:[e(re,{editor:_,readonly:J||h,children:e(ct,{className:"block-kit-editable",autoFocus:p,placeholder:g,$minRows:c,$maxRows:m})}),n&&e(s,{tooltip:"可上传不超过6个小于20MB的文件",placement:"top",children:t(De,{disabled:$.length>=6,onClick:()=>x.current?.click(),children:[e("input",{onChange:se,multiple:!0,accept:D.join(","),ref:x,type:"file",hidden:!0}),e("i",{className:"bi bi-file-earmark-arrow-up"})]})}),i&&e(Pe,{ref:y,model:i.model,onResult:e=>{de(t=>t+e+" ")}}),e(De,{className:"text-primary",disabled:!w&&0===ae.length,onClick:e=>{e.preventDefault(),le()},children:e("i",{className:"bi bi-send-fill"})})]})]})]})});const ot=n.div`
168
+ `,it=function(e){return e.ops.map(e=>e.attributes?.[oe]||e.attributes?.[Y]||e.insert||"").join("")};var ot=I(function({suggestion:r,fileTypes:n,speech:i,scrollRef:o,variables:a,minRows:l=1,maxRows:d=5,toolbar:m,disabled:h,autoFocus:p,placeholder:g="请输入你的问题, Enter+Shift换行, Enter发送",onEvent:f},b){const y=R(null),x=R(null),k=R(),[w,E]=q(""),[N,j]=q(""),[$,C]=v([]),[M,I]=q(!1),D=n&&n.length>0?n:Fe,{send:L,resume:P,suggest:O}=Ae(),_=F(()=>{const e=new X({schema:{[V]:{void:!0,inline:!0},[Z]:{void:!0,inline:!0},[K]:{void:!0,inline:!0}}});return e.event.on("focus_capture",()=>I(!0)),e.event.on("blur_capture",()=>I(!1)),e.event.on("keydown_capture",t=>{if("Escape"===t.key){const{ops:t}=e.state.toBlock();t.some(e=>"skill-key"in(e.attributes||{}))&&e.state.setContent(new G)}else"Enter"!==t.key||t.shiftKey||(t.preventDefault(),t.stopPropagation(),k.current?.())}),e.event.on("CONTENT_CHANGE",e=>{E(it(e.current).trim())}),e},[]),B=F(()=>({onSuccess(){r&&O()},onComplete(){requestAnimationFrame(()=>{_.selection.focus()})},onEvent:f}),[r,f]),{messages:U,loading:J,request:Q,setInput:W}=je(B),[ie,oe]=q();S(()=>{const e=U.filter(e=>!!e.query);oe(e.at(-1)?.variables)},[U]),S(()=>{!n&&$.length>0&&C([])},[n]),S(()=>{const e=o.current;if(e&&L){const t=e=>{if(e.target instanceof HTMLAnchorElement&&"#!question"===e.target.hash){e.preventDefault();const t={query:e.target.text};a&&(t.variables={...ie,...a.values}),L(t)}};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[a,ie]);const se=z(({target:e})=>{if(e.files){const t=Array.from(e.files).filter(e=>!!D.includes(T.extname(e.name))&&(!(e.size>20971520)&&e)).slice(0,6-$.length);C(e=>{e.push(...t.map(e=>({file:e})))}),t.forEach(async e=>{try{const t=new FormData;t.set("file",e);const r=await Q({method:"POST",url:"/upload",data:t});C(t=>{const n=t.find(t=>t.file===e);n&&(n.path=r.path)})}catch(t){const r=c(t)?t.message:"unknown error";C(t=>{const n=t.find(t=>t.file===e);n&&(n.error=r)})}})}e.value=""},[$,D]),ae=$.flatMap(({file:e,path:t})=>t?[{name:e.name,size:e.size,path:t}]:[]),le=z(()=>{if(w||ae.length>0){const e={query:w,files:ae};a&&(e.variables={...ie,...a.values}),N&&(e.quote=N),L(e),de(""),j(""),C([]),x.current?.stop(!0)}},[w,ae,a,ie,N]);S(()=>{k.current=le},[le]);const ce=z(e=>{const t={},r={},n=new G;let i=1,o=1,s=0;const a=/\(([^)]+)\)|\[([^\]]+)\]|\{([^}]+)\}/g;let l;for(;null!==(l=a.exec(e));){if(l.index>s){const t=e.substring(s,l.index);t&&n.insert(t)}if(l[1])n.insert(" ",{[K]:l[1].trim()});else if(l[2]){const e=`var-${i}`;t[e]=l[0],n.insert(" ",{[V]:e}),i++}else if(l[3]){const e=l[3].split("|").map(e=>e.trim()),t=`sel-${o}`;r[t]=e,n.insert(" ",{[Z]:t,[Y]:e[0]}),o++}s=a.lastIndex}if(s<e.length){const t=e.substring(s);t&&n.insert(t)}return{delta:n,placeholders:t,selector:r}},[]),de=z(e=>{let t;t="string"==typeof e?e:e(it(_.state.block.toDelta()));const{delta:r,placeholders:n,selector:i}=ce(t);_.plugin.register([new ee({placeholders:n}),new te({selector:i}),new re]),_.state.setContent(r),requestAnimationFrame(()=>{_.selection.focus()})},[_,ce]),ue=F(()=>({setQuery:de,setQuote:j,send:L,resume:P,editor:_,focus(){_.selection.focus()}}),[de,j,L,P,_]);if(S(()=>{W(ue)},[ue]),A(b,()=>ue,[ue]),a){const t=a.config.filter(e=>!(e.key in(a.values||{}))),r=(e,r=!1)=>!!e&&t.every(t=>{const n=!t.required||e?.[t.key];return!n&&r&&u.error("请完善必填信息"),n});if(t.length>0&&!r(ie))return e(at,{children:e(st,{children:e(De,{values:ie,variables:t,onSubmit:({formData:e})=>{if(r(e,!0))return oe(e),!0}})})})}return t(gt,{children:[e(ct,{}),m&&e(tt,{children:m}),t(pt,{$focused:M&&!J,children:[$.length>0&&e(ut,{children:$.map(({file:t,error:r,path:n},i)=>{const o=void 0===r&&void 0===n;return e(lt,{name:t.name,size:t.size,error:r,loading:o,onRemove:()=>{C(e=>{const r=e.findIndex(e=>e.file===t);-1!==r&&e.splice(r,1)})}},i)})}),!!N&&t(ht,{children:[e("i",{className:"bi bi-quote"}),e("p",{children:N}),e(H,{onClick:()=>j("")})]}),t(mt,{children:[e(ne,{editor:_,readonly:J||h,children:e(dt,{className:"block-kit-editable",autoFocus:p,placeholder:g,$minRows:l,$maxRows:d})}),n&&e(s,{tooltip:"可上传不超过6个小于20MB的文件",placement:"top",children:t(Le,{disabled:$.length>=6,onClick:()=>y.current?.click(),children:[e("input",{onChange:se,multiple:!0,accept:D.join(","),ref:y,type:"file",hidden:!0}),e("i",{className:"bi bi-file-earmark-arrow-up"})]})}),i&&e(Oe,{ref:x,model:i.model,onResult:e=>{de(t=>t+e+" ")}}),e(Le,{className:"text-primary",disabled:!w&&0===ae.length,onClick:e=>{e.preventDefault(),le()},children:e("i",{className:"bi bi-send-fill"})})]})]})]})});const st=n.div`
169
169
  border-radius: var(--bs-border-radius-lg);
170
170
  box-shadow: var(--bs-box-shadow-sm);
171
171
  margin: 1rem;
172
172
  padding: 1rem;
173
173
  width: 100%;
174
174
  max-width: 500px;
175
- `,st=n.div`
175
+ `,at=n.div`
176
176
  position: absolute;
177
177
  left: 0;
178
178
  right: 0;
@@ -182,9 +182,9 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
182
182
  display: flex;
183
183
  justify-content: center;
184
184
  align-items: center;
185
- `,at=n(Me)`
185
+ `,lt=n(Se)`
186
186
  width: calc((100% - 0.75rem) / 2);
187
- `,lt=v`
187
+ `,ct=y`
188
188
  .editable-selector-options {
189
189
  border-radius: var(--bs-border-radius) !important;
190
190
  border: none !important;
@@ -203,7 +203,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
203
203
  }
204
204
  }
205
205
  }
206
- `,ct=n(ne)`
206
+ `,dt=n(ie)`
207
207
  min-height: calc(${e=>1.5*e.$minRows}em + 1rem);
208
208
  max-height: calc(${e=>1.5*e.$maxRows}em + 1rem);
209
209
  overflow-y: auto;
@@ -228,7 +228,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
228
228
  .editable-selector {
229
229
  color: var(--bs-primary);
230
230
  }
231
- `,dt=n.div`
231
+ `,ut=n.div`
232
232
  display: flex;
233
233
  flex-wrap: wrap;
234
234
  padding: 0.75rem;
@@ -239,7 +239,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
239
239
  padding: 0.5rem 0.5rem 0.5rem 0.75rem;
240
240
  gap: 0.25rem;
241
241
  align-items: end;
242
- `,ut=n.div`
242
+ `,ht=n.div`
243
243
  margin: 0.75rem 0.75rem 0 0.75rem;
244
244
  padding: 4px 8px;
245
245
  display: flex;
@@ -260,14 +260,14 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
260
260
  -webkit-box-orient: vertical;
261
261
  display: -webkit-box;
262
262
  }
263
- `,ht=n.div`
263
+ `,pt=n.div`
264
264
  background: #fff;
265
265
  border: var(--bs-border-width) var(--bs-border-style) ${e=>e.$focused?"var(--bs-primary)":"var(--bs-border-color)"};
266
266
  border-radius: var(--bs-border-radius-lg);
267
267
  box-shadow: 0.125rem 0.25rem 0.5rem rgba(0, 0, 0, 0.1);
268
- `,pt=n.div`
268
+ `,gt=n.div`
269
269
  margin: 0 1rem 1rem;
270
- `;function gt(e){return e.map(e=>({id:e.id,query:e.query,quote:e.quote||void 0,files:e.files||void 0,variables:e.variables,chunks:e.chunks.map(({content:e="",node:t,error:r,tools:n=[],reasoning:i})=>({content:e,reasoning:i,error:r,tools:n,node:t})),annotation:e.annotation,stats:{usage:e.usage,latency:e.latency}}))}function ft(e){if((e=e.filter(e=>!!e.trim())).length>3){const t=[...e];let r=e.length-3;for(;r--;){let e=Math.floor(Math.random()*t.length);t.splice(e,1)}e=t}return e}var bt,vt,xt;function yt(){return yt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},yt.apply(null,arguments)}const kt=e=>j.createElement("svg",yt({xmlns:"http://www.w3.org/2000/svg",width:20,height:10,fill:"#fff",viewBox:"0 0 120 30"},e),bt||(bt=j.createElement("circle",{cx:15,cy:15,r:15,fill:"#3c60ff"},j.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:15,repeatCount:"indefinite",to:15,values:"15;9;15"}),j.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:1,repeatCount:"indefinite",to:1,values:"1;.5;1"}))),vt||(vt=j.createElement("circle",{cx:60,cy:15,r:9,fill:"#3c60ff",fillOpacity:.3},j.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:9,repeatCount:"indefinite",to:9,values:"9;15;9"}),j.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:.5,repeatCount:"indefinite",to:.5,values:".5;1;.5"}))),xt||(xt=j.createElement("circle",{cx:105,cy:15,r:15,fill:"#3c60ff"},j.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:15,repeatCount:"indefinite",to:15,values:"15;9;15"}),j.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:1,repeatCount:"indefinite",to:1,values:"1;.5;1"}))));function wt(e){if(!e)return"";if("string"==typeof e)return e;if("image"===e.type){return`![](${x(e.image)})`}return""}const Et=function(e,t,r){function n(t){return t!==he.leftSquareBracket?(e.exit("citeMarker"),e.enter("citeData"),e.enter(pe.chunkString,{contentType:"string"}),i(t)):(e.consume(t),n)}function i(n){return n===he.rightSquareBracket?(e.exit(pe.chunkString),e.exit("citeData"),e.enter("citeMarker"),function(n){if(n!==he.rightSquareBracket)return r(n);return e.consume(n),e.exit("citeMarker"),e.exit("cite"),t(n)}(n)):ge(n)||n===he.eof||n>57||n<48?r(n):(e.consume(n),i)}return function(t){return t!==he.leftSquareBracket?r(t):(e.enter("cite"),e.enter("citeMarker"),n(t))}},Nt=function(){const e=this.data();e.micromarkExtensions.push({text:{[he.leftSquareBracket]:{tokenize:Et}}}),e.fromMarkdownExtensions.push({enter:{cite:function(e){this.enter({type:"cite",data:{hName:"cite",hChildren:[{type:"text",value:""}]}},e)},citeData:function(){this.buffer()}},exit:{cite:function(e){this.exit(e)},citeData:function(){const e=this.resume();this.stack[this.stack.length-1].data.hChildren[0].value=e}}})},jt=y.Image,$t={pre:({children:r,node:n})=>{if(!n)return null;const[i,o]=S(!1),s=I(()=>{const e=n.children[0];return"element"===(t=e).type&&"code"===t.tagName&&!!e.properties?.className?.includes("language-svg");var t},[n]);M(()=>{s&&o(s)},[s]);const a=I(()=>se(n),[n]);return t(zt,{children:[t(Rt,{children:[!i&&e(k,{tooltip:!1,as:qt,content:a}),s&&i&&e(qt,{onClick:()=>{const e=new Blob([a],{type:"image/svg+xml"}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download="image.svg",r.click(),URL.revokeObjectURL(t)},children:"下载"}),s&&e(qt,{onClick:()=>o(!i),children:i?"源码":"预览"})]}),s&&i?e("div",{dangerouslySetInnerHTML:{__html:a}}):e("pre",{children:r})]})},a:({node:t,href:r,...n})=>{const i=r?.startsWith("http")?"_blank":"_self";return e("a",{...n,href:r,target:i})},img:({node:t,...r})=>e(jt,{...r})},Ct=[[ue,{singleDollarTextMath:!1}],me,de],Mt=[ce,[le,{detect:!1,ignoreMissing:!0}]],St=D(z(({content:t,components:r,cite:n},i)=>{t=t.replace(/\\\(\s(.+?)\s\\\)/g,"$$$$ $1 $$$$");const o=I(()=>{const e={...$t,...r};return n&&(e.cite=n),e},[r,n]),s=I(()=>n?[...Ct,Nt]:Ct,[n]);return e(It,{ref:i,children:e(ae,{remarkPlugins:s,rehypePlugins:Mt,components:o,children:t})})}),oe),qt=n.div`
270
+ `;function ft(e){return e.map(e=>({id:e.id,query:e.query,quote:e.quote||void 0,files:e.files||void 0,variables:e.variables,chunks:e.chunks.map(({content:e="",node:t,error:r,tools:n=[],reasoning:i})=>({content:e,reasoning:i,error:r,tools:n,node:t})),annotation:e.annotation,stats:{usage:e.usage,latency:e.latency}}))}function bt(e){if((e=e.filter(e=>!!e.trim())).length>3){const t=[...e];let r=e.length-3;for(;r--;){let e=Math.floor(Math.random()*t.length);t.splice(e,1)}e=t}return e}var vt,yt,xt;function kt(){return kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},kt.apply(null,arguments)}const wt=e=>$.createElement("svg",kt({xmlns:"http://www.w3.org/2000/svg",width:20,height:10,fill:"#fff",viewBox:"0 0 120 30"},e),vt||(vt=$.createElement("circle",{cx:15,cy:15,r:15,fill:"#3c60ff"},$.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:15,repeatCount:"indefinite",to:15,values:"15;9;15"}),$.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:1,repeatCount:"indefinite",to:1,values:"1;.5;1"}))),yt||(yt=$.createElement("circle",{cx:60,cy:15,r:9,fill:"#3c60ff",fillOpacity:.3},$.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:9,repeatCount:"indefinite",to:9,values:"9;15;9"}),$.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:.5,repeatCount:"indefinite",to:.5,values:".5;1;.5"}))),xt||(xt=$.createElement("circle",{cx:105,cy:15,r:15,fill:"#3c60ff"},$.createElement("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:15,repeatCount:"indefinite",to:15,values:"15;9;15"}),$.createElement("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:1,repeatCount:"indefinite",to:1,values:"1;.5;1"}))));function Et(e){if(!e)return"";if("string"==typeof e)return e;if("image"===e.type){return`![](${x(e.image)})`}return""}const Nt=function(e,t,r){function n(t){return t!==pe.leftSquareBracket?(e.exit("citeMarker"),e.enter("citeData"),e.enter(ge.chunkString,{contentType:"string"}),i(t)):(e.consume(t),n)}function i(n){return n===pe.rightSquareBracket?(e.exit(ge.chunkString),e.exit("citeData"),e.enter("citeMarker"),function(n){if(n!==pe.rightSquareBracket)return r(n);return e.consume(n),e.exit("citeMarker"),e.exit("cite"),t(n)}(n)):fe(n)||n===pe.eof||n>57||n<48?r(n):(e.consume(n),i)}return function(t){return t!==pe.leftSquareBracket?r(t):(e.enter("cite"),e.enter("citeMarker"),n(t))}},jt=function(){const e=this.data();e.micromarkExtensions.push({text:{[pe.leftSquareBracket]:{tokenize:Nt}}}),e.fromMarkdownExtensions.push({enter:{cite:function(e){this.enter({type:"cite",data:{hName:"cite",hChildren:[{type:"text",value:""}]}},e)},citeData:function(){this.buffer()}},exit:{cite:function(e){this.exit(e)},citeData:function(){const e=this.resume();this.stack[this.stack.length-1].data.hChildren[0].value=e}}})},$t=k.Image,Ct={pre:({children:r,node:n})=>{if(!n)return null;const[i,o]=q(!1),s=F(()=>{const e=n.children[0];return"element"===(t=e).type&&"code"===t.tagName&&!!e.properties?.className?.includes("language-svg");var t},[n]);S(()=>{s&&o(s)},[s]);const a=F(()=>ae(n),[n]);return t(It,{children:[t(zt,{children:[!i&&e(w,{tooltip:!1,as:Rt,content:a}),s&&i&&e(Rt,{onClick:()=>{const e=new Blob([a],{type:"image/svg+xml"}),t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download="image.svg",r.click(),URL.revokeObjectURL(t)},children:"下载"}),s&&e(Rt,{onClick:()=>o(!i),children:i?"源码":"预览"})]}),s&&i?e("div",{dangerouslySetInnerHTML:{__html:a}}):e("pre",{children:r})]})},a:({node:t,href:r,...n})=>{const i=r?.startsWith("http")?"_blank":"_self";return e("a",{...n,href:r,target:i})},img:({node:t,...r})=>e($t,{...r})},Mt=[[he,{singleDollarTextMath:!1}],me,ue],St=[de,[ce,{detect:!1,ignoreMissing:!0}]],qt=L(I(({content:t,components:r,cite:n},i)=>{t=t.replace(/\\\(\s(.+?)\s\\\)/g,"$$$$ $1 $$$$");const o=F(()=>{const e={...Ct,...r};return n&&(e.cite=n),e},[r,n]),s=F(()=>n?[...Mt,jt]:Mt,[n]);return e(Ft,{ref:i,children:e(le,{remarkPlugins:s,rehypePlugins:St,components:o,children:t})})}),se),Rt=n.div`
271
271
  cursor: pointer;
272
272
  padding: 2px 10px;
273
273
  background-color: #303030;
@@ -277,7 +277,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
277
277
  font-size: 12px;
278
278
  font-family: initial;
279
279
  user-select: none;
280
- `,Rt=n.div`
280
+ `,zt=n.div`
281
281
  position: absolute;
282
282
  right: 10px;
283
283
  top: 1em;
@@ -291,17 +291,17 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
291
291
  &:hover {
292
292
  opacity: 1;
293
293
  }
294
- `,zt=n.div`
294
+ `,It=n.div`
295
295
  position: relative;
296
296
 
297
297
  &:hover {
298
- ${Rt} {
298
+ ${zt} {
299
299
  pointer-events: all;
300
300
  transform: translateX(0px);
301
301
  opacity: 0.7;
302
302
  }
303
303
  }
304
- `,It=n.div`
304
+ `,Ft=n.div`
305
305
  -ms-text-size-adjust: 100%;
306
306
  -webkit-text-size-adjust: 100%;
307
307
  line-height: 1.8;
@@ -571,7 +571,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
571
571
  .hljs-strong {
572
572
  font-weight: 700;
573
573
  }
574
- `;var Ft=z(function({children:t,tooltip:r,onClick:n,disabled:i,...o},a){i&&(n=void 0);const l=e(At,{ref:a,onClick:n,$disabled:i,...o,children:t});return r?e(s,{tooltip:r,placement:"top",children:l}):l});const At=n.div`
574
+ `;var At=I(function({children:t,tooltip:r,onClick:n,disabled:i,...o},a){i&&(n=void 0);const l=e(Dt,{ref:a,onClick:n,$disabled:i,...o,children:t});return r?e(s,{tooltip:r,placement:"top",children:l}):l});const Dt=n.div`
575
575
  align-items: center;
576
576
  justify-content: center;
577
577
  border-radius: .375rem;
@@ -604,7 +604,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
604
604
  `}
605
605
 
606
606
  }
607
- `,Dt=$(null);var Lt=Dt.Provider;const Tt=y.Image;function Pt({src:t,...r}){const{imageResolver:n}=Ne();return n&&t&&(t=n(t)),e(Ot,{children:e(Tt,{src:t,...r})})}const Ot=n.div`
607
+ `,Lt=C(null);var Tt=Lt.Provider;const Pt=k.Image;function Ot({src:t,...r}){const{imageResolver:n}=je();return n&&t&&(t=n(t)),e(_t,{children:e(Pt,{src:t,...r})})}const _t=n.div`
608
608
  margin-bottom: .5rem;
609
609
  margin-top: .5rem;
610
610
  border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
@@ -629,7 +629,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
629
629
  max-height: 100%;
630
630
  max-width: 100%;
631
631
  }
632
- `,_t=$(null);function Bt(){const e=C(_t);if(!e)throw new Error("useContext must be used within a Provider");return e}function Ut({children:t,...r}){return e(_t.Provider,{value:r,children:t})}function Ht({description:r,options:n}){const{resume:i,disabled:o,response:s}=Bt(),[a,l]=S(s?.result),c=o||void 0!==a;return t(Jt,{children:[r&&e(Qt,{children:r}),n.map((t,r)=>e(Wt,{$selected:a===t,$disabled:c,onClick:()=>(e=>{c||(l(e),i(e))})(t),children:t},r))]})}const Jt=n.div`
632
+ `,Bt=C(null);function Ut(){const e=M(Bt);if(!e)throw new Error("useContext must be used within a Provider");return e}function Ht({children:t,...r}){return e(Bt.Provider,{value:r,children:t})}function Jt({description:r,options:n}){const{resume:i,disabled:o,response:s}=Ut(),[a,l]=q(s?.result),c=o||void 0!==a;return t(Qt,{children:[r&&e(Wt,{children:r}),n.map((t,r)=>e(Xt,{$selected:a===t,$disabled:c,onClick:()=>(e=>{c||(l(e),i(e))})(t),children:t},r))]})}const Qt=n.div`
633
633
  display: flex;
634
634
  flex-direction: column;
635
635
  gap: 0.5rem;
@@ -642,10 +642,10 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
642
642
  &:last-child {
643
643
  margin-bottom: 0;
644
644
  }
645
- `,Qt=n.div`
645
+ `,Wt=n.div`
646
646
  color: var(--bs-secondary);
647
647
  line-height: 1.5;
648
- `,Wt=n.div`
648
+ `,Xt=n.div`
649
649
  padding: 0.375rem 0.75rem;
650
650
  background-color: ${e=>e.$selected?"rgba(var(--bs-primary-rgb), 0.1)":"#FFFFFF"};
651
651
  border: 1px solid ${e=>e.$selected?"rgba(var(--bs-primary-rgb), 0.3)":"var(--bs-border-color)"};
@@ -664,7 +664,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
664
664
  &:active {
665
665
  transform: ${e=>e.$disabled?"none":"scale(0.98)"};
666
666
  }
667
- `;function Xt({description:r,fields:n}){const{resume:i,disabled:o,response:s}=Bt(),[a,l]=S(void 0!==s),d=o||a,{schema:m,uiSchema:u}=I(()=>{const e={},t=[],r={};for(const i of n)e[i.name]={type:"number"===i.type?"number":"string",title:i.label},i.placeholder&&(r[i.name]={"ui:placeholder":i.placeholder}),"textarea"===i.type?r[i.name]={...r[i.name],"ui:widget":"textarea"}:"select"!==i.type&&"radio"!==i.type||!i.options?"checkbox"===i.type&&i.options?(e[i.name].type="array",e[i.name].uniqueItems=!0,e[i.name].items={type:"string",enum:i.options},r[i.name]={...r[i.name],"ui:widget":"checkboxes","ui:enumNames":i.options,"ui:inline":!0}):"email"===i.type?e[i.name].format="email":"date"===i.type?e[i.name].format="date":"tel"===i.type&&(r[i.name]={...r[i.name],"ui:options":{inputType:"tel"}}):(r[i.name]={...r[i.name],"ui:widget":i.type},e[i.name].enum=i.options,e[i.name].enumNames=i.options),i.required&&t.push(i.name);return{schema:{type:"object",properties:e,required:t},uiSchema:r}},[n]);return t(Kt,{className:"rounded bg-white shadow-sm",children:[r&&e(Vt,{children:r}),e(c,{schema:m,uiSchema:u,formData:s,onSubmit:({formData:e})=>{d||(l(!0),i(e))},disabled:d,validate:!0,showErrorList:!1,submitText:a?"已提交":"提交",omitExtraData:!0,children:({submit:t})=>e(Gt,{children:t})})]})}const Gt=n.div`
667
+ `;function Gt({description:r,fields:n}){const{resume:i,disabled:o,response:s}=Ut(),[a,l]=q(void 0!==s),c=o||a,{schema:u,uiSchema:m}=F(()=>{const e={},t=[],r={};for(const i of n)e[i.name]={type:"number"===i.type?"number":"string",title:i.label},i.placeholder&&(r[i.name]={"ui:placeholder":i.placeholder}),"textarea"===i.type?r[i.name]={...r[i.name],"ui:widget":"textarea"}:"select"!==i.type&&"radio"!==i.type||!i.options?"checkbox"===i.type&&i.options?(e[i.name].type="array",e[i.name].uniqueItems=!0,e[i.name].items={type:"string",enum:i.options},r[i.name]={...r[i.name],"ui:widget":"checkboxes","ui:enumNames":i.options,"ui:inline":!0}):"email"===i.type?e[i.name].format="email":"date"===i.type?e[i.name].format="date":"tel"===i.type&&(r[i.name]={...r[i.name],"ui:options":{inputType:"tel"}}):(r[i.name]={...r[i.name],"ui:widget":i.type},e[i.name].enum=i.options,e[i.name].enumNames=i.options),i.required&&t.push(i.name);return{schema:{type:"object",properties:e,required:t},uiSchema:r}},[n]);return t(Vt,{className:"rounded bg-white shadow-sm",children:[r&&e(Yt,{children:r}),e(d,{schema:u,uiSchema:m,formData:s,onSubmit:({formData:e})=>{c||(l(!0),i(e))},disabled:c,validate:!0,showErrorList:!1,submitText:a?"已提交":"提交",omitExtraData:!0,children:({submit:t})=>e(Kt,{children:t})})]})}const Kt=n.div`
668
668
  display: flex;
669
669
  justify-content: flex-end;
670
670
  border-top: 1px solid var(--bs-border-color);
@@ -672,7 +672,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
672
672
  button {
673
673
  padding: .25rem;
674
674
  }
675
- `,Kt=n.div`
675
+ `,Vt=n.div`
676
676
  display: flex;
677
677
  flex-direction: column;
678
678
  gap: 0.5rem;
@@ -690,10 +690,10 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
690
690
  &:last-child {
691
691
  margin-bottom: 0;
692
692
  }
693
- `,Vt=n.div`
693
+ `,Yt=n.div`
694
694
  color: var(--bs-secondary);
695
695
  line-height: 1.5;
696
- `;function Yt({content:r}){const{resume:n,disabled:i,response:o}=Bt(),[s,a]=S(void 0!==o),l=i||s;return t(Zt,{className:"rounded bg-white shadow-sm",children:[r&&e(er,{children:e(St,{content:r})}),e(tr,{children:e(w,{disabled:l,onClick:()=>{l||(a(!0),n("已确认"))},children:s?"已确认":"确认"})})]})}const Zt=n.div`
696
+ `;function Zt({content:r}){const{resume:n,disabled:i,response:o}=Ut(),[s,a]=q(void 0!==o),l=i||s;return t(er,{className:"rounded bg-white shadow-sm",children:[r&&e(tr,{children:e(qt,{content:r})}),e(rr,{children:e(E,{disabled:l,onClick:()=>{l||(a(!0),n("已确认"))},children:s?"已确认":"确认"})})]})}const er=n.div`
697
697
  display: flex;
698
698
  flex-direction: column;
699
699
  gap: .5rem;
@@ -707,10 +707,10 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
707
707
  &:last-child {
708
708
  margin-bottom: 0;
709
709
  }
710
- `,er=n.div`
710
+ `,tr=n.div`
711
711
  line-height: 1.6;
712
712
  color: var(--bs-body-color);
713
- `,tr=n.div`
713
+ `,rr=n.div`
714
714
  display: flex;
715
715
  justify-content: flex-end;
716
716
  border-top: 1px solid var(--bs-border-color);
@@ -719,7 +719,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
719
719
  button {
720
720
  padding: .25rem 1.5rem;
721
721
  }
722
- `;function rr({suspend:t}){const{readonly:r}=Ne(),{chunkIndex:n,chunk:i,toolIndex:o,tool:s,isLastMessage:a}=function(){const e=C(Dt);if(!e)throw new Error("useContext must be used within a Provider");return e}(),{resume:l}=Fe(),c=R(e=>{l({chunk:n,tool:o,payload:e})},[]);let d=null;switch(t.type){case"select":d=e(Ht,{...t.select});break;case"form":d=e(Xt,{...t.form});break;case"confirm":d=e(Yt,{...t.confirm})}const m=s?.response||i.node?.output;return e(Ut,{resume:c,disabled:r||!!i.error||!a,response:"(Empty)"===m?void 0:m,children:d})}function nr({value:t,cite:n}){const i=t=>"string"==typeof t?e(St,{content:t,cite:n}):"image"===t.type?e(Pt,{src:t.image}):"suspend"===t.type?e(rr,{suspend:t.suspend}):null;return Array.isArray(t)?e(r,{children:t.map((t,r)=>e(A,{children:i(t)},r))}):i(t)}const ir=({reasoning:r,loading:n})=>{const[i,o]=S(!1);return M(()=>{n||o(!1)},[n]),e(A,{children:e("div",{className:"mb-2",children:t("div",i?{className:"shadow-sm rounded bg-white fs-7",children:[t("div",{onClick:()=>o(!1),role:"button",className:"d-flex align-items-center p-1 px-2 gap-2",children:[n?e(P,{animation:"border",variant:"primary",size:"sm"}):e("i",{className:"bi bi-check-circle-fill text-success"}),e("span",{className:"text-muted",children:n?"思考中":"已思考"}),e("i",{className:"bi bi-caret-up-fill text-muted"})]}),e("div",{className:"border-top p-2 d-flex flex-column gap-2",children:e("div",{className:"border rounded bg-light p-2",children:e(St,{content:r})})})]}:{onClick:()=>o(!0),role:"button",className:"d-inline-flex align-items-center shadow-sm rounded bg-white p-1 px-2 fs-7 gap-2",children:[n?e(P,{animation:"border",variant:"primary",size:"sm"}):e("i",{className:"bi bi-check-circle-fill text-success"}),e("span",{className:"text-muted",children:n?"思考中":"已思考"}),e("i",{className:"bi bi-caret-down-fill text-muted"})]})})})},or=D(t=>{const{renderReasoning:r}=Ne();return r?r({Component:ir,props:t}):e(ir,{...t})});class sr{#t;#o=[];#s=0;constructor(){this.#t=new Q}speak(){for(this.#t.emit("playing",!0);this.#s<this.#o.length;){const e=this.#o[this.#s],t=new SpeechSynthesisUtterance(e),r=++this.#s;t.onend=()=>{r>=this.#o.length&&this.clear()},t.onerror=()=>{this.clear()},window.speechSynthesis.speak(t)}}clear(){this.#t.emit("playing",!1)}start(e,t=!1){this.#o=Array.isArray(e)?e:[e],t||(window.speechSynthesis.cancel(),this.#s=0),this.speak()}stop(){window.speechSynthesis.cancel(),this.clear()}onPlaying(e){this.#t.on("playing",e)}onSpeaking(e){this.#t.on("speaking",e)}}const ar=new Map;class lr{#r;#t;#o=[];#a=new Map;#l=!1;#s=0;#c=!1;constructor(e){this.#r=e,this.#t=new Q}createLoader(e){const t=new Promise(async t=>{try{const{type:r,data:n}=await this.#r(e),i=new Audio(`data:${r};base64,${n}`);this.#a.set(e,i),t(i)}catch{this.#a.delete(e),t(void 0)}});return this.#a.set(e,t),t}async loadAudioData(){this.#c=!0,this.#t.emit("speaking",!0);let e=0;for(;e<this.#o.length;){const t=this.#o[e];!this.#a.has(t)&&this.#c&&await this.createLoader(t),e++}this.#t.emit("speaking",!1),this.#c=!1}waitForAudioLoaded(e){const t=this.#a.get(e);return t instanceof Promise?t:Promise.resolve(t)}async playAudio(e=0){this.#l=!0;const t=await this.waitForAudioLoaded(this.#o[e]);this.#t.emit("playing",!0),t?(ar.set(this,t),t.onpause=async()=>{t.ended?(this.#s++,this.#s<this.#o.length?await this.playAudio(this.#s):this.clear()):this.clear()},await t.play()):this.clear()}clear(){this.#l=!1,this.#c=!1,this.#t.emit("playing",!1),this.#t.emit("speaking",!1),ar.delete(this)}start(e,t=!1){ar.forEach((e,t)=>{t!==this&&(e.pause(),e.currentTime=0)}),this.#o=Array.isArray(e)?e:[e],t||(this.#s=0),this.#c||this.loadAudioData(),this.#l||this.playAudio()}update(e){this.#o=Array.isArray(e)?e:[e]}stop(){const e=ar.get(this);e&&(e.pause(),e.currentTime=0)}onPlaying(e){this.#t.on("playing",e)}onSpeaking(e){this.#t.on("speaking",e)}}function cr({text:e,loading:t,loader:r}){const n=q(),[i,o]=S(!1),[s,a]=S(!1),l=q(t),c=async(i=!1)=>{n.current||(n.current=r?new lr(r):new sr,n.current.onSpeaking(o),n.current.onPlaying(a));let s="";"string"==typeof e?s=e:e.current&&(s=function(e){const t=e.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li:not(:has(p,h1, h2, h3, h4, h5, h6))");return Array.from(t).flatMap(e=>e.textContent?[e.textContent]:[])}(e.current),t&&s.pop()),s&&0!==s.length&&n.current.start(s,i)};return M(()=>{if(l.current&&"string"!=typeof e&&e.current){if(t){const t={childList:!0,subtree:!0},r=new MutationObserver(function(){c(!0)});return r.observe(e.current,t),c(),()=>{r.disconnect()}}c(!0)}},[t]),M(()=>()=>{n.current&&(n.current.stop(),n.current=void 0)},[]),{playing:s,speaking:i,start:c,stop:()=>{n.current&&n.current.stop()}}}function dr({model:r="builtin",voice:n,loading:i,autoplay:o,contentRef:s,avatarRef:a}){const{request:l}=Ne(),c=I(()=>{if("builtin"!==r)return async e=>(await l({url:"/speech",method:"post",data:{model:r,voice:n,input:e}})).audio},[r,n]),{playing:d,speaking:m,start:u,stop:h}=cr({loader:c,text:s,loading:o&&i});let p=null;return a.current&&(m&&(p=fe(e(mr,{children:e(P,{size:"sm",variant:"light"})}),a.current)),d&&(p=fe(e(mr,{children:e(ur,{className:"bi bi-volume-down-fill text-light"})}),a.current))),t(Ft,{disabled:i&&!d,onClick:()=>{d?h():u()},children:[d?e(ur,{className:"bi bi-volume-down-fill"}):m?e(P,{size:"sm",variant:"primary"}):e(ur,{className:"bi bi-volume-down"}),p]})}const mr=n.div`
722
+ `;function nr({suspend:t}){const{readonly:r}=je(),{chunkIndex:n,chunk:i,toolIndex:o,tool:s,isLastMessage:a}=function(){const e=M(Lt);if(!e)throw new Error("useContext must be used within a Provider");return e}(),{resume:l}=Ae(),c=z(e=>{l({chunk:n,tool:o,payload:e})},[]);let d=null;switch(t.type){case"select":d=e(Jt,{...t.select});break;case"form":d=e(Gt,{...t.form});break;case"confirm":d=e(Zt,{...t.confirm})}const u=s?.response||i.node?.output;return e(Ht,{resume:c,disabled:r||!!i.error||!a,response:"(Empty)"===u?void 0:u,children:d})}function ir({value:t,cite:n}){const i=t=>"string"==typeof t?e(qt,{content:t,cite:n}):"image"===t.type?e(Ot,{src:t.image}):"suspend"===t.type?e(nr,{suspend:t.suspend}):null;return Array.isArray(t)?e(r,{children:t.map((t,r)=>e(D,{children:i(t)},r))}):i(t)}const or=({reasoning:r,loading:n})=>{const[i,o]=q(!1);return S(()=>{n||o(!1)},[n]),e(D,{children:e("div",{className:"mb-2",children:t("div",i?{className:"shadow-sm rounded bg-white fs-7",children:[t("div",{onClick:()=>o(!1),role:"button",className:"d-flex align-items-center p-1 px-2 gap-2",children:[n?e(O,{animation:"border",variant:"primary",size:"sm"}):e("i",{className:"bi bi-check-circle-fill text-success"}),e("span",{className:"text-muted",children:n?"思考中":"已思考"}),e("i",{className:"bi bi-caret-up-fill text-muted"})]}),e("div",{className:"border-top p-2 d-flex flex-column gap-2",children:e("div",{className:"border rounded bg-light p-2",children:e(qt,{content:r})})})]}:{onClick:()=>o(!0),role:"button",className:"d-inline-flex align-items-center shadow-sm rounded bg-white p-1 px-2 fs-7 gap-2",children:[n?e(O,{animation:"border",variant:"primary",size:"sm"}):e("i",{className:"bi bi-check-circle-fill text-success"}),e("span",{className:"text-muted",children:n?"思考中":"已思考"}),e("i",{className:"bi bi-caret-down-fill text-muted"})]})})})},sr=L(t=>{const{renderReasoning:r}=je();return r?r({Component:or,props:t}):e(or,{...t})});class ar{#t;#o=[];#s=0;constructor(){this.#t=new W}speak(){for(this.#t.emit("playing",!0);this.#s<this.#o.length;){const e=this.#o[this.#s],t=new SpeechSynthesisUtterance(e),r=++this.#s;t.onend=()=>{r>=this.#o.length&&this.clear()},t.onerror=()=>{this.clear()},window.speechSynthesis.speak(t)}}clear(){this.#t.emit("playing",!1)}start(e,t=!1){this.#o=Array.isArray(e)?e:[e],t||(window.speechSynthesis.cancel(),this.#s=0),this.speak()}stop(){window.speechSynthesis.cancel(),this.clear()}onPlaying(e){this.#t.on("playing",e)}onSpeaking(e){this.#t.on("speaking",e)}}const lr=new Map;class cr{#r;#t;#o=[];#a=new Map;#l=!1;#s=0;#c=!1;constructor(e){this.#r=e,this.#t=new W}createLoader(e){const t=new Promise(async t=>{try{const{type:r,data:n}=await this.#r(e),i=new Audio(`data:${r};base64,${n}`);this.#a.set(e,i),t(i)}catch{this.#a.delete(e),t(void 0)}});return this.#a.set(e,t),t}async loadAudioData(){this.#c=!0,this.#t.emit("speaking",!0);let e=0;for(;e<this.#o.length;){const t=this.#o[e];!this.#a.has(t)&&this.#c&&await this.createLoader(t),e++}this.#t.emit("speaking",!1),this.#c=!1}waitForAudioLoaded(e){const t=this.#a.get(e);return t instanceof Promise?t:Promise.resolve(t)}async playAudio(e=0){this.#l=!0;const t=await this.waitForAudioLoaded(this.#o[e]);this.#t.emit("playing",!0),t?(lr.set(this,t),t.onpause=async()=>{t.ended?(this.#s++,this.#s<this.#o.length?await this.playAudio(this.#s):this.clear()):this.clear()},await t.play()):this.clear()}clear(){this.#l=!1,this.#c=!1,this.#t.emit("playing",!1),this.#t.emit("speaking",!1),lr.delete(this)}start(e,t=!1){lr.forEach((e,t)=>{t!==this&&(e.pause(),e.currentTime=0)}),this.#o=Array.isArray(e)?e:[e],t||(this.#s=0),this.#c||this.loadAudioData(),this.#l||this.playAudio()}update(e){this.#o=Array.isArray(e)?e:[e]}stop(){const e=lr.get(this);e&&(e.pause(),e.currentTime=0)}onPlaying(e){this.#t.on("playing",e)}onSpeaking(e){this.#t.on("speaking",e)}}function dr({text:e,loading:t,loader:r}){const n=R(),[i,o]=q(!1),[s,a]=q(!1),l=R(t),c=async(i=!1)=>{n.current||(n.current=r?new cr(r):new ar,n.current.onSpeaking(o),n.current.onPlaying(a));let s="";"string"==typeof e?s=e:e.current&&(s=function(e){const t=e.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li:not(:has(p,h1, h2, h3, h4, h5, h6))");return Array.from(t).flatMap(e=>e.textContent?[e.textContent]:[])}(e.current),t&&s.pop()),s&&0!==s.length&&n.current.start(s,i)};return S(()=>{if(l.current&&"string"!=typeof e&&e.current){if(t){const t={childList:!0,subtree:!0},r=new MutationObserver(function(){c(!0)});return r.observe(e.current,t),c(),()=>{r.disconnect()}}c(!0)}},[t]),S(()=>()=>{n.current&&(n.current.stop(),n.current=void 0)},[]),{playing:s,speaking:i,start:c,stop:()=>{n.current&&n.current.stop()}}}function ur({model:r="builtin",voice:n,loading:i,autoplay:o,contentRef:s,avatarRef:a}){const{request:l}=je(),c=F(()=>{if("builtin"!==r)return async e=>(await l({url:"/speech",method:"post",data:{model:r,voice:n,input:e}})).audio},[r,n]),{playing:d,speaking:u,start:m,stop:h}=dr({loader:c,text:s,loading:o&&i});let p=null;return a.current&&(u&&(p=be(e(mr,{children:e(O,{size:"sm",variant:"light"})}),a.current)),d&&(p=be(e(mr,{children:e(hr,{className:"bi bi-volume-down-fill text-light"})}),a.current))),t(At,{disabled:i&&!d,onClick:()=>{d?h():m()},children:[d?e(hr,{className:"bi bi-volume-down-fill"}):u?e(O,{size:"sm",variant:"primary"}):e(hr,{className:"bi bi-volume-down"}),p]})}const mr=n.div`
723
723
  position: absolute;
724
724
  top: 0;
725
725
  left: 0;
@@ -729,27 +729,27 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
729
729
  align-items: center;
730
730
  justify-content: center;
731
731
  background-color: rgba(0, 0, 0, .3);
732
- `,ur=n.i`
732
+ `,hr=n.i`
733
733
 
734
734
  &::before {
735
735
  transform: scale(1.4)
736
736
  }
737
- `;function hr({tool:r,loading:n}){const{logLevel:i="none",renderToolContent:o}=Ne(),s="response"in r,a=!s&&!n,{response:l,title:c,content:d,showStatus:m,defaultExpanded:u}=I(()=>{const n=(e=>{try{return JSON.parse(e.arguments)}catch(e){return null}})(r),i=e("span",{className:"text-truncate",children:r.title}),a=t("div",{className:"border-top p-2 d-flex flex-column gap-2",children:[t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"参数"})}),e(gr,{className:"border-top p-2",children:r.arguments})]}),s&&t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"响应"})}),e(gr,{className:"border-top p-2",children:r.response||"None"})]})]}),l=r.content&&e(nr,{value:r.content});if(o){const e=o({tool:r,args:n});if(e)return{title:null===e.title?null:e.title??i,response:null===e.response?null:e.response??a,content:null===e.content?null:e.content??l,showStatus:e.showStatus??!0,defaultExpanded:e.defaultExpanded??!1}}return{title:i,response:a,content:l,showStatus:!0,defaultExpanded:!1}},[r,o]),[h,p]=S(u),g="all"==i&&null!==l;return t(A,{children:[c&&e("div",{className:"mb-2",children:t(pr,{className:"shadow-sm rounded bg-white fs-7",$open:h,children:[t("div",{onClick:()=>p(g&&!h),role:"button",className:"d-flex align-items-center flex-nowrap p-1 px-2 gap-2",children:[a?e("i",{className:"bi bi-dash-circle-fill text-muted"}):s?r.error?e("i",{className:"bi bi-x-circle-fill text-danger"}):e("i",{className:"bi bi-check-circle-fill text-success"}):e(P,{animation:"border",variant:"primary",size:"sm"}),m&&e("span",{className:"text-muted",children:a?"已取消":s?"已使用":"正在使用"}),c,g&&e("i",h?{className:"bi bi-caret-up-fill text-muted"}:{className:"bi bi-caret-down-fill text-muted"})]}),h&&l]})}),d]})}const pr=n.div`
737
+ `;function pr({tool:r,loading:n}){const{logLevel:i="none",renderToolContent:o}=je(),s="response"in r,a=!s&&!n,{response:l,title:c,content:d,showStatus:u,defaultExpanded:m}=F(()=>{const n=(e=>{try{return JSON.parse(e.arguments)}catch(e){return null}})(r),i=e("span",{className:"text-truncate",children:r.title}),a=t("div",{className:"border-top p-2 d-flex flex-column gap-2",children:[t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"参数"})}),e(fr,{className:"border-top p-2",children:r.arguments})]}),s&&t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"响应"})}),e(fr,{className:"border-top p-2",children:r.response||"None"})]})]}),l=r.content&&e(ir,{value:r.content});if(o){const e=o({tool:r,args:n});if(e)return{title:null===e.title?null:e.title??i,response:null===e.response?null:e.response??a,content:null===e.content?null:e.content??l,showStatus:e.showStatus??!0,defaultExpanded:e.defaultExpanded??!1}}return{title:i,response:a,content:l,showStatus:!0,defaultExpanded:!1}},[r,o]),[h,p]=q(m),g="all"==i&&null!==l;return t(D,{children:[c&&e("div",{className:"mb-2",children:t(gr,{className:"shadow-sm rounded bg-white fs-7",$open:h,children:[t("div",{onClick:()=>p(g&&!h),role:"button",className:"d-flex align-items-center flex-nowrap p-1 px-2 gap-2",children:[a?e("i",{className:"bi bi-dash-circle-fill text-muted"}):s?r.error?e("i",{className:"bi bi-x-circle-fill text-danger"}):e("i",{className:"bi bi-check-circle-fill text-success"}):e(O,{animation:"border",variant:"primary",size:"sm"}),u&&e("span",{className:"text-muted",children:a?"已取消":s?"已使用":"正在使用"}),c,g&&e("i",h?{className:"bi bi-caret-up-fill text-muted"}:{className:"bi bi-caret-down-fill text-muted"})]}),h&&l]})}),d]})}const gr=n.div`
738
738
  width: ${e=>e.$open?"auto":"fit-content"};
739
739
  max-width: 100%;
740
740
  overflow:hidden;
741
- `,gr=n.div`
741
+ `,fr=n.div`
742
742
  white-space: pre-wrap;
743
743
  overflow-y: auto;
744
744
  overflow-x: hidden;
745
745
  max-height: 150px;
746
- `;function fr({node:r}){const[n,i]=S(!1),{nodeIconResolver:o}=Ne(),s=!("latency"in r),a=s?e(P,{animation:"border",variant:"primary",size:"sm"}):r.error?e("i",{className:"bi bi-x-circle-fill text-danger"}):e("i",{className:"bi bi-check-circle-fill text-success"});return t("div",{className:"shadow-sm rounded bg-white fs-7",children:[t(vr,{onClick:()=>i(e=>!e),role:"button",className:"d-flex align-items-center p-1 px-2 gap-1",children:[e("i",{className:"bi bi-chevron-down text-muted"}),o?.(r.type),e(xr,{className:"me-2 text-truncate",children:r.title}),e("span",{className:"me-auto"}),!s&&e("span",{className:"text-nowrap text-muted",children:br(r.latency)}),e("span",{children:a})]}),n&&t("div",{className:"border-top p-2 d-flex flex-column gap-2",children:[t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"输入"})}),e("div",{className:"border-top p-2 overflow-hidden text-pre-wrap",children:r.input?JSON.stringify(r.input,null,4):"None"})]}),t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"输出"})}),e("div",{className:"border-top p-2 overflow-hidden text-pre-wrap",children:r.output?JSON.stringify(r.output,null,4):"None"})]})]})]})}const br=e=>e<1?`${(1e3*e).toFixed(3)} ms`:e>60?`${parseInt(Math.round(e/60).toString())} m ${(e%60).toFixed(3)} s`:`${e.toFixed(3)} s`,vr=n.div`
746
+ `;function br({node:r}){const[n,i]=q(!1),{nodeIconResolver:o}=je(),s=!("latency"in r),a=s?e(O,{animation:"border",variant:"primary",size:"sm"}):r.error?e("i",{className:"bi bi-x-circle-fill text-danger"}):e("i",{className:"bi bi-check-circle-fill text-success"});return t("div",{className:"shadow-sm rounded bg-white fs-7",children:[t(yr,{onClick:()=>i(e=>!e),role:"button",className:"d-flex align-items-center p-1 px-2 gap-1",children:[e("i",{className:"bi bi-chevron-down text-muted"}),o?.(r.type),e(xr,{className:"me-2 text-truncate",children:r.title}),e("span",{className:"me-auto"}),!s&&e("span",{className:"text-nowrap text-muted",children:vr(r.latency)}),e("span",{children:a})]}),n&&t("div",{className:"border-top p-2 d-flex flex-column gap-2",children:[t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"输入"})}),e("div",{className:"border-top p-2 overflow-hidden text-pre-wrap",children:r.input?JSON.stringify(r.input,null,4):"None"})]}),t("div",{className:"border rounded bg-light",children:[e("div",{className:"d-flex align-items-center p-1 px-2 fs-7 gap-2",children:e("span",{className:"text-muted",children:"输出"})}),e("div",{className:"border-top p-2 overflow-hidden text-pre-wrap",children:r.output?JSON.stringify(r.output,null,4):"None"})]})]})]})}const vr=e=>e<1?`${(1e3*e).toFixed(3)} ms`:e>60?`${parseInt(Math.round(e/60).toString())} m ${(e%60).toFixed(3)} s`:`${e.toFixed(3)} s`,yr=n.div`
747
747
  svg {
748
748
  flex-shrink: 0;
749
749
  }
750
750
  `,xr=n.span`
751
751
  display: inline-block;
752
- `;function yr({nodes:r,loading:n}){const[i,o]=S(!1),s=r.some(e=>"error"in e),a=n?e(P,{animation:"border",variant:"primary",size:"sm"}):e("i",s?{className:"bi bi-x-circle-fill text-danger"}:{className:"bi bi-check-circle-fill text-success"});return e("div",{className:"mb-2",children:t("div",i?{className:"shadow-sm rounded bg-white fs-7",children:[t("div",{onClick:()=>o(!1),role:"button",className:"d-flex align-items-center p-1 px-2 gap-2",children:[a,e("span",{children:"工作流"}),e("i",{className:"bi bi-caret-up-fill text-muted"})]}),e("div",{className:"border-top p-2 d-flex flex-column gap-1 bg-light bg-opacity-50",children:r.map((t,r)=>e(fr,{node:t},r))})]}:{onClick:()=>o(!0),role:"button",className:"d-inline-flex align-items-center shadow-sm rounded bg-white p-1 px-2 fs-7 gap-2",children:[a,e("span",{children:"工作流"}),e("i",{className:"bi bi-caret-down-fill text-muted"})]})})}const kr=D(({message:n,actions:i,setMessage:o,cite:s,speech:a,isLast:l})=>{const{query:c,quote:d,files:m=[],chunks:u,annotation:h,loading:p}=n,{user:g,bot:f,logLevel:b="none",messages:v}=Ne(),x=I(()=>u?u.reduce(function(e,t){const r=Array.isArray(t.content)?t.content.reduce((e,t)=>{const r=wt(t);return r?e+r+"\n":e},""):wt(t.content);return e+r+"\n"+(t.tools||[]).reduce((e,t)=>{if(t.content){const r=wt(t.content);if(r)return e+r+"\n"}return e},"")},""):"",[u]),y=q(null),w=q(null),N=q(null),j=I(()=>u?.flatMap(e=>e.node?[e.node]:[])||[],[u]),$=c||m.length>0;return t(r,{children:[$&&t(zr,{$reverse:!0,children:[g&&e(Sr,{children:e("img",{src:g.avatar})}),e(qr,{}),t(Rr,{ref:y,children:[c&&e(St,{content:c}),d&&e(H,{trigger:"click",container:y,rootClose:!0,placement:"bottom",overlay:e(wr,{body:!0,children:d}),children:e(Nr,{children:e(Er,{children:d})})}),m.length>0&&m.map(({name:t,size:r,path:n},i)=>E(n)?e(Pt,{src:`/uploads/${n}`},i):e($r,{children:e(Me,{name:t,url:`/uploads/${n}`,size:r})},i))]})]}),u&&t(zr,{children:[f&&e(Sr,{ref:w,children:e("img",{src:f.avatar})}),e(qr,{}),t(Rr,{children:[$&&!1!==i&&t(Cr,{children:[e(k,{placement:"top",content:x,as:Ft,tooltip:!0}),a&&e(dr,{loading:n.loading,avatarRef:w,contentRef:N,...a}),i?.({Component:Ft,message:n,content:x,setMessage:o,messages:v})]}),e(Mr,{children:["stats","all"].includes(b)&&n.stats&&t(r,{children:[t("span",{children:["耗时 ",n.stats.latency/1e3," 秒"]}),t("span",{children:["花费 Token ",n.stats.usage]})]})}),t(jr,{ref:N,$deleted:!!h,children:["all"===b&&j.length>0&&e(yr,{loading:p,nodes:j}),u.map((r,n)=>t(A,{children:[r.reasoning&&["stats","all"].includes(b)&&e(or,{reasoning:r.reasoning,loading:!r.content&&0===(r.tools||[]).length}),r.content&&e(Lt,{value:{chunkIndex:n,chunk:r,isLastMessage:l},children:e(nr,{cite:s,value:r.content})}),(r.tools||[]).map((t,i)=>e(Lt,{value:{chunkIndex:n,chunk:r,toolIndex:i,tool:t,isLastMessage:l},children:e(hr,{tool:t,loading:p})},i)),r.error&&e(St,{content:`[${r.error}]`})]},n))]}),h&&t("div",{children:[t("div",{className:"d-flex align-items-center",children:[e("span",{className:"fs-7 text-secondary me-2",children:"标注的答案"}),e("hr",{className:"flex-fill"})]}),e(St,{content:h.answer})]}),n.loading&&e(kt,{})]})]})]})}),wr=n(J)`
752
+ `;function kr({nodes:r,loading:n}){const[i,o]=q(!1),s=r.some(e=>"error"in e),a=n?e(O,{animation:"border",variant:"primary",size:"sm"}):e("i",s?{className:"bi bi-x-circle-fill text-danger"}:{className:"bi bi-check-circle-fill text-success"});return e("div",{className:"mb-2",children:t("div",i?{className:"shadow-sm rounded bg-white fs-7",children:[t("div",{onClick:()=>o(!1),role:"button",className:"d-flex align-items-center p-1 px-2 gap-2",children:[a,e("span",{children:"工作流"}),e("i",{className:"bi bi-caret-up-fill text-muted"})]}),e("div",{className:"border-top p-2 d-flex flex-column gap-1 bg-light bg-opacity-50",children:r.map((t,r)=>e(br,{node:t},r))})]}:{onClick:()=>o(!0),role:"button",className:"d-inline-flex align-items-center shadow-sm rounded bg-white p-1 px-2 fs-7 gap-2",children:[a,e("span",{children:"工作流"}),e("i",{className:"bi bi-caret-down-fill text-muted"})]})})}const wr=L(({message:n,actions:i,setMessage:o,cite:s,speech:a,isLast:l})=>{const{query:c,quote:d,files:u=[],chunks:m,annotation:h,loading:p}=n,{user:g,bot:f,logLevel:b="none",messages:v}=je(),y=F(()=>m?m.reduce(function(e,t){const r=Array.isArray(t.content)?t.content.reduce((e,t)=>{const r=Et(t);return r?e+r+"\n":e},""):Et(t.content);return e+r+"\n"+(t.tools||[]).reduce((e,t)=>{if(t.content){const r=Et(t.content);if(r)return e+r+"\n"}return e},"")},""):"",[m]),x=R(null),k=R(null),E=R(null),j=F(()=>m?.flatMap(e=>e.node?[e.node]:[])||[],[m]),$=c||u.length>0;return t(r,{children:[$&&t(Ir,{$reverse:!0,children:[g&&e(qr,{children:e("img",{src:g.avatar})}),e(Rr,{}),t(zr,{ref:x,children:[c&&e(qt,{content:c}),d&&e(J,{trigger:"click",container:x,rootClose:!0,placement:"bottom",overlay:e(Er,{body:!0,children:d}),children:e(jr,{children:e(Nr,{children:d})})}),u.length>0&&u.map(({name:t,size:r,path:n},i)=>N(n)?e(Ot,{src:`/uploads/${n}`},i):e(Cr,{children:e(Se,{name:t,url:`/uploads/${n}`,size:r})},i))]})]}),m&&t(Ir,{children:[f&&e(qr,{ref:k,children:e("img",{src:f.avatar})}),e(Rr,{}),t(zr,{children:[$&&!1!==i&&t(Mr,{children:[e(w,{placement:"top",content:y,as:At,tooltip:!0}),a&&e(ur,{loading:n.loading,avatarRef:k,contentRef:E,...a}),i?.({Component:At,message:n,content:y,setMessage:o,messages:v})]}),e(Sr,{children:["stats","all"].includes(b)&&n.stats&&t(r,{children:[t("span",{children:["耗时 ",n.stats.latency/1e3," 秒"]}),t("span",{children:["花费 Token ",n.stats.usage]})]})}),t($r,{ref:E,$deleted:!!h,children:["all"===b&&j.length>0&&e(kr,{loading:p,nodes:j}),m.map((r,n)=>t(D,{children:[r.reasoning&&["stats","all"].includes(b)&&e(sr,{reasoning:r.reasoning,loading:!r.content&&0===(r.tools||[]).length}),r.content&&e(Tt,{value:{chunkIndex:n,chunk:r,isLastMessage:l},children:e(ir,{cite:s,value:r.content})}),(r.tools||[]).map((t,i)=>e(Tt,{value:{chunkIndex:n,chunk:r,toolIndex:i,tool:t,isLastMessage:l},children:e(pr,{tool:t,loading:p})},i)),r.error&&e(qt,{content:`[${r.error}]`})]},n))]}),h&&t("div",{children:[t("div",{className:"d-flex align-items-center",children:[e("span",{className:"fs-7 text-secondary me-2",children:"标注的答案"}),e("hr",{className:"flex-fill"})]}),e(qt,{content:h.answer})]}),n.loading&&e(wt,{})]})]})]})}),Er=n(Q)`
753
753
  max-width: calc(100% - .875rem * 2);
754
754
  width: calc(100% - .875rem * 2);
755
755
  font-size: 1rem;
@@ -758,25 +758,25 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
758
758
  .popover-body {
759
759
  padding: .5rem .75rem;
760
760
  }
761
- `,Er=n.div`
761
+ `,Nr=n.div`
762
762
  overflow: hidden;
763
763
  text-overflow: ellipsis;
764
764
  word-break: break-all;
765
765
  -webkit-line-clamp: 2;
766
766
  -webkit-box-orient: vertical;
767
767
  display: -webkit-box;
768
- `,Nr=n.div`
768
+ `,jr=n.div`
769
769
  padding: .5rem .75rem;
770
770
  color: var(--bs-secondary);
771
771
  border-radius: var(--bs-border-radius-lg);
772
772
  background: #FFFFFF;
773
773
  cursor: pointer;
774
- `,jr=n.div`
774
+ `,$r=n.div`
775
775
  ${e=>e.$deleted&&i`
776
776
  text-decoration-line: line-through;
777
777
  color: var(--bs-secondary);
778
778
  `}
779
- `,$r=n.div`
779
+ `,Cr=n.div`
780
780
  width: 100%;
781
781
  margin-bottom: .5rem;
782
782
  margin-top: .5rem;
@@ -788,7 +788,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
788
788
  &:last-child {
789
789
  margin-bottom: 0;
790
790
  }
791
- `,Cr=n.div`
791
+ `,Mr=n.div`
792
792
  position: absolute;
793
793
  top: -1.1rem;
794
794
  right: 0;
@@ -796,7 +796,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
796
796
  gap: .5rem;
797
797
  opacity: 0;
798
798
  z-index: 1;
799
- `,Mr=n.div`
799
+ `,Sr=n.div`
800
800
  position: absolute;
801
801
  bottom: -1.4rem;
802
802
  left: 0;
@@ -809,7 +809,7 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
809
809
  display: flex;
810
810
  opacity: 0;
811
811
  z-index: 1;
812
- `,Sr=n.div`
812
+ `,qr=n.div`
813
813
  width: 35px;
814
814
  height: 35px;
815
815
  border-radius: 50%;
@@ -820,14 +820,14 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
820
820
  width: 100%;
821
821
  height: 100%;
822
822
  }
823
- `,qr=n.div`
823
+ `,Rr=n.div`
824
824
  width: 0;
825
825
  height: 0;
826
826
  content: "";
827
827
  border: 5px solid transparent;
828
828
  border-right-color: #f3f3f3;
829
829
  transform: translateY(10px);
830
- `,Rr=n.div`
830
+ `,zr=n.div`
831
831
  padding: .875rem;
832
832
  background-color: rgb(243, 243, 243);
833
833
  border-radius: var(--bs-border-radius-lg);
@@ -835,31 +835,31 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
835
835
  position: relative;
836
836
 
837
837
  &:hover {
838
- ${Mr}, ${Cr} {
838
+ ${Sr}, ${Mr} {
839
839
  opacity: 1;
840
840
  }
841
841
  }
842
- `,zr=n.div`
842
+ `,Ir=n.div`
843
843
  display: flex;
844
844
  justify-content: flex-start;
845
845
  padding: 1rem 0 1rem 0;
846
846
  ${e=>e.$reverse&&i`
847
847
  flex-direction: row-reverse;
848
848
 
849
- ${qr} {
849
+ ${Rr} {
850
850
  border-left-color: rgba(var(--bs-primary-rgb), 0.1);
851
851
  border-right-color: transparent;
852
852
  }
853
853
 
854
- ${Rr} {
854
+ ${zr} {
855
855
  background: rgba(var(--bs-primary-rgb), 0.1);
856
856
  }
857
857
  `};
858
- `;function Ir(r){const{placeholder:n,actions:i,cite:o,speech:s,renderItem:a,scrollRef:l}=r,{messages:c,setMessages:d,loading:m,suggestions:u,conversationId:h}=Ne(),p=q(r.loaded),g=R(()=>{const e=l.current;e&&requestAnimationFrame(()=>{e.scrollTo({top:e.scrollHeight})})},[]),f=q(null),{height:b}=be({ref:f});M(()=>{(m||!p.current)&&c.length>0&&(m&&(p.current=!0),g())},[b,m,p,c]),M(()=>{u.length>0&&g()},[u]),M(()=>{p.current=r.loaded},[h]),M(()=>{const e=f.current;if(e){const t=()=>{p.current=!0};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[f]);const v=c.slice(-30);return t(Fr,{ref:f,children:[0===v.length&&n,v.map((t,r)=>{const n={actions:i,cite:o,speech:s,message:t,setMessage:e=>{d(r=>{const n=r.findIndex(e=>e.id===t.id);-1!==n&&e(r[n])})},isLast:r===v.length-1};return a?a({Component:kr,props:n},r):e(kr,{...n},r)}),u.length>0&&e(Ar,{children:u.map((t,r)=>e("a",{href:"#!question",children:t},r))})]})}const Fr=n.div`
858
+ `;function Fr(r){const{placeholder:n,actions:i,cite:o,speech:s,renderItem:a,scrollRef:l}=r,{messages:c,setMessages:d,loading:u,suggestions:m,conversationId:h}=je(),p=R(r.loaded),g=z(()=>{const e=l.current;e&&requestAnimationFrame(()=>{e.scrollTo({top:e.scrollHeight})})},[]),f=R(null),{height:b}=ve({ref:f});S(()=>{(u||!p.current)&&c.length>0&&(u&&(p.current=!0),g())},[b,u,p,c]),S(()=>{m.length>0&&g()},[m]),S(()=>{p.current=r.loaded},[h]),S(()=>{const e=f.current;if(e){const t=()=>{p.current=!0};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[f]);const v=c.slice(-30);return t(Ar,{ref:f,children:[0===v.length&&n,v.map((t,r)=>{const n={actions:i,cite:o,speech:s,message:t,setMessage:e=>{d(r=>{const n=r.findIndex(e=>e.id===t.id);-1!==n&&e(r[n])})},isLast:r===v.length-1};return a?a({Component:wr,props:n},r):e(wr,{...n},r)}),m.length>0&&e(Dr,{children:m.map((t,r)=>e("a",{href:"#!question",children:t},r))})]})}const Ar=n.div`
859
859
  display: flex;
860
860
  flex-direction: column;
861
861
  flex: 1;
862
- `,Ar=n.div`
862
+ `,Dr=n.div`
863
863
  display: flex;
864
864
  flex-direction: column;
865
865
  align-items: flex-start;
@@ -876,16 +876,16 @@ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{styled as
876
876
  background: var(--bs-secondary-bg-subtle);
877
877
  }
878
878
  }
879
- `,Dr=D(z(({className:r,bot:n,user:i,input:o,logLevel:s,imageResolver:a,nodeIconResolver:l,placeholder:c,actions:d,onboarding:m,conversation:u,cite:h,speech:p,renderItem:g,renderFileItem:f,renderToolContent:v,renderReasoning:x,messages:k,request:w,onReset:E,transformMessages:j=gt},$)=>{const C=R(e=>{const t=[];if(m&&!1!==m.enable){const e=ft(m.questions||[]);t.push({chunks:[{content:[m.prologue,...e.map(e=>`[${e}](#!question)`)].join("\n"),tools:[]}],loading:m.loading})}return e?t.concat(j(e.messages||[])):k?t.concat(j(k)):t},[m]),[z,A]=S(u?.id),[D,L]=S(),[T,P]=b([]);M(()=>{P(C(u))},[m]);const[O,_]=S(!1),B=q(null),[U,H]=S([]),J=R(e=>{A(e?.id),P(C(e)),H([]),_(!1),E?.(e)},[O,C,E]);return F($,()=>({reset:J}),[J]),e(je,{request:I(()=>w?"string"==typeof w?N.create({baseURL:w}):w:N,[w]),bot:n,user:i,logLevel:s,imageResolver:a,nodeIconResolver:l,conversationId:z,setConversationId:A,input:D,setInput:L,messages:T,setMessages:P,suggestions:U,setSuggestions:H,loading:O,setLoading:_,renderFileItem:f,reset:J,readonly:!o,renderToolContent:v,renderReasoning:x,children:e(Tr,{className:r,children:t(y,{children:[e(Lr,{ref:B,children:e(Ir,{placeholder:c,cite:h,actions:d,loaded:!o,speech:p,renderItem:g,scrollRef:B})}),o&&e(it,{...o,scrollRef:B})]})})})}),oe),Lr=n.div`
879
+ `,Lr=L(I(({className:r,bot:n,user:i,input:o,logLevel:s,imageResolver:a,nodeIconResolver:l,placeholder:c,actions:d,onboarding:u,conversation:m,cite:h,speech:p,renderItem:g,renderFileItem:f,renderToolContent:b,renderReasoning:y,messages:x,request:w,onReset:E,transformMessages:N=ft},$)=>{const C=z(e=>{const t=[];if(u&&!1!==u.enable){const e=bt(u.questions||[]);t.push({chunks:[{content:[u.prologue,...e.map(e=>`[${e}](#!question)`)].join("\n"),tools:[]}],loading:u.loading})}return e?t.concat(N(e.messages||[])):x?t.concat(N(x)):t},[u]),[M,I]=q(m?.id),[D,L]=q(),[T,P]=v([]);S(()=>{P(C(m))},[u]);const[O,_]=q(!1),B=R(null),[U,H]=q([]),J=z(e=>{I(e?.id),P(C(e)),H([]),_(!1),E?.(e)},[O,C,E]);return A($,()=>({reset:J}),[J]),e($e,{request:F(()=>w?"string"==typeof w?j.create({baseURL:w}):w:j,[w]),bot:n,user:i,logLevel:s,imageResolver:a,nodeIconResolver:l,conversationId:M,setConversationId:I,input:D,setInput:L,messages:T,setMessages:P,suggestions:U,setSuggestions:H,loading:O,setLoading:_,renderFileItem:f,reset:J,readonly:!o,renderToolContent:b,renderReasoning:y,children:e(Pr,{className:r,children:t(k,{children:[e(Tr,{ref:B,children:e(Fr,{placeholder:c,cite:h,actions:d,loaded:!o,speech:p,renderItem:g,scrollRef:B})}),o&&e(ot,{...o,scrollRef:B})]})})})}),se),Tr=n.div`
880
880
  display: flex;
881
881
  flex-direction: column;
882
882
  flex: 1;
883
883
  overflow-y: auto;
884
884
  padding: 0 1rem;
885
885
  margin-bottom: .5rem;
886
- `,Tr=n.div`
886
+ `,Pr=n.div`
887
887
  display: flex;
888
888
  flex-direction: column;
889
889
  height: 100%;
890
890
  position: relative;
891
- `;async function Pr(e){const t=await ve().use(ye).use(de).use(me).use(ue).use(ke).use(xe).process(e);return String(t)}export{_e as ActionButton,Me as FileItem,St as Markdown,Dr as MessageBox,Ae as VariableForm,we as isToolMessage,Pr as md2html,ft as pickQuestions,Ne as useMessageContext,cr as useSynthesis};
891
+ `;async function Or(e){const t=await ye().use(ke).use(ue).use(me).use(he).use(we).use(xe).process(e);return String(t)}export{Be as ActionButton,Se as FileItem,qt as Markdown,Lr as MessageBox,De as VariableForm,Ee as isToolMessage,Or as md2html,bt as pickQuestions,je as useMessageContext,dr as useSynthesis};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topthink/chat",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "module": "es/index.js",
5
5
  "types": "types/index.d.ts",
6
6
  "files": [
@@ -13,7 +13,7 @@
13
13
  "@block-kit/core": "^1.0.22",
14
14
  "@block-kit/variable": "^1.0.21",
15
15
  "@breezystack/lamejs": "^1.2.7",
16
- "@topthink/components": "1.2.1",
16
+ "@topthink/components": "1.2.2",
17
17
  "@types/hast": "^3.0.4",
18
18
  "@types/mdast": "^4.0.4",
19
19
  "eventemitter3": "^5.0.1",
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "author": "yunwuxin <tzzhangyajun@qq.com> (https://github.com/yunwuxin)",
66
66
  "license": "MIT",
67
- "gitHead": "bf97bae04cbf072837f3dc02bf3223a71483026d",
67
+ "gitHead": "778fe5ab4ec3f66db112c3b3cd1dee5051f67e2a",
68
68
  "scripts": {
69
69
  "prebuild": "rimraf es types",
70
70
  "build": "rollup -c --environment NODE_ENV:production",