@blueking/ai-ui-sdk 0.0.5 → 0.0.7-beta.1

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.
@@ -17,3 +17,10 @@ export declare function durationFormatter(val: number): string;
17
17
  */
18
18
  export declare function handleDownLoad(source: string, filename?: string): void;
19
19
  export declare const handleCopy: (text: string) => void;
20
+ /**
21
+ * 处理提示词模板,替换模板中的变量
22
+ * @param prompt 提示词模板
23
+ * @param selectedText 选中的文本
24
+ * @returns 处理后的提示词
25
+ */
26
+ export declare const processPromptTemplate: (prompt: string, selectedText: string) => string;
package/dist/main.js CHANGED
@@ -41,7 +41,7 @@ url(${m}) format("embedded-opentype");
41
41
  .ai-ui-sdk-yanjing-kejian:before {
42
42
  content: "\\e106";
43
43
  }
44
- `,""]);let E=B}},n={};function i(A){var e=n[A];if(void 0!==e)return e.exports;var o=n[A]={id:A,exports:{}};return t[A](o,o.exports,i),o.exports}i.m=t,i.n=A=>{var e=A&&A.__esModule?()=>A.default:()=>A;return i.d(e,{a:e}),e},i.d=(A,e)=>{for(var t in e)i.o(e,t)&&!i.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},i.o=(A,e)=>Object.prototype.hasOwnProperty.call(A,e),i.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},i.p="/",i.b=document.baseURI||self.location.href;var o={};return(()=>{"use strict";i.r(o),i.d(o,{HttpErrorCode:()=>n,SessionContentRole:()=>t,SessionContentStatus:()=>e,SessionPromptRole:()=>A,default:()=>I,transferSessionContent2SessionPrompt:()=>s,useChat:()=>k,useClickProxy:()=>u,useStyle:()=>y,useSummary:()=>C});var A,e,t,n,l={};i.r(l),i.d(l,{eo:()=>n,In:()=>t,c_:()=>e,bJ:()=>A,DA:()=>s,Y_:()=>k,a2:()=>u,X3:()=>y,S0:()=>C}),function(A){A.System="system",A.Assistant="assistant",A.User="user",A.Guide="guide",A.Pause="pause",A.UserImage="user-image",A.Hidden="hidden",A.HiddenUser="hidden-user",A.HiddenAssistant="hidden-assistant",A.HiddenSystem="hidden-system",A.HiddenGuide="hidden-guide",A.TemplateUser="template-user",A.TemplateAssistant="template-assistant",A.TemplateSystem="template-system",A.TemplateGuide="template-guide",A.TemplateHidden="template-hidden"}(A||(A={})),function(A){A.Fail="fail",A.Loading="loading",A.Success="success"}(e||(e={})),function(A){A.Ai="ai",A.User="user",A.Time="time",A.System="system",A.Role="role",A.Hidden="hidden",A.Guide="guide",A.Pause="pause",A.TokenExpired="token-expired",A.UserImage="user-image",A.HiddenUser="hidden-user",A.HiddenAi="hidden-ai",A.HiddenRole="hidden-role",A.HiddenGuide="hidden-guide",A.TemplateUser="template-user",A.TemplateAi="template-ai",A.TemplateRole="template-role",A.TemplateGuide="template-guide",A.TemplateHidden="template-hidden",A.ImageNotSupported="image-not-supported"}(t||(t={})),function(A){A.TokenExpired="80003",A.ImageNotSupported="82003",A.UnAuthorizedPreviewFile="80401",A.TagRepeat="1513405",A[A.Aborted=20]="Aborted",A[A.UnLogin=401]="UnLogin",A.IamNoPermission="IAM_NO_PERMISSION"}(n||(n={}));let s=e=>{let n={[t.Ai]:A.Assistant,[t.User]:A.User,[t.System]:A.System,[t.Hidden]:A.Hidden,[t.Guide]:A.Guide,[t.Time]:A.System,[t.Role]:A.System,[t.HiddenAi]:A.HiddenAssistant,[t.HiddenGuide]:A.HiddenGuide,[t.HiddenRole]:A.HiddenSystem,[t.HiddenUser]:A.HiddenUser,[t.TemplateAi]:A.TemplateAssistant,[t.TemplateGuide]:A.TemplateGuide,[t.TemplateRole]:A.TemplateSystem,[t.TemplateUser]:A.TemplateUser,[t.TemplateHidden]:A.TemplateHidden,[t.Pause]:A.Pause,[t.TokenExpired]:A.Pause,[t.ImageNotSupported]:A.Pause,[t.UserImage]:A.UserImage};return{content:e.content,role:n[e.role]}};var a=i(380),r=i(472);let d=A=>{try{return JSON.parse(A),!0}catch(A){return!1}},c=A=>{let e=document.createElement("textarea");e.value=A,document.body.appendChild(e),e.select(),document.execCommand("copy"),(0,r.Message)({theme:"success",message:"复制成功"}),document.body.removeChild(e)},u=()=>{let A=A=>{var e,t,n,i;let o=A.target;if(null==o?void 0:o.classList.contains("bkaidev-angle-up")){let A=null==o?void 0:o.parentElement;(null==A?void 0:A.classList.contains("closed"))?null==A||A.classList.remove("closed"):null==A||A.classList.add("closed")}if((null==o?void 0:o.classList.contains("click-close"))&&((null==o?void 0:o.classList.contains("closed"))?null==o||o.classList.remove("closed"):null==o||o.classList.add("closed")),null==o?void 0:o.classList.contains("click-full-screen")){let A=null==o?void 0:null===(t=o.parentElement)||void 0===t?void 0:null===(e=t.parentElement)||void 0===e?void 0:e.parentElement;null==A||A.classList.add("full-screen"),A._originalParent||(A._originalParent=A.parentNode,A._originalNextSibling=A.nextSibling),document.body.appendChild(A)}if(null==o?void 0:o.classList.contains("click-un-full-screen")){let A=null==o?void 0:null===(i=o.parentElement)||void 0===i?void 0:null===(n=i.parentElement)||void 0===n?void 0:n.parentElement;null==A||A.classList.remove("full-screen"),A._originalNextSibling?A._originalParent.insertBefore(A,A._originalNextSibling):A._originalParent.appendChild(A)}if(null==o?void 0:o.classList.contains("click-copy")){let A=null==o?void 0:o.getAttribute("data-clipboard-text");A&&c(decodeURIComponent(A))}if(null==o?void 0:o.classList.contains("click-download")){let A=null==o?void 0:o.getAttribute("data-clipboard-text"),e=null==o?void 0:o.getAttribute("data-file-name");A&&e&&function(A,e="ai.txt"){let t=document.createElement("a"),n=new Blob([A]);t.download=e,t.href=URL.createObjectURL(n),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}(decodeURIComponent(A),e)}},e=()=>{window.addEventListener("click",A)},t=()=>{window.removeEventListener("click",A)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})},B=A=>{let e=`<section class="knowledge-head click-close">
44
+ `,""]);let E=B}},n={};function i(A){var e=n[A];if(void 0!==e)return e.exports;var o=n[A]={id:A,exports:{}};return t[A](o,o.exports,i),o.exports}i.m=t,i.n=A=>{var e=A&&A.__esModule?()=>A.default:()=>A;return i.d(e,{a:e}),e},i.d=(A,e)=>{for(var t in e)i.o(e,t)&&!i.o(A,t)&&Object.defineProperty(A,t,{enumerable:!0,get:e[t]})},i.o=(A,e)=>Object.prototype.hasOwnProperty.call(A,e),i.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},i.p="/",i.b=document.baseURI||self.location.href;var o={};return(()=>{"use strict";i.r(o),i.d(o,{HttpErrorCode:()=>n,SessionContentRole:()=>t,SessionContentStatus:()=>e,SessionPromptRole:()=>A,default:()=>G,transferSessionContent2SessionPrompt:()=>s,useChat:()=>C,useClickProxy:()=>B,useStyle:()=>I,useSummary:()=>y});var A,e,t,n,l={};i.r(l),i.d(l,{eo:()=>n,In:()=>t,c_:()=>e,bJ:()=>A,DA:()=>s,Y_:()=>C,a2:()=>B,X3:()=>I,S0:()=>y}),function(A){A.System="system",A.Assistant="assistant",A.User="user",A.Guide="guide",A.Pause="pause",A.UserImage="user-image",A.Hidden="hidden",A.HiddenUser="hidden-user",A.HiddenAssistant="hidden-assistant",A.HiddenSystem="hidden-system",A.HiddenGuide="hidden-guide",A.TemplateUser="template-user",A.TemplateAssistant="template-assistant",A.TemplateSystem="template-system",A.TemplateGuide="template-guide",A.TemplateHidden="template-hidden"}(A||(A={})),function(A){A.Fail="fail",A.Loading="loading",A.Success="success"}(e||(e={})),function(A){A.Ai="ai",A.User="user",A.Time="time",A.System="system",A.Role="role",A.Hidden="hidden",A.Guide="guide",A.Pause="pause",A.TokenExpired="token-expired",A.UserImage="user-image",A.HiddenUser="hidden-user",A.HiddenAi="hidden-ai",A.HiddenRole="hidden-role",A.HiddenGuide="hidden-guide",A.TemplateUser="template-user",A.TemplateAi="template-ai",A.TemplateRole="template-role",A.TemplateGuide="template-guide",A.TemplateHidden="template-hidden",A.ImageNotSupported="image-not-supported"}(t||(t={})),function(A){A.TokenExpired="80003",A.ImageNotSupported="82003",A.UnAuthorizedPreviewFile="80401",A.TagRepeat="1513405",A[A.Aborted=20]="Aborted",A[A.UnLogin=401]="UnLogin",A.IamNoPermission="IAM_NO_PERMISSION"}(n||(n={}));let s=e=>{let n={[t.Ai]:A.Assistant,[t.User]:A.User,[t.System]:A.System,[t.Hidden]:A.Hidden,[t.Guide]:A.Guide,[t.Time]:A.System,[t.Role]:A.System,[t.HiddenAi]:A.HiddenAssistant,[t.HiddenGuide]:A.HiddenGuide,[t.HiddenRole]:A.HiddenSystem,[t.HiddenUser]:A.HiddenUser,[t.TemplateAi]:A.TemplateAssistant,[t.TemplateGuide]:A.TemplateGuide,[t.TemplateRole]:A.TemplateSystem,[t.TemplateUser]:A.TemplateUser,[t.TemplateHidden]:A.TemplateHidden,[t.Pause]:A.Pause,[t.TokenExpired]:A.Pause,[t.ImageNotSupported]:A.Pause,[t.UserImage]:A.UserImage};return{content:e.content,role:n[e.role]}};var a=i(380),r=i(472);let d=A=>{try{return JSON.parse(A),!0}catch(A){return!1}},c=A=>{let e=document.createElement("textarea");e.value=A,document.body.appendChild(e),e.select(),document.execCommand("copy"),(0,r.Message)({theme:"success",message:"复制成功"}),document.body.removeChild(e)},u=(A,e)=>A.replace(/\{\{\s*SELECTED_TEXT\s*\}\}/g,e||""),B=()=>{let A=A=>{var e,t,n,i;let o=A.target;if(null==o?void 0:o.classList.contains("bkaidev-angle-up")){let A=null==o?void 0:o.parentElement;(null==A?void 0:A.classList.contains("closed"))?null==A||A.classList.remove("closed"):null==A||A.classList.add("closed")}if((null==o?void 0:o.classList.contains("click-close"))&&((null==o?void 0:o.classList.contains("closed"))?null==o||o.classList.remove("closed"):null==o||o.classList.add("closed")),null==o?void 0:o.classList.contains("click-full-screen")){let A=null==o?void 0:null===(t=o.parentElement)||void 0===t?void 0:null===(e=t.parentElement)||void 0===e?void 0:e.parentElement;null==A||A.classList.add("full-screen"),A._originalParent||(A._originalParent=A.parentNode,A._originalNextSibling=A.nextSibling),document.body.appendChild(A)}if(null==o?void 0:o.classList.contains("click-un-full-screen")){let A=null==o?void 0:null===(i=o.parentElement)||void 0===i?void 0:null===(n=i.parentElement)||void 0===n?void 0:n.parentElement;null==A||A.classList.remove("full-screen"),A._originalNextSibling?A._originalParent.insertBefore(A,A._originalNextSibling):A._originalParent.appendChild(A)}if(null==o?void 0:o.classList.contains("click-copy")){let A=null==o?void 0:o.getAttribute("data-clipboard-text");A&&c(decodeURIComponent(A))}if(null==o?void 0:o.classList.contains("click-download")){let A=null==o?void 0:o.getAttribute("data-clipboard-text"),e=null==o?void 0:o.getAttribute("data-file-name");A&&e&&function(A,e="ai.txt"){let t=document.createElement("a"),n=new Blob([A]);t.download=e,t.href=URL.createObjectURL(n),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}(decodeURIComponent(A),e)}},e=()=>{window.addEventListener("click",A)},t=()=>{window.removeEventListener("click",A)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})},g=A=>{let e=`<section class="knowledge-head click-close">
45
45
  <svg
