@topthink/chat 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.js +64 -64
- 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,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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?.()},[o,s]),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(()=>{const e=a[a.length-1];e&&0==e.chunks?.length&&!e.loading&&y()},[]),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
|
|
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
|
-
`,
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
142
|
+
`,We=n(m)`
|
|
143
143
|
display: flex;
|
|
144
144
|
flex-direction: column;
|
|
145
145
|
padding: .5rem;
|
|
146
|
-
`,
|
|
146
|
+
`,Xe=n.div`
|
|
147
147
|
height: 100%;
|
|
148
148
|
overflow-y: auto;
|
|
149
|
-
`,
|
|
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
|
-
`,
|
|
156
|
+
`,Ke=n.div`
|
|
157
157
|
display: flex;
|
|
158
158
|
align-items: center;
|
|
159
159
|
gap: 0.5rem;
|
|
160
|
-
`;var
|
|
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
|
-
`,
|
|
164
|
+
`,nt=n.div`
|
|
165
165
|
margin-bottom: .5rem;
|
|
166
166
|
display: flex;
|
|
167
167
|
padding: 0 .125rem;
|
|
168
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
185
|
+
`,lt=n(Se)`
|
|
186
186
|
width: calc((100% - 0.75rem) / 2);
|
|
187
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
268
|
+
`,gt=n.div`
|
|
269
269
|
margin: 0 1rem 1rem;
|
|
270
|
-
`;function
|
|
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`})`}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
|
-
`,
|
|
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
|
-
`,
|
|
294
|
+
`,It=n.div`
|
|
295
295
|
position: relative;
|
|
296
296
|
|
|
297
297
|
&:hover {
|
|
298
|
-
${
|
|
298
|
+
${zt} {
|
|
299
299
|
pointer-events: all;
|
|
300
300
|
transform: translateX(0px);
|
|
301
301
|
opacity: 0.7;
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
|
-
`,
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
645
|
+
`,Wt=n.div`
|
|
646
646
|
color: var(--bs-secondary);
|
|
647
647
|
line-height: 1.5;
|
|
648
|
-
`,
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
693
|
+
`,Yt=n.div`
|
|
694
694
|
color: var(--bs-secondary);
|
|
695
695
|
line-height: 1.5;
|
|
696
|
-
`;function
|
|
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
|
-
`,
|
|
710
|
+
`,tr=n.div`
|
|
711
711
|
line-height: 1.6;
|
|
712
712
|
color: var(--bs-body-color);
|
|
713
|
-
`,
|
|
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
|
|
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
|
-
`,
|
|
732
|
+
`,hr=n.i`
|
|
733
733
|
|
|
734
734
|
&::before {
|
|
735
735
|
transform: scale(1.4)
|
|
736
736
|
}
|
|
737
|
-
`;function
|
|
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
|
-
`,
|
|
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
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
${
|
|
838
|
+
${Sr}, ${Mr} {
|
|
839
839
|
opacity: 1;
|
|
840
840
|
}
|
|
841
841
|
}
|
|
842
|
-
`,
|
|
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
|
-
${
|
|
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
|
-
${
|
|
854
|
+
${zr} {
|
|
855
855
|
background: rgba(var(--bs-primary-rgb), 0.1);
|
|
856
856
|
}
|
|
857
857
|
`};
|
|
858
|
-
`;function
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
886
|
+
`,Pr=n.div`
|
|
887
887
|
display: flex;
|
|
888
888
|
flex-direction: column;
|
|
889
889
|
height: 100%;
|
|
890
890
|
position: relative;
|
|
891
|
-
`;async function
|
|
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.
|
|
3
|
+
"version": "1.2.3",
|
|
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.
|
|
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": "
|
|
67
|
+
"gitHead": "bdf655b65cc8db6bd6009a8964f9102ddc1f62de",
|
|
68
68
|
"scripts": {
|
|
69
69
|
"prebuild": "rimraf es types",
|
|
70
70
|
"build": "rollup -c --environment NODE_ENV:production",
|