@core-pilot/sdk 0.0.0-beta.2 → 0.0.0-beta.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/dist/index.css +1 -1
- package/dist/index.js +368 -256
- package/dist/index.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`),require(`@core-pilot/client-vue`),require(`@microsoft/fetch-event-source`),require(`axios`)):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@core-pilot/client-vue`,`@microsoft/fetch-event-source`,`axios`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.CorePilotSDK={},e.Vue,e.CorePilotClientVue,e.FetchEventSource,e.axios))})(this,function(e,t,n,r,i){var a=Object.create,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=c(t),a=0,l=i.length,d;a<l;a++)d=i[a],!u.call(e,d)&&d!==n&&o(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=s(t,d))||r.enumerable});return e};i=((e,t,n)=>(n=e==null?{}:a(l(e)),d(t||!e||!e.__esModule?o(n,`default`,{value:e,enumerable:!0}):n,e)))(i);function f(e){return e.map(e=>{if(typeof e==`string`)return e;if(e instanceof Error)return e.stack||e.message;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `)}function p(e,t,n){let r=`[CorePilot]`,i=[],a=null,o=n?.batchSize??20,s=n?.flushInterval??15e3,c=()=>{if(!n||i.length===0)return;let t=[...i];i=[],e&&console.log(`${r} Uploading ${t.length} log(s) to ${n.url}`);let a=JSON.stringify(t);navigator.sendBeacon?navigator.sendBeacon(n.url,a):fetch(n.url,{method:`POST`,body:a,headers:{"Content-Type":`application/json`},keepalive:!0}).catch(n=>{e&&(console.error(`${r} Log upload failed:`,n),i.unshift(...t))})},l=(e,...r)=>{n&&(i.push({level:e,timestamp:new Date().toISOString(),message:f(r),appId:t}),i.length>=o&&(a&&clearTimeout(a),c(),a=window.setTimeout(c,s)))};return n&&(a=window.setTimeout(c,s)),{log(...t){e&&console.log(r,...t),l(`log`,...t)},error(...t){e&&console.error(r,...t),l(`error`,...t)},destroy(){a&&clearTimeout(a),c()}}}function m(e,t){let n=``;return{async getToken(){if(e.mode===`client`){if(!e.token)throw Error(`AuthManager: Missing token in client mode`);return n=e.token,n}if(e.mode===`server`)return n||=await new Promise(e=>setTimeout(()=>{e(`9269ca5c-5b35-46de-915f-b2e3ff41da13`)},1e3)),n;throw Error(`AuthManager: Invalid configuration or missing token.`)}}}var h=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a};let g=(e=>e?h(e):h)(e=>({currentMessage:void 0,isLoading:!1,updateMessage:t=>e(e=>e.currentMessage?{currentMessage:{...e.currentMessage,content:e.currentMessage.content+(t.content||``)}}:{currentMessage:t}),setLoading:t=>e({isLoading:t}),resetCurrentMessage:()=>e({currentMessage:void 0})}));var _=0,v=`text/event-stream`,y=class extends Error{constructor(e){super(e),this.name=`FatalError`}};let b=function(e,t){let{url:n,config:i={}}=e,a=new AbortController;function o(){t.onCancel(g.getState().currentMessage,a),g.getState().setLoading(!1),g.getState().resetCurrentMessage()}function s(e){let n=t.onMessage(e);n.event===`message`&&g.getState().updateMessage({taskId:n.task_id,messageId:n.message_id,conversationId:n.conversation_id,role:`ai`,content:n.answer})}function c(){g.getState().setLoading(!0),t.onOpen()}function l(){g.getState().setLoading(!1),g.getState().resetCurrentMessage(),t.onClose()}let u=Math.max(_-1,0);return(0,r.fetchEventSource)(n,{...i,signal:a.signal,openWhenHidden:!0,onmessage:s,onclose:l,onopen:async e=>{let t=e.headers.get(`content-type`);if(!t||!t.includes(v))throw Error(`Expected content-type to be ${v}, Actual: ${t}`);c()},onerror:e=>{if(u--,u<0&&(l(),e instanceof TypeError))throw new y(e.message);t.onError(e)}}).catch(e=>{l(),t.onError(e)}),{cancel:o}},x=(0,t.defineComponent)({props:{adapter:{type:Object,required:!0},hitlManager:{type:Object,required:!0},logger:{type:Object,required:!0},provider:{type:String,required:!0}},setup(e){let n=(0,t.ref)([]),r=(0,t.ref)([]),i=(0,t.ref)(),a=(0,t.ref)(!1),o=(0,t.ref)(),s=g.subscribe(e=>{let{currentMessage:t,isLoading:n}=e;c(t),a.value=n}),c=e=>{if(e){if(i.value){i.value.content=e.content||``;return}i.value={...e,role:`ai`,showActions:!1,maxWidth:`100%`},r.value.push(i.value)}},l=()=>{i.value=void 0};return(0,t.onBeforeUnmount)(()=>{s?.()}),{messages:r,isLoading:a,handleSendMessage:async t=>{let n={messageId:crypto.randomUUID(),content:t.text,role:`user`,placement:`end`,showActions:!1,maxWidth:`100%`};r.value.push(n),l(),o.value=b(await e.adapter.formatReuqest({text:t.text,prevMessage:r.value[r.value.length-1]}),e.adapter).cancel},cancelHandler:()=>{e.logger.log(`Cancel handler called`),o.value?.(),l()},tagList:n,coreSubmit:async(t,n)=>{l(),await e.hitlManager.submit({hitlData:t,prevMessage:n})}}},render(){return(0,t.createVNode)(`div`,{class:`core-pilot-host`},[(0,t.createVNode)(n.BubbleList,{list:this.messages,onCoreSubmit:this.coreSubmit},null),(0,t.createVNode)(n.EditorSender,{tagList:this.tagList,loading:this.isLoading,agentName:``,onSubmit:this.handleSendMessage,onCancel:this.cancelHandler},null)])}});function S(e,n,r,i,a){let o=null,s=null,c=()=>{let t=(e.container||document).querySelector(e.selector);if(t&&!t.querySelector(`[data-corepilot-host]`)){let e=document.createElement(`div`);return e.setAttribute(`data-corepilot-host`,`true`),e.style.width=`100%`,e.style.height=`100%`,t.appendChild(e),e}return t?.querySelector(`[data-corepilot-host]`)};return{mount(){if(s=c(),!s){i.error(`Mount point "${e.selector}" not found or already in use.`);return}o&&(i.log(`An app instance already exists. Unmounting first.`),this.unmount()),o=(0,t.createApp)(x,{adapter:n,hitlManager:r,logger:i,provider:a}),o.mount(s),i.log(`Vue CorePilotHost mounted.`)},unmount(){o&&(o.unmount(),o=null,i.log(`Vue CorePilotHost unmounted.`)),s&&s.parentElement&&(s.parentElement.innerHTML=``)}}}var C=class extends Error{constructor(e,t,n,r){super(e),this.name=`HttpError`,this.code=t,this.data=n,this.originalError=r}},w=new class{constructor(e){this.instance=i.default.create({timeout:3e4,headers:{"Content-Type":`application/json;charset=utf-8`},withCredentials:!0,...e}),this.setupInterceptors()}setupInterceptors(){this.instance.interceptors.response.use(e=>e.data,e=>Promise.reject(this.handleError(e)))}handleError(e){let t=`请求失败,请稍后重试`,n=-1,r=null;if(i.default.isAxiosError(e))if(e.response)switch(n=e.response.status,r=e.response.data,n){case 400:t=`请求参数错误`;break;case 401:t=`未授权,请重新登录`;break;case 403:t=`拒绝访问`;break;case 404:t=`请求资源不存在`;break;case 405:t=`请求方法不允许`;break;case 408:t=`请求超时`;break;case 500:t=`服务器内部错误`;break;case 501:t=`服务未实现`;break;case 502:t=`网关错误`;break;case 503:t=`服务不可用`;break;case 504:t=`网关超时`;break;default:t=e.response.statusText||`连接错误 ${n}`}else e.request?(t=`网络连接失败,请检查网络设置`,n=0):t=e.message;else t=e.message||`未知错误`;return console.error(`[HttpClient] Error: ${t}`,{code:n,data:r,original:e}),new C(t,n,r,e)}get(e,t){return this.instance.get(e,t)}post(e,t,n){return this.instance.post(e,t,n)}put(e,t,n){return this.instance.put(e,t,n)}delete(e,t){return this.instance.delete(e,t)}patch(e,t,n){return this.instance.patch(e,t,n)}upload(e,t,n=`file`,r){let i=new FormData;return i.append(n,t),this.instance.post(e,i,{...r,headers:{...r?.headers,"Content-Type":`multipart/form-data`}})}getAxiosInstance(){return this.instance}}({});function T(e,t,n){let{baseUrl:r,appId:i}=e,a=async(e,n)=>{let r=e.taskId,a=await t.getToken();return await w.post(`/openapi/v1/app/chat-messages/${r}/stop`,{user:`abc-123`},{headers:{Authorization:`Bearer ${a}`,appId:i}}),Promise.resolve()},o=async e=>{let n=e.messageId,r=await t.getToken(),a=await w.post(`/openapi/v1/app/chat-messages/${n}/suggested`,{user:`abc-123`},{headers:{Authorization:`Bearer ${r}`,appId:i}});return a.result===`success`?a.data:[]},s=async e=>{let n=await t.getToken();return await w.get(`/openapi/v1/app/conversations?${new URLSearchParams(e).toString()}`,{headers:{Authorization:`Bearer ${n}`,appId:i}})},c=async e=>(await t.getToken(),await w.get(`/openapi/v1/app/chat-messages?${new URLSearchParams(e).toString()}`));return{formatReuqest:async e=>{let{hitlData:n,prevMessage:r,text:a}=e,o={query:a||JSON.stringify(n||{}),inputs:{name:`dify`},response_mode:`streaming`,conversation_id:r?.conversationId||null,user:`abc-123`,files:[]},s=await t.getToken();return{url:`/openapi/v1/app/chat-messages`,config:{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${s}`,appId:i},body:JSON.stringify(o)}}},getSuggestionQuestions:o,getConversationList:s,getMessageHistory:c,onMessage:e=>{let{data:t}=e;return JSON.parse(t)},onClose:async()=>{n.log(`onClose`)},onError:async e=>{n.log(`onError`,e)},onOpen:async()=>{n.log(`onOpen`)},onCancel:a,triggerEvent:async e=>{switch(e.action){case`get_suggestion_questions`:return await o(e.payload);case`get_conversation_list`:return await s(e.payload);case`get_message_history`:return await c(e.payload);default:throw Error(`Invalid event action.`)}}}}function E(e,t,n,r){switch(r.log(`Creating adapter for provider: ${t}`),t){case`coreagent`:return T(e,n,r);default:throw Error(`Unsupported provider: ${t}`)}}function D(e,t,n){let r=e=>e.split(`_`)[0],i=[],a=async t=>{let r=await e.formatReuqest(t);b({url:r.url,config:r.config},e),n.log(`HITL data submitted successfully.`)},o=async e=>{i.forEach(t=>t(e))},s=async e=>{};return{async submit(e){try{let t=r(e.hitlData?.action??``);switch(n.log(`Submitting HITL data...`,e),t){case`core`:await a(e);break;case`cust`:await o(e);break;case`inner`:await s(e);break;default:throw Error(`Invalid action type.`)}}catch(e){throw n.error(`Error submitting HITL data:`,e),e}},subscribeEvent(e){i.includes(e)||i.push(e)},unsubscribeEvent(e){i.splice(i.indexOf(e),1)}}}function O(e){if(!e.appId)throw Error("CorePilot SDK: `appId` is required.");if(!e.mount.selector)throw Error("CorePilot SDK: `mount.selector` is required.");let t=p(e.debug??!1,e.appId,e.eventTracker);t.log(`CorePilot SDK Initializing...`,e);let n={...e},r=m(n.auth,n.baseUrl),i=E(n,n.provider,r,t),a=D(i,r,t),o=S(n.mount,i,a,t,n.provider);return{mount(){t.log(`Mounting CorePilot UI...`),o.mount()},unmount(){t.log(`Unmounting CorePilot UI...`),o.unmount()},reload(e){t.log(`Reloading CorePilot instance...`,e),o.unmount(),n={...n,...e},i=E(n,n.provider,r,t);let s=S(n.mount,i,a,t,n.provider);o.mount=s.mount,o.unmount=s.unmount,t.log(`CorePilot reloaded. Remounting UI...`),o.mount()},destroy(){t.log(`Destroying CorePilot instance...`),o.unmount(),t.destroy()},async triggerEvent(e){return await i.triggerEvent(e)},subscribeEvent(e){a.subscribeEvent(e)},unsubscribeEvent(e){a.unsubscribeEvent(e)}}}typeof window<`u`&&(window.createCorePilot=O),e.createCorePilot=O});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`),require(`@core-pilot/client-vue`),require(`@microsoft/fetch-event-source`),require(`axios`)):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@core-pilot/client-vue`,`@microsoft/fetch-event-source`,`axios`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.CorePilotSDK={},e.Vue,e.CorePilotClientVue,e.FetchEventSource,e.axios))})(this,function(e,t,n,r,i){var a=Object.create,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=c(t),a=0,l=i.length,d;a<l;a++)d=i[a],!u.call(e,d)&&d!==n&&o(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=s(t,d))||r.enumerable});return e};i=((e,t,n)=>(n=e==null?{}:a(l(e)),d(t||!e||!e.__esModule?o(n,`default`,{value:e,enumerable:!0}):n,e)))(i);function f(e){return e.map(e=>{if(typeof e==`string`)return e;if(e instanceof Error)return e.stack||e.message;try{return JSON.stringify(e)}catch{return String(e)}}).join(` `)}function p(e,t,n){let r=`[CorePilot]`,i=[],a=null,o=n?.batchSize??20,s=n?.flushInterval??15e3,c=()=>{if(!n||i.length===0)return;let t=[...i];i=[],e&&console.log(`${r} Uploading ${t.length} log(s) to ${n.url}`);let a=JSON.stringify(t);navigator.sendBeacon?navigator.sendBeacon(n.url,a):fetch(n.url,{method:`POST`,body:a,headers:{"Content-Type":`application/json`},keepalive:!0}).catch(n=>{e&&(console.error(`${r} Log upload failed:`,n),i.unshift(...t))})},l=(e,...r)=>{n&&(i.push({level:e,timestamp:new Date().toISOString(),message:f(r),appId:t}),i.length>=o&&(a&&clearTimeout(a),c(),a=window.setTimeout(c,s)))};return n&&(a=window.setTimeout(c,s)),{log(...t){e&&console.log(r,...t),l(`log`,...t)},error(...t){e&&console.error(r,...t),l(`error`,...t)},destroy(){a&&clearTimeout(a),c()}}}function m(e,t){let n=``;return{async getToken(){if(e.mode===`client`){if(!e.token)throw Error(`AuthManager: Missing token in client mode`);return n=e.token,n}if(e.mode===`server`)return n||=await new Promise(e=>setTimeout(()=>{e(`9269ca5c-5b35-46de-915f-b2e3ff41da13`)},1e3)),n;throw Error(`AuthManager: Invalid configuration or missing token.`)}}}var h=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a};let g=(e=>e?h(e):h)(e=>({currentMessage:void 0,isLoading:!1,messageHistory:[],updateMessage:t=>e(e=>{let n={...t,role:`ai`,showActions:!1,maxWidth:`100%`},r=[...e.messageHistory];if(r.forEach(e=>{e.isHistoryMessage=!0}),e.currentMessage){let i={...e.currentMessage,content:e.currentMessage.content+(t.content||``)};return r.pop(),r.push(n),{currentMessage:i,messageHistory:r}}return r.push(n),{currentMessage:n,messageHistory:r}}),setLoading:t=>e({isLoading:t}),resetCurrentMessage:()=>e({currentMessage:void 0}),resetMessageHistory:t=>e({messageHistory:t||[]}),updateMessageHistory:t=>e(e=>{let n=[...e.messageHistory];return n.forEach(e=>{e.isHistoryMessage=!0}),Array.isArray(t)?{messageHistory:[...n,...t]}:{messageHistory:[...n,t]}})}));var _=0,v=`text/event-stream`,y=class extends Error{constructor(e){super(e),this.name=`FatalError`}};let b=function(e,t){let{url:n,config:i={}}=e,a=new AbortController;function o(){t.onCancel(g.getState().currentMessage,a),g.getState().setLoading(!1),g.getState().resetCurrentMessage()}function s(e){let n=t.onMessage(e);n.event===`message`&&g.getState().updateMessage({taskId:n.task_id,messageId:n.message_id,conversationId:n.conversation_id,role:`ai`,content:n.answer})}function c(){g.getState().setLoading(!0),t.onOpen()}function l(){g.getState().setLoading(!1),g.getState().resetCurrentMessage(),t.onClose()}let u=Math.max(_-1,0);return(0,r.fetchEventSource)(n,{...i,signal:a.signal,openWhenHidden:!0,onmessage:s,onclose:l,onopen:async e=>{let t=e.headers.get(`content-type`);if(!t||!t.includes(v))throw Error(`Expected content-type to be ${v}, Actual: ${t}`);c()},onerror:e=>{if(u--,u<0&&(l(),e instanceof TypeError))throw new y(e.message);t.onError(e)}}).catch(e=>{l(),t.onError(e)}),{cancel:o}},x=(0,t.defineComponent)({props:{adapter:{type:Object,required:!0},hitlManager:{type:Object,required:!0},logger:{type:Object,required:!0},provider:{type:Object,required:!0}},setup(e){let n=(0,t.ref)([]),r=(0,t.ref)([]),i=(0,t.ref)(!1),a=(0,t.ref)(),o=(0,t.ref)(`ANC`),s=g.subscribe(e=>{let{isLoading:t,messageHistory:n}=e;r.value=n,i.value=t});return(0,t.onBeforeUnmount)(()=>{s?.()}),{messages:r,isLoading:i,handleSendMessage:async t=>{let n={messageId:void 0,content:t.text,role:`user`,placement:`end`,showActions:!1,maxWidth:`100%`};g.getState().updateMessageHistory([n]),g.getState().resetCurrentMessage(),a.value=b(await e.adapter.formatReuqest({text:t.text,prevMessage:r.value[r.value.length-1],inputs:{scene:o.value}}),e.adapter).cancel},cancelHandler:()=>{e.logger.log(`Cancel handler called`),a.value?.(),g.getState().resetCurrentMessage()},handleSceneChange:e=>{o.value=e.id},tagList:n,coreSubmit:async(t,n)=>{g.getState().resetCurrentMessage(),await e.hitlManager.submit({hitlData:t,prevMessage:n,inputs:{scene:o.value}})}}},render(){return(0,t.createVNode)(`div`,{class:`core-pilot-host`},[(0,t.createVNode)(n.BubbleList,{list:this.messages,onCoreSubmit:this.coreSubmit},null),(0,t.createVNode)(n.EditorSender,{tagList:this.tagList,loading:this.isLoading,agentName:``,onSubmit:this.handleSendMessage,onCancel:this.cancelHandler,onSceneChange:this.handleSceneChange},null)])}});function S(e,n,r,i,a){let o=null,s=null,c=()=>{let t=(e.container||document).querySelector(e.selector);if(t&&!t.querySelector(`[data-corepilot-host]`)){let e=document.createElement(`div`);return e.setAttribute(`data-corepilot-host`,`true`),e.style.width=`100%`,e.style.height=`100%`,t.appendChild(e),e}return t?.querySelector(`[data-corepilot-host]`)};return{mount(){if(s=c(),!s){i.error(`Mount point "${e.selector}" not found or already in use.`);return}o&&(i.log(`An app instance already exists. Unmounting first.`),this.unmount()),o=(0,t.createApp)(x,{adapter:n,hitlManager:r,logger:i,provider:a}),o.mount(s),i.log(`Vue CorePilotHost mounted.`)},unmount(){o&&(o.unmount(),o=null,i.log(`Vue CorePilotHost unmounted.`)),s&&s.parentElement&&(s.parentElement.innerHTML=``)}}}var C=class extends Error{constructor(e,t,n,r){super(e),this.name=`HttpError`,this.code=t,this.data=n,this.originalError=r}},w=new class{constructor(e){this.instance=i.default.create({timeout:3e4,headers:{"Content-Type":`application/json;charset=utf-8`},withCredentials:!0,...e}),this.setupInterceptors()}setupInterceptors(){this.instance.interceptors.response.use(e=>e.data,e=>Promise.reject(this.handleError(e)))}handleError(e){let t=`请求失败,请稍后重试`,n=-1,r=null;if(i.default.isAxiosError(e))if(e.response)switch(n=e.response.status,r=e.response.data,n){case 400:t=`请求参数错误`;break;case 401:t=`未授权,请重新登录`;break;case 403:t=`拒绝访问`;break;case 404:t=`请求资源不存在`;break;case 405:t=`请求方法不允许`;break;case 408:t=`请求超时`;break;case 500:t=`服务器内部错误`;break;case 501:t=`服务未实现`;break;case 502:t=`网关错误`;break;case 503:t=`服务不可用`;break;case 504:t=`网关超时`;break;default:t=e.response.statusText||`连接错误 ${n}`}else e.request?(t=`网络连接失败,请检查网络设置`,n=0):t=e.message;else t=e.message||`未知错误`;return console.error(`[HttpClient] Error: ${t}`,{code:n,data:r,original:e}),new C(t,n,r,e)}get(e,t){return this.instance.get(e,t)}post(e,t,n){return this.instance.post(e,t,n)}put(e,t,n){return this.instance.put(e,t,n)}delete(e,t){return this.instance.delete(e,t)}patch(e,t,n){return this.instance.patch(e,t,n)}upload(e,t,n=`file`,r){let i=new FormData;return i.append(n,t),this.instance.post(e,i,{...r,headers:{...r?.headers,"Content-Type":`multipart/form-data`}})}getAxiosInstance(){return this.instance}}({});function T(e,t,n){let{appId:r,provider:i}=e,{extensions:a}=i,{user:o=`default`}=a||{},s=async(e,n)=>{let i=e.taskId,a=await t.getToken();return await w.post(`/openapi/v1/app/chat-messages/${i}/stop`,{user:o},{headers:{Authorization:`Bearer ${a}`,appId:r}}),Promise.resolve()},c=async e=>{let n=e.messageId,i=await t.getToken(),a=await w.post(`/openapi/v1/app/chat-messages/${n}/suggested`,{user:o},{headers:{Authorization:`Bearer ${i}`,appId:r}});return a.result===`success`?a.data:[]},l=async e=>{let n=await t.getToken();return await w.get(`/openapi/v1/app/conversations?${new URLSearchParams(e).toString()}`,{headers:{Authorization:`Bearer ${n}`,appId:r}})},u=async e=>{let n=await t.getToken();return await w.get(`/openapi/v1/app/messages?${new URLSearchParams(e).toString()}`,{headers:{Authorization:`Bearer ${n}`,appId:r}})},d=async e=>{let{hitlData:n,prevMessage:i,text:a,inputs:s}=e,c={query:a||JSON.stringify(n||{}),inputs:s||{},response_mode:`streaming`,conversation_id:i?.conversationId||null,user:o,files:[]},l=await t.getToken();return{url:`/openapi/v1/app/chat-messages`,config:{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${l}`,appId:r},body:JSON.stringify(c)}}},f=e=>{let{data:t}=e;return JSON.parse(t)},p=async()=>{n.log(`onClose`)},m=async e=>{n.log(`onError`,e)},h=async()=>{n.log(`onOpen`)},_=async e=>{b(await d(e),{formatReuqest:d,getSuggestionQuestions:c,getConversationList:l,getMessageHistory:u,onMessage:f,onClose:p,onError:m,onOpen:h,onCancel:s})},v=async e=>{let t=[],n;if(e.data.forEach(e=>{e.parent_message_id===n?(t.pop(),t.push({role:`ai`,showActions:!1,content:e.answer,maxWidth:`100%`,files:e.message_files.map(e=>({id:e.id,extension:e.type,name:e.filename})),placement:`start`})):(n=e.parent_message_id,t.push({role:`user`,messageId:e.id,content:e.query,showActions:!1,maxWidth:`100%`,placement:`end`,isHistoryMessage:!0}),t.push({role:`ai`,content:e.answer,showActions:!1,maxWidth:`100%`,placement:`start`,files:e.message_files.map(e=>({id:e.id,extension:e.type,name:e.filename})),isHistoryMessage:!0}))}),e.has_more){let e=await u({conversation_id:t[t.length-1].conversationId,user:o,first_id:t[0].messageId});if(e.data){let n=await v(e);t.unshift(...n)}}return t},y=async()=>(g.getState().resetMessageHistory(),!0),x=async e=>{let t={messageId:void 0,content:e.text,role:`user`,placement:`end`,showActions:!1,maxWidth:`100%`};return g.getState().updateMessageHistory([t]),g.getState().resetCurrentMessage(),b(await d({text:e.text,prevMessage:void 0,inputs:e.inputs}),{formatReuqest:d,getSuggestionQuestions:c,getConversationList:l,getMessageHistory:u,onMessage:f,onClose:p,onError:m,onOpen:h,onCancel:s})};return{formatReuqest:d,getSuggestionQuestions:c,getConversationList:l,getMessageHistory:u,onMessage:f,onClose:p,onError:m,onOpen:h,onCancel:s,triggerEvent:async e=>{switch(e.action){case`get_suggestion_questions`:return await c(e.payload);case`get_conversation_list`:return await l(e.payload);case`get_message_history`:let t=await v(await u(e.payload));return g.getState().resetMessageHistory(t),t;case`submit_core_action`:return await _(e.payload);case`new_message`:return await y();case`submit_message`:return await x(e.payload);default:throw Error(`Invalid event action.`)}}}}function E(e,t,n,r){switch(r.log(`Creating adapter for provider: ${t}`),t.name){case`coreagent`:return T(e,n,r);default:throw Error(`Unsupported provider: ${t.name}`)}}function D(e,t,n){let r=e=>e.split(`_`)[0],i=[],a=async t=>{let r=await e.formatReuqest(t);b({url:r.url,config:r.config},e),n.log(`HITL data submitted successfully.`)},o=async e=>{i.forEach(t=>t(e))},s=async e=>{};return{async submit(e){try{let t=r(e.hitlData?.action??``);switch(n.log(`Submitting HITL data...`,e),t){case`core`:await a(e);break;case`cust`:await o(e);break;case`inner`:await s(e);break;default:throw Error(`Invalid action type.`)}}catch(e){throw n.error(`Error submitting HITL data:`,e),e}},subscribeEvent(e){i.includes(e)||i.push(e)},unsubscribeEvent(e){i.splice(i.indexOf(e),1)}}}function O(e){if(!e.appId)throw Error("CorePilot SDK: `appId` is required.");if(!e.mount.selector)throw Error("CorePilot SDK: `mount.selector` is required.");let t=p(e.debug??!1,e.appId,e.eventTracker);t.log(`CorePilot SDK Initializing...`,e);let n={...e},r=m(n.auth,n.baseUrl),i=E(n,n.provider,r,t),a=D(i,r,t),o=S(n.mount,i,a,t,n.provider);return{mount(){t.log(`Mounting CorePilot UI...`),o.mount()},unmount(){t.log(`Unmounting CorePilot UI...`),o.unmount()},reload(e){t.log(`Reloading CorePilot instance...`,e),o.unmount(),n={...n,...e},i=E(n,n.provider,r,t);let s=S(n.mount,i,a,t,n.provider);o.mount=s.mount,o.unmount=s.unmount,t.log(`CorePilot reloaded. Remounting UI...`),o.mount()},destroy(){t.log(`Destroying CorePilot instance...`),o.unmount(),t.destroy()},async triggerEvent(e){return await i.triggerEvent(e)},subscribeEvent(e){a.subscribeEvent(e)},unsubscribeEvent(e){a.unsubscribeEvent(e)}}}typeof window<`u`&&(window.createCorePilot=O),e.createCorePilot=O});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@core-pilot/sdk",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.0-beta.
|
|
4
|
+
"version": "0.0.0-beta.3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.umd.cjs",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"sass-embedded": "^1.93.3",
|
|
29
29
|
"vue": "^3.5.24",
|
|
30
30
|
"zustand": "^5.0.9",
|
|
31
|
-
"@core-pilot/client-vue": "0.0.
|
|
31
|
+
"@core-pilot/client-vue": "0.0.4"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^24.10.0",
|