46
46
  class="ai-ui-sdk-wenzhang"
47
47
  >
@@ -60,7 +60,7 @@ url(${m}) format("embedded-opentype");
60
60
  <a href="${t}" title="预览原文" target="_blank" class="knowledge-link hover-show">
61
61
  <i class="ai-ui-sdk-icon ai-ui-sdk-yanjing-kejian"></i>
62
62
  </a>
63
- </li>`}),e+="</ul>"},g=A=>A.replace(/<section class="knowledge-head click-close">[\s\S]*?<\/section>/,"").replace(/<ul class="knowledge-body">[\s\S]*?<\/ul>/,"").replace(/<section class="knowledge-tips">[\s\S]*?<\/section>/,""),h=()=>{let A=null,e=()=>{let e=`.knowledge-tips {
63
+ </li>`}),e+="</ul>"},h=A=>A.replace(/<section class="knowledge-head click-close">[\s\S]*?<\/section>/,"").replace(/<ul class="knowledge-body">[\s\S]*?<\/ul>/,"").replace(/<section class="knowledge-tips">[\s\S]*?<\/section>/,""),p=()=>{let A=null,e=()=>{let e=`.knowledge-tips {
64
64
  position: relative;
65
65
  padding: 6px 8px;
66
66
  margin-bottom: 14px;
@@ -189,13 +189,13 @@ url(${m}) format("embedded-opentype");
189
189
  }
190
190
  }
