@aikaara/chat-sdk 0.3.0 → 0.3.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/cdn/aikaara-chat.iife.js +233 -69
- package/dist/headless.cjs +1 -1
- package/dist/headless.d.ts +598 -1
- package/dist/headless.mjs +239 -69
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +209 -1
- package/dist/index.mjs +35 -33
- package/dist/ui-B0-Np9Dn.cjs +792 -0
- package/dist/ui-BMGa0gZH.mjs +13265 -0
- package/dist/ui.cjs +1 -621
- package/dist/ui.d.ts +300 -7
- package/dist/ui.mjs +16 -1232
- package/package.json +1 -1
- package/dist/AikaaraChatClient-Cqbcd1jb.mjs +0 -11538
- package/dist/AikaaraChatClient-kAu65hX-.cjs +0 -8
package/dist/headless.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./ui-B0-Np9Dn.cjs");class x extends s.EventEmitter{registration=null;pendingEdits=[];constructor(e){super(),this.setupListeners(e)}registerForm(e){this.registration=e;const r=this.pendingEdits.filter(i=>i.entity_type===e.entityType&&String(i.entity_id)===String(e.entityId));if(r.length>0){for(const i of r)e.onFieldUpdate(i.fields),this.emit("edit:applied",{entityType:i.entity_type,entityId:i.entity_id,fields:i.fields});this.pendingEdits=this.pendingEdits.filter(i=>!(i.entity_type===e.entityType&&String(i.entity_id)===String(e.entityId)))}}unregisterForm(e,r){this.registration?.entityType===e&&String(this.registration?.entityId)===String(r)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(e,r,i){this.registration&&this.registration.entityType===e&&String(this.registration.entityId)===String(r)?(this.registration.onFieldUpdate(i),this.emit("edit:applied",{entityType:e,entityId:r,fields:i})):(this.pendingEdits.push({action:"edit_entity",entity_type:e,entity_id:r,fields:i}),this.emit("edit:pending",{entityType:e,entityId:r,fields:i}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(e){const r=e instanceof Error?e.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:r}),{success:!1,error:r}}}async requestTest(e){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(e),{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:"Test failed"}}}setupListeners(e){e.on("action:edit_entity",r=>{this.pushFieldUpdates(r.entity_type,r.entity_id,r.fields)}),e.on("action:save_entity",r=>{this.requestSave()}),e.on("action:test_tool",r=>{this.emit("test:triggered",{toolId:r.tool_id,parameters:r.parameters}),this.requestTest(r.parameters)})}}function I(t){return{async upload(e,r){const i=new FormData,o=t.fieldName??"file";i.append(o,e,e.name);const a=typeof t.extraFields=="function"?t.extraFields(r):t.extraFields;if(a)for(const[h,f]of Object.entries(a))i.append(h,f);i.append("conversationId",r.conversationId),i.append("userId",r.userId),r.projectId&&i.append("projectId",r.projectId);const d=typeof t.headers=="function"?await t.headers():t.headers??{},u=await fetch(t.endpoint,{method:t.method??"POST",body:i,headers:d,credentials:t.credentials});if(!u.ok)throw new Error(`Upload failed: ${u.status} ${u.statusText}`);const l=await u.json().catch(()=>({}));if(t.parseResponse)return t.parseResponse(l,r);const n=l,c=n.url??n.fileUrl??n.publicUrl,y=n.fileName??n.name??e.name;if(!c)throw new Error('Upload response missing "url" / "fileUrl" / "publicUrl"');return{url:c,fileName:y,cloudFileId:typeof n.cloudFileId=="string"?n.cloudFileId:void 0,relativePath:typeof n.path=="string"?n.path:void 0,contentType:typeof n.contentType=="string"?n.contentType:void 0,byteSize:typeof n.byteSize=="number"?n.byteSize:void 0,meta:n}}}}const S="/tilechat/{userId}/conversations/{conversationId}/messages?pageSize={pageSize}";function T(t){const e=t.apiBase.replace(/\/$/,""),r=t.pageSize??200,i=t.pathTemplate??S;return{async fetchMessages(o,a){const d=i.replace("{userId}",encodeURIComponent(a.userId)).replace("{conversationId}",encodeURIComponent(o)).replace("{appId}",encodeURIComponent(a.appId??"tilechat")).replace("{projectId}",encodeURIComponent(a.projectId??"")).replace("{pageSize}",String(r)),u=d.startsWith("http")?d:`${e}${d.startsWith("/")?d:`/${d}`}`,l={accept:"application/json","content-type":"application/json",...t.extraHeaders??{}};if(t.getToken){const h=await t.getToken();h&&(l.authorization=h)}const n=await fetch(u,{method:"GET",headers:l,credentials:"include"}),c=await n.json().catch(()=>null);if(t.parseResponse&&c)return t.parseResponse(c);const y=c;if(y&&Array.isArray(y.result))return y.result;if(!n.ok)throw new Error(`History fetch failed: ${n.status} ${n.statusText}`);return[]}}}function w(){const t=typeof crypto<"u"?crypto:null;if(t?.randomUUID)return t.randomUUID();if(t?.getRandomValues){const e=new Uint8Array(16);t.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;const r=[...e].map(i=>i.toString(16).padStart(2,"0")).join("");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{const r=Math.random()*16|0;return(e==="x"?r:r&3|8).toString(16)})}const k="aikaara_chat:requestId";function g(t,e){return`${k}:${t}:${e}`}function b(t,e){try{return localStorage.getItem(g(t,e))}catch{return null}}function E(t,e,r){try{localStorage.setItem(g(t,e),r)}catch{}}function A(t,e){try{localStorage.removeItem(g(t,e))}catch{}}async function C(t,e){const r=await fetch(t,{method:"GET",headers:{accept:"application/json",...e??{}}});if(!r.ok){const o=await r.text().catch(()=>"");throw new Error(`Widget config fetch failed: ${r.status} ${r.statusText} ${o.slice(0,200)}`)}const i=await r.json();if(i&&typeof i=="object"){if("config"in i)return i.config;if("data"in i)return i.data}return i}function F(t,e){return t.replace("{projectId}",e).replace("{uuid}",w().replace(/-/g,""))}async function U(t){const e={...t.config??(t.configUrl?await C(t.configUrl,t.configHeaders):{}),...t.overrides??{}},r=e.transport??"tiledesk",i=e.tiledesk;if((r==="tiledesk"||r==="dual")&&!i)throw new Error("mount: descriptor.tiledesk is required for tiledesk/dual transport");const o=i?.projectId??"",a=t.identity.userId,d=t.forceNewConversation?null:b(a,o),u=i?.requestIdTemplate??"support-group-{projectId}-{uuid}",l=t.conversationId??d??F(u,o);(!d||t.forceNewConversation)&&o&&E(a,o,l);const n=await t.tokenProvider(),c=t.tokenProvider,y=t.historyTokenProvider??c,h=i?{mqttEndpoint:i.mqttEndpoint,jwtToken:n,userId:a,userName:t.identity.userName,projectId:i.projectId,appId:i.appId,mqttUsername:i.mqttUsername,protocolId:i.protocolId,protocolVersion:i.protocolVersion,keepAliveSec:i.keepAliveSec,connectTimeoutMs:i.connectTimeoutMs,maxReconnectAttempts:i.maxReconnectAttempts,reconnectMaxDelayMs:i.reconnectMaxDelayMs,wildcardSubscribe:i.wildcardSubscribe,enablePresence:i.enablePresence,autoInitiateOnEmpty:i.autoInitiateOnEmpty,chatInitiatedAttributes:i.chatInitiatedAttributes,messageDefaults:{...i.messageDefaults,...t.identity.departmentId?{departmentId:t.identity.departmentId}:i.messageDefaults?.departmentId?{departmentId:i.messageDefaults.departmentId}:{}},fileTemplate:i.fileTemplate,topicTemplates:i.topicTemplates,debug:i.debug,senderFullname:t.identity.senderFullname??t.identity.userName,tokenProvider:c}:void 0,f=t.uploadAdapter??(e.uploadEndpoint?I({endpoint:e.uploadEndpoint,fieldName:e.uploadFieldName,extraFields:e.uploadExtraFields}):void 0),v=t.historyAdapter??(e.historyApiBase?T({apiBase:e.historyApiBase,pageSize:e.historyPageSize??200,pathTemplate:e.historyPathTemplate,getToken:y}):void 0),p={transport:r,baseUrl:"",userToken:a,conversationId:l,display:e.display??"embed",position:e.position,primaryColor:e.primaryColor,title:e.title,subtitle:e.subtitle,avatarUrl:e.avatarUrl,width:e.width,height:e.height,borderRadius:e.borderRadius,fontFamily:e.fontFamily,welcomeMessage:e.welcomeMessage,placeholder:e.placeholder,showTimestamps:e.showTimestamps,persistConversation:e.persistConversation,tiledesk:h,tiledeskIdentity:{userId:a,userName:t.identity.userName,departmentId:t.identity.departmentId,senderFullname:t.identity.senderFullname??t.identity.userName},templateActionAttributes:e.templateActionAttributes,uploadAdapter:f,historyAdapter:v,onError:t.onError},m=document.createElement("aikaara-chat-widget");return m.configure(p),p.title&&m.setAttribute("title",p.title),p.primaryColor&&m.setAttribute("primary-color",p.primaryColor),p.display&&m.setAttribute("display",p.display),p.display==="embed"&&(m.style.cssText="display:flex;flex-direction:column;width:100%;height:100%;min-height:0;"),t.container.appendChild(m),{widget:m,requestId:l,config:p,destroy(){m.remove()}}}exports.ActionCableClient=s.ActionCableClient;exports.AikaaraChatClient=s.AikaaraChatClient;exports.ApiClient=s.ApiClient;exports.ChannelSubscription=s.ChannelSubscription;exports.ConnectionManager=s.ConnectionManager;exports.ConversationManager=s.ConversationManager;exports.EventEmitter=s.EventEmitter;exports.MessageStore=s.MessageStore;exports.TiledeskTransport=s.TiledeskTransport;exports.extractTiledeskFileEnvelope=s.extractTiledeskFileEnvelope;exports.inferTiledeskRole=s.inferTiledeskRole;exports.isTiledeskSelfEcho=s.isTiledeskSelfEcho;exports.parseTiledeskTemplate=s.parseTiledeskTemplate;exports.FormBridge=x;exports.clearPersistedConversationId=A;exports.createFetchUploadAdapter=I;exports.createTiledeskHistoryAdapter=T;exports.mountTenantWidget=U;
|