191
191
  }
192
- }`;(A=document.createElement("style")).textContent=e+t,document.head.appendChild(A)},t=()=>{A&&(A.remove(),A=null)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})},p=(A,e,t,n)=>{let i="内容正在生成中..."===A||t?"":A;if(i.includes('<section class="think-head click-close">')){let A=i.match(/<section class="think-body">([\s\S]*?)<\/section>/);if(A){let t=A[1],n=t.replace(/\n$/g,`${e}
192
+ }`;(A=document.createElement("style")).textContent=e+t,document.head.appendChild(A)},t=()=>{A&&(A.remove(),A=null)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})},m=(A,e,t,n)=>{let i="内容正在生成中..."===A||t?"":A;if(i.includes('<section class="think-head click-close">')){let A=i.match(/<section class="think-body">([\s\S]*?)<\/section>/);if(A){let t=A[1],n=t.replace(/\n$/g,`${e}
193
193
  `);i=i.replace(t,n)}}else i+=`<section class="think-head click-close">
194
194
  <i class="ai-ui-sdk-icon ai-ui-sdk-sikao"></i>思考中...<i class="ai-ui-sdk-icon ai-ui-sdk-angle-up"></i>
195
195
  </section>
196
196
  <section class="think-body">
197
197
  ${e}
198
- </section>`;return n&&(i=i.replace("思考中...",`已完成思考 (耗时:${function(A){let e=Math.floor(A/36e5),t=Math.floor(A%36e5/6e4),n=Math.floor(A%6e4/1e3),i=A%1e3,o=[];return e>0&&o.push(`${e}h`),t>0&&o.push(`${t}min`),n>0&&o.push(`${n}s`),i>0&&o.push(`${i.toFixed(2)}ms`),o.join(" ")}(n)})`)),i},m=A=>{let e=A.replace(/<section class="think-head click-close">[\s\S]*<\/section>/,"").replace(/<section class="think-body">[\s\S]*<\/section>/,"");if(""===e.trim()){let t=A.match(/<section class="think-body">([\s\S]*?)<\/section>/);t&&([,e]=t)}return e},E=A=>{let e="正在思考..."===A,t=A.match(/<section class="think-body">([\s\S]*?)<\/section>$/),n=t&&""===t[1].trim();return e||n},v=()=>{let A=null,e=()=>{let e=`.think-head {
198
+ </section>`;return n&&(i=i.replace("思考中...",`已完成思考 (耗时:${function(A){let e=Math.floor(A/36e5),t=Math.floor(A%36e5/6e4),n=Math.floor(A%6e4/1e3),i=A%1e3,o=[];return e>0&&o.push(`${e}h`),t>0&&o.push(`${t}min`),n>0&&o.push(`${n}s`),i>0&&o.push(`${i.toFixed(2)}ms`),o.join(" ")}(n)})`)),i},E=A=>{let e=A.replace(/<section class="think-head click-close">[\s\S]*<\/section>/,"").replace(/<section class="think-body">[\s\S]*<\/section>/,"");if(""===e.trim()){let t=A.match(/<section class="think-body">([\s\S]*?)<\/section>/);t&&([,e]=t)}return e},v=A=>{let e="正在思考..."===A,t=A.match(/<section class="think-body">([\s\S]*?)<\/section>$/),n=t&&""===t[1].trim();return e||n},f=()=>{let A=null,e=()=>{let e=`.think-head {
199
199
  display: flex;
200
200
  align-items: center;
201
201
  padding: 0 8px 0 6px;
@@ -243,6 +243,6 @@ url(${m}) format("embedded-opentype");
243
243
  &~ .knowledge-head {
244
244
  margin-bottom: 8px;
245
245
  }
246
- }`;(A=document.createElement("style")).textContent=e,document.head.appendChild(A)},t=()=>{A&&(A.remove(),A=null)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})};function f(A,e,t,n,i,o,l){try{var s=A[o](l),a=s.value}catch(A){t(A);return}s.done?e(a):Promise.resolve(a).then(n,i)}function Q(A){return function(){var e=this,t=arguments;return new Promise(function(n,i){var o=A.apply(e,t);function l(A){f(o,n,i,l,s,"next",A)}function s(A){f(o,n,i,l,s,"throw",A)}l(void 0)})}}function w(A,e,t){return e in A?Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):A[e]=t,A}class b{stream({sessionCode:A,url:e,headers:t,data:n}){var i=this;return Q(function*(){var o,l;yield null===(o=i.handleStart)||void 0===o?void 0:o.call(i,A);let s=new AbortController;i.controllerMap[A]=s,fetch(e,{method:"post",signal:s.signal,headers:function(A){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(A){return Object.getOwnPropertyDescriptor(t,A).enumerable}))),n.forEach(function(e){w(A,e,t[e])})}return A}({"Content-Type":"application/json"},t),mode:"cors",credentials:"include",body:JSON.stringify(n)}).then((l=Q(function*(e){let t=e.body.pipeThrough(new window.TextDecoderStream).getReader(),n="";for(;;)try{let{value:o,done:l}=yield t.read();if(!e.ok){i.handleError(A,o||e.statusText,e.status);break}if(l){i.handleEnd(A);break}(n+o.toString()).split("\n").forEach(t=>{let o=t.replace("data:","").trim();if(d(o)){var l,s;let{event:t,content:a,cover:r,documents:d,result:c,code:u,elapsed_time:B,message:g}=JSON.parse(o);if(!1===c||200!==e.status){i.handleError(A,g||"模型调用失败",u);return}switch(t){case"text":i.handleText(A,a,r);break;case"reference_doc":null===(l=i.handleReferenceDoc)||void 0===l||l.call(i,A,d,r);break;case"think":null===(s=i.handleThink)||void 0===s||s.call(i,A,a,r,B);break;case"done":i.handleEnd(A,r?a:"");break;case"error":i.handleError(A,g||"模型调用失败",u)}n=""}else o&&(n=o)})}catch(e){(null==e?void 0:e.code)!==20&&i.handleError(A,`模型调用失败:${e.message}`,e.code);break}}),function(A){return l.apply(this,arguments)}))})()}stop(A){var e,t;return null===(t=this.controllerMap[A])||void 0===t||null===(e=t.abort)||void 0===e||e.call(t),this.handleEnd(A)}constructor({handleStart:A,handleText:e,handleReferenceDoc:t,handleThink:n,handleEnd:i,handleError:o}){w(this,"handleStart",void 0),w(this,"handleText",void 0),w(this,"handleReferenceDoc",void 0),w(this,"handleThink",void 0),w(this,"handleEnd",void 0),w(this,"handleError",void 0),w(this,"controllerMap",void 0),this.handleStart=A,this.handleText=e,this.handleReferenceDoc=t,this.handleThink=n,this.handleEnd=i,this.handleError=o,this.controllerMap={}}}let k=({handleStart:A,handleText:i,handleReferenceDoc:o,handleThink:l,handleEnd:r,handleError:d,requestOptions:c}={})=>{let u="内容正在生成中...",h=(0,a.ref)(),v=(0,a.ref)({}),f=(0,a.ref)([]),Q={},w=(0,a.computed)(()=>{let A=[];for(let n=f.value.length-1;n>=0;n--){let i=f.value[n],o=n+1,l=f.value[o];for(;l&&![t.Ai,t.TokenExpired,t.ImageNotSupported,t.Pause,t.Guide].includes(l.role);)o+=1,l=f.value[o];if(i.role===t.System)break;i.status===e.Fail||(null==l?void 0:l.status)===e.Fail&&[t.User,t.UserImage].includes(i.role)||[t.Time,t.System].includes(i.role)||A.unshift(i)}return A}),k=(0,a.computed)(()=>{var A;let e=null===(A=h.value)||void 0===A?void 0:A.sessionCode;return!!e&&v.value[e]}),C=(0,a.computed)(()=>{var A,e,n;let i=[],o=[],l=[],a=f.value.findLastIndex(A=>A.role===t.System&&["已启用角色","已启用模型"].some(e=>A.content.includes(e))),r=0;null===(n=h.value)||void 0===n||null===(e=n.roleInfo)||void 0===e||null===(A=e.content)||void 0===A||A.forEach(A=>{let e=f.value[a+1+r],n=f.value[a+2+r];if((null==e?void 0:e.content)===A.content&&e.role!==t.System&&(i.push(s(e)),r+=1,(null==e?void 0:e.role)===t.Pause)){for(;n&&n.role===t.System;)r+=1,n=f.value[a+1+r];for(;n&&[t.User,t.UserImage].includes(n.role);)i.push(s(n)),r+=1,n=f.value[a+1+r]}}),o.push(...w.value.map(s));let d=A=>{let e=!0;for(let n=A;n<i.length;n++){var t;i[n].content!==(null===(t=o[n-A])||void 0===t?void 0:t.content)&&(e=!1)}return e};for(let A=0;A<i.length;A++){let e=i[A];if(d(A))break;l.push(e)}return l.push(...o),l.forEach(A=>{A.content=m(A.content),A.content=g(A.content)}),l}),y=new b({handleStart:R,handleText:function(A,t,n){let o=I(A);if(o.content===u)o.content=t;else{if(o.status!==e.Loading)return;o.content=n?t:o.content+t}return null==i?void 0:i(A,o)},handleReferenceDoc:function(A,e,t){let n=I(A),i=B(e);return n.content=t?i:n.content+i,null==o?void 0:o(A,n)},handleThink:function(A,e,t,n){let i=I(A);return i.content=p(i.content,e,t,n),null==l?void 0:l(A,i)},handleEnd:function(A,t){let n=I(A);if(n.status===e.Loading)return v.value[A]=!1,t&&(n.content=t),n.status=e.Success,null==r?void 0:r(A,n);(n.content===u||E(n.content))&&D(A,"聊天内容已中断")},handleError:D});function I(A){var e,t;return(null===(e=h.value)||void 0===e?void 0:e.sessionCode)===A?f.value.at(-1):null===(t=Q[A])||void 0===t?void 0:t.at(-1)}function G(A){var e;return(null===(e=h.value)||void 0===e?void 0:e.sessionCode)===A?f.value:Q[A]}function x(A,e){G(A).push(e)}function Y(A,e,n){var i;let o=(null===(i=h.value)||void 0===i?void 0:i.sessionCode)===A?f.value:Q[A],l=[];return e.forEach(A=>{let e=o.findIndex(e=>e.id===A);if(e>-1){let i=o[e-1],s=o[e+1],a=o[e+2];if(o.splice(e,1),l.push(A),[t.Hidden].includes(null==i?void 0:i.role)){let A=o.findIndex(A=>A.id===i.id);o.splice(A,1),l.push(i.id)}if((null==s?void 0:s.role)===t.Ai||n&&[t.Ai,t.Guide,t.TokenExpired,t.ImageNotSupported,t.Pause].includes(null==s?void 0:s.role)){let A=o.findIndex(A=>A.id===s.id);o.splice(A,1),l.push(s.id)}if([t.Guide].includes(null==a?void 0:a.role)&&n){let A=o.findIndex(A=>A.id===a.id);o.splice(A,1),l.push(a.id)}}}),l}function R(n){v.value[n]=!0;let i={sessionCode:n,role:t.Ai,status:e.Loading,content:u};return x(n,i),null==A?void 0:A(n,i)}function D(A,i,o){let l=I(A);return l.status=e.Fail,l.content=i,v.value[A]=!1,o===n.TokenExpired&&(l.content="抱歉,您的剩余 Token 不足,无法返回回答内容,请先清空当前会话(上下文仍会作为历史记录保留))",l.role=t.TokenExpired),o===n.ImageNotSupported&&(l.content="抱歉,当前模型不支持图片内容解析",l.role=t.ImageNotSupported),null==d?void 0:d(A,l,o)}function F(A,n){var i,o,l;if(!(null===(i=h.value)||void 0===i?void 0:i.sessionCode)||!(null==c?void 0:c.url)||k.value)return;let{message:s,cite:a,shortcut:r}=A,d="";d=r?r.prompt.replace("{ SELECTED_TEXT }",a):a?`${s}: "${a}"`:s,f.value.push({sessionCode:null===(o=h.value)||void 0===o?void 0:o.sessionCode,content:s,role:t.User,status:e.Success,cite:a}),y.stream({sessionCode:null===(l=h.value)||void 0===l?void 0:l.sessionCode,url:c.url,headers:null==c?void 0:c.headers,data:{inputs:{chat_history:C.value.slice(0,C.value.length-1),input:d}}}),null==n||n()}return{currentSession:h,sessionContents:f,sessionContentsMap:Q,sessionLoadingMap:v,prompts:C,currentSessionLoading:k,chat:function({sessionCode:A,data:e,url:t,headers:n}){y.stream({sessionCode:A,url:t,data:e,headers:n||(null==c?void 0:c.headers)})},sendChat:F,stopChat:function(A){y.stop(A)},plusSessionContent:x,updateSessionContent:function(A){var e;let t=((null===(e=h.value)||void 0===e?void 0:e.sessionCode)===A.sessionCode?f.value:Q[A.sessionCode]).find(e=>+(e.id||0)==+(A.id||0));t&&Object.assign(t,A)},getSessionContentById:function(A,e){return G(e).find(e=>e.id===A)},getLastSessionContentBySessionCode:I,getSessionContentsBySessionCode:G,setCurrentSession:function(A){h.value=A,(null==A?void 0:A.sessionCode)&&(Q[A.sessionCode]||(Q[A.sessionCode]=[]),f.value=Q[A.sessionCode])},setSessionContents:function(A){h.value&&(Q[h.value.sessionCode]=A,f.value=A)},deleteSessionContent:function(A,e){return Y(A,[e],!0)},deleteSessionContents:function(A,e){return Y(A,e,!1)},handleStartChat:R,handleErrorChat:D,reGenerateChat:function(A){if(f.value[A].role!==t.Ai)return;let e=f.value[A-1].content,n=f.value[A-1].cite;f.value.splice(A-1,2),F({message:e,cite:n})},reSendChat:function(A,{message:e,cite:n},i){f.value[A].role===t.User&&(f.value.splice(A,f.value.length-A),F({message:e,cite:n},i))},deleteChat:function(A){if(f.value[A].role===t.User){f.value.splice(A,2);return}f.value.splice(A-1,2)}}},C=({handleStart:e,handleEnd:t,handleError:n}={})=>{let i="",o=new b({handleStart:()=>(i="",null==e?void 0:e()),handleText:(A,e,t)=>{t||"正在思考..."===i?i=e:i+=e},handleEnd:()=>("无话可说"===i&&(i=""),null==t?void 0:t(i)),handleError:(A,e,t)=>null==n?void 0:n(e,t)});return{summary:({content:e,url:t,headers:n,model:i})=>{let l=m(g(e)),s=[{role:A.User,content:`你是一个总结大师,请帮助我对下面这段话进行总结。要求总结精炼,不超过 15 个字!且末尾没有标点符号!请注意:如果你无法总结,请回复“无话可说”!
246
+ }`;(A=document.createElement("style")).textContent=e,document.head.appendChild(A)},t=()=>{A&&(A.remove(),A=null)};(0,a.onBeforeMount)(()=>{e()}),(0,a.onBeforeUnmount)(()=>{t()})};function Q(A,e,t,n,i,o,l){try{var s=A[o](l),a=s.value}catch(A){t(A);return}s.done?e(a):Promise.resolve(a).then(n,i)}function w(A){return function(){var e=this,t=arguments;return new Promise(function(n,i){var o=A.apply(e,t);function l(A){Q(o,n,i,l,s,"next",A)}function s(A){Q(o,n,i,l,s,"throw",A)}l(void 0)})}}function b(A,e,t){return e in A?Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):A[e]=t,A}class k{stream({sessionCode:A,url:e,headers:t,data:n}){var i=this;return w(function*(){var o,l;yield null===(o=i.handleStart)||void 0===o?void 0:o.call(i,A);let s=new AbortController;i.controllerMap[A]=s,fetch(e,{method:"post",signal:s.signal,headers:function(A){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(A){return Object.getOwnPropertyDescriptor(t,A).enumerable}))),n.forEach(function(e){b(A,e,t[e])})}return A}({"Content-Type":"application/json"},t),mode:"cors",credentials:"include",body:JSON.stringify(n)}).then((l=w(function*(e){let t=e.body.pipeThrough(new window.TextDecoderStream).getReader(),n="";for(;;)try{let{value:o,done:l}=yield t.read();if(!e.ok){i.handleError(A,o||e.statusText,e.status);break}if(l){i.handleEnd(A);break}(n+o.toString()).split("\n").forEach(t=>{let o=t.replace("data:","").trim();if(d(o)){var l,s;let{event:t,content:a,cover:r,documents:d,result:c,code:u,elapsed_time:B,message:g}=JSON.parse(o);if(!1===c||200!==e.status){i.handleError(A,g||"模型调用失败",u);return}switch(t){case"text":i.handleText(A,a,r);break;case"reference_doc":null===(l=i.handleReferenceDoc)||void 0===l||l.call(i,A,d,r);break;case"think":null===(s=i.handleThink)||void 0===s||s.call(i,A,a,r,B);break;case"done":i.handleEnd(A,r?a:"");break;case"error":i.handleError(A,g||"模型调用失败",u)}n=""}else o&&(n=o)})}catch(e){(null==e?void 0:e.code)!==20&&i.handleError(A,`模型调用失败:${e.message}`,e.code);break}}),function(A){return l.apply(this,arguments)}))})()}stop(A){var e,t;return null===(t=this.controllerMap[A])||void 0===t||null===(e=t.abort)||void 0===e||e.call(t),this.handleEnd(A)}constructor({handleStart:A,handleText:e,handleReferenceDoc:t,handleThink:n,handleEnd:i,handleError:o}){b(this,"handleStart",void 0),b(this,"handleText",void 0),b(this,"handleReferenceDoc",void 0),b(this,"handleThink",void 0),b(this,"handleEnd",void 0),b(this,"handleError",void 0),b(this,"controllerMap",void 0),this.handleStart=A,this.handleText=e,this.handleReferenceDoc=t,this.handleThink=n,this.handleEnd=i,this.handleError=o,this.controllerMap={}}}let C=({handleStart:A,handleText:i,handleReferenceDoc:o,handleThink:l,handleEnd:r,handleError:d,requestOptions:c}={})=>{let B="内容正在生成中...",p=(0,a.ref)(),f=(0,a.ref)({}),Q=(0,a.ref)([]),w={},b=(0,a.computed)(()=>{let A=[];for(let n=Q.value.length-1;n>=0;n--){let i=Q.value[n],o=n+1,l=Q.value[o];for(;l&&![t.Ai,t.TokenExpired,t.ImageNotSupported,t.Pause,t.Guide].includes(l.role);)o+=1,l=Q.value[o];if(i.role===t.System)break;i.status===e.Fail||(null==l?void 0:l.status)===e.Fail&&[t.User,t.UserImage].includes(i.role)||[t.Time,t.System].includes(i.role)||A.unshift(i)}return A}),C=(0,a.computed)(()=>{var A;let e=null===(A=p.value)||void 0===A?void 0:A.sessionCode;return!!e&&f.value[e]}),y=(0,a.computed)(()=>{var A,e,n;let i=[],o=[],l=[],a=Q.value.findLastIndex(A=>A.role===t.System&&["已启用角色","已启用模型"].some(e=>A.content.includes(e))),r=0;null===(n=p.value)||void 0===n||null===(e=n.roleInfo)||void 0===e||null===(A=e.content)||void 0===A||A.forEach(A=>{let e=Q.value[a+1+r],n=Q.value[a+2+r];if((null==e?void 0:e.content)===A.content&&e.role!==t.System&&(i.push(s(e)),r+=1,(null==e?void 0:e.role)===t.Pause)){for(;n&&n.role===t.System;)r+=1,n=Q.value[a+1+r];for(;n&&[t.User,t.UserImage].includes(n.role);)i.push(s(n)),r+=1,n=Q.value[a+1+r]}}),o.push(...b.value.map(s));let d=A=>{let e=!0;for(let n=A;n<i.length;n++){var t;i[n].content!==(null===(t=o[n-A])||void 0===t?void 0:t.content)&&(e=!1)}return e};for(let A=0;A<i.length;A++){let e=i[A];if(d(A))break;l.push(e)}return l.push(...o),l.forEach(A=>{A.content=E(A.content),A.content=h(A.content)}),l}),I=new k({handleStart:D,handleText:function(A,t,n){let o=G(A);if(o.content===B)o.content=t;else{if(o.status!==e.Loading)return;o.content=n?t:o.content+t}return null==i?void 0:i(A,o)},handleReferenceDoc:function(A,e,t){let n=G(A),i=g(e);return n.content=t?i:n.content+i,null==o?void 0:o(A,n)},handleThink:function(A,e,t,n){let i=G(A);return i.content=m(i.content,e,t,n),null==l?void 0:l(A,i)},handleEnd:function(A,t){let n=G(A);if(n.status===e.Loading)return f.value[A]=!1,t&&(n.content=t),n.status=e.Success,null==r?void 0:r(A,n);(n.content===B||v(n.content))&&F(A,"聊天内容已中断")},handleError:F});function G(A){var e,t;return(null===(e=p.value)||void 0===e?void 0:e.sessionCode)===A?Q.value.at(-1):null===(t=w[A])||void 0===t?void 0:t.at(-1)}function x(A){var e;return(null===(e=p.value)||void 0===e?void 0:e.sessionCode)===A?Q.value:w[A]}function Y(A,e){x(A).push(e)}function R(A,e,n){var i;let o=(null===(i=p.value)||void 0===i?void 0:i.sessionCode)===A?Q.value:w[A],l=[];return e.forEach(A=>{let e=o.findIndex(e=>e.id===A);if(e>-1){let i=o[e-1],s=o[e+1],a=o[e+2];if(o.splice(e,1),l.push(A),[t.Hidden].includes(null==i?void 0:i.role)){let A=o.findIndex(A=>A.id===i.id);o.splice(A,1),l.push(i.id)}if((null==s?void 0:s.role)===t.Ai||n&&[t.Ai,t.Guide,t.TokenExpired,t.ImageNotSupported,t.Pause].includes(null==s?void 0:s.role)){let A=o.findIndex(A=>A.id===s.id);o.splice(A,1),l.push(s.id)}if([t.Guide].includes(null==a?void 0:a.role)&&n){let A=o.findIndex(A=>A.id===a.id);o.splice(A,1),l.push(a.id)}}}),l}function D(n){f.value[n]=!0;let i={sessionCode:n,role:t.Ai,status:e.Loading,content:B};return Y(n,i),null==A?void 0:A(n,i)}function F(A,i,o){let l=G(A);return l.status=e.Fail,l.content=i,f.value[A]=!1,o===n.TokenExpired&&(l.content="抱歉,您的剩余 Token 不足,无法返回回答内容,请先清空当前会话(上下文仍会作为历史记录保留))",l.role=t.TokenExpired),o===n.ImageNotSupported&&(l.content="抱歉,当前模型不支持图片内容解析",l.role=t.ImageNotSupported),null==d?void 0:d(A,l,o)}function M(A,n){var i,o,l;if(!(null===(i=p.value)||void 0===i?void 0:i.sessionCode)||!(null==c?void 0:c.url)||C.value)return;let{message:s,cite:a,shortcut:r}=A,d="";d=r?u(r.prompt,a):a?`${s}: "${a}"`:s,Q.value.push({sessionCode:null===(o=p.value)||void 0===o?void 0:o.sessionCode,content:s,role:t.User,status:e.Success,cite:a}),I.stream({sessionCode:null===(l=p.value)||void 0===l?void 0:l.sessionCode,url:c.url,headers:null==c?void 0:c.headers,data:{inputs:{chat_history:y.value.slice(0,y.value.length-1),input:d}}}),null==n||n()}return{currentSession:p,sessionContents:Q,sessionContentsMap:w,sessionLoadingMap:f,prompts:y,currentSessionLoading:C,chat:function({sessionCode:A,data:e,url:t,headers:n}){I.stream({sessionCode:A,url:t,data:e,headers:n||(null==c?void 0:c.headers)})},sendChat:M,stopChat:function(A){I.stop(A)},plusSessionContent:Y,updateSessionContent:function(A){var e;let t=((null===(e=p.value)||void 0===e?void 0:e.sessionCode)===A.sessionCode?Q.value:w[A.sessionCode]).find(e=>+(e.id||0)==+(A.id||0));t&&Object.assign(t,A)},getSessionContentById:function(A,e){return x(e).find(e=>e.id===A)},getLastSessionContentBySessionCode:G,getSessionContentsBySessionCode:x,setCurrentSession:function(A){p.value=A,(null==A?void 0:A.sessionCode)&&(w[A.sessionCode]||(w[A.sessionCode]=[]),Q.value=w[A.sessionCode])},setSessionContents:function(A){p.value&&(w[p.value.sessionCode]=A,Q.value=A)},deleteSessionContent:function(A,e){return R(A,[e],!0)},deleteSessionContents:function(A,e){return R(A,e,!1)},handleStartChat:D,handleErrorChat:F,reGenerateChat:function(A){if(Q.value[A].role!==t.Ai)return;let e=Q.value[A-1].content,n=Q.value[A-1].cite;Q.value.splice(A-1,2),M({message:e,cite:n})},reSendChat:function(A,{message:e,cite:n},i){Q.value[A].role===t.User&&(Q.value.splice(A,Q.value.length-A),M({message:e,cite:n},i))},deleteChat:function(A){if(Q.value[A].role===t.User){Q.value.splice(A,2);return}Q.value.splice(A-1,2)}}},y=({handleStart:e,handleEnd:t,handleError:n}={})=>{let i="",o=new k({handleStart:()=>(i="",null==e?void 0:e()),handleText:(A,e,t)=>{t||"正在思考..."===i?i=e:i+=e},handleEnd:()=>("无话可说"===i&&(i=""),null==t?void 0:t(i)),handleError:(A,e,t)=>null==n?void 0:n(e,t)});return{summary:({content:e,url:t,headers:n,model:i})=>{let l=E(h(e)),s=[{role:A.User,content:`你是一个总结大师,请帮助我对下面这段话进行总结。要求总结精炼,不超过 15 个字!且末尾没有标点符号!请注意:如果你无法总结,请回复“无话可说”!
247
247
  文字如下:
248
- ${l}`}];o.stream({sessionCode:"summary",url:t,data:{prompts:s,model:i},headers:n})}}},y=()=>{i(86),i(84),h(),v()},I=l.default;if("undefined"!=typeof window){let{currentScript:A}=window.document,e=A&&A.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);e&&(i.p=e[1])}})(),o})());
248
+ ${l}`}];o.stream({sessionCode:"summary",url:t,data:{prompts:s,model:i},headers:n})}}},I=()=>{i(86),i(84),p(),f()},G=l.default;if("undefined"!=typeof window){let{currentScript:A}=window.document,e=A&&A.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);e&&(i.p=e[1])}})(),o})());
@@ -74,3 +74,7 @@ export interface ShortCut {
74
74
  prompt: string;
75
75
  icon?: string;
76
76
  }
77
+ export type ISendChat = {
78
+ content: BasicChatContent | ShortcutChatContent;
79
+ callback?: () => void;
80
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blueking/ai-ui-sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.7-beta.1",
4
4
  "description": "蓝鲸AI UI SDK",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",
@@ -15,8 +15,10 @@
15
15
  "license": "ISC",
16
16
  "dependencies": {
17
17
  "@blueking/cli-service-webpack": "0.0.7-beta.1",
18
- "bkui-vue": "^2.0.1-beta.100",
19
- "vue": "^3.5.13"
18
+ "bkui-vue": "^2.0.1-beta.100"
19
+ },
20
+ "peerDependencies": {
21
+ "vue": "^3.0.0"
20
22
  },
21
23
  "devDependencies": {
22
24
  "typescript": "^5.5.4"