@opencxh/domain 1.134.3 → 1.134.7
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.cjs +9 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.js +247 -233
- package/dist/platform/ui.d.ts +10 -0
- package/dist/text/markdown.d.ts +15 -0
- package/dist/text/markdown.test.d.ts +1 -0
- package/dist/text/message.test.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=10,d=10,m=10,f=5,ue=new Set(["header","section","context","divider","image","list","actions","attachments"]);function b(e){if(typeof e=="string")return e.length>0;if(!e||typeof e!="object")return!1;const t=e;return typeof t.key=="string"||typeof t.value=="string"}function pe(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const i of e){if(n.length>=T){t("more than "+T+" blocks; the rest was dropped");break}if(!i||typeof i!="object")continue;const a=i;if(!ue.has(a.type)){t("unknown block type "+String(a.type));continue}switch(a.type){case"header":if(!b(a.text)){t("a header without text");continue}break;case"context":if(!b(a.text)){t("a context block without text");continue}break;case"image":if(!a.url||!a.alt){t("an image without url or alt");continue}break;case"section":Array.isArray(a.fields)&&a.fields.length>d&&(t("more than "+d+" fields in a section"),a.fields=a.fields.slice(0,d));break;case"list":if(!Array.isArray(a.items)||a.items.length===0){t("a list without items");continue}a.items.length>m&&(t("more than "+m+" list items"),a.items=a.items.slice(0,m));break;case"actions":{const r=Array.isArray(a.elements)?a.elements:[],o=r.filter(l=>l&&l.action_id&&l.invoke&&b(l.text));if(o.length!==r.length&&t("an action without action_id, invoke or text"),o.length===0)continue;o.length>f&&t("more than "+f+" actions"),a.elements=o.slice(0,f);break}}n.push(a)}return n}function K(e){return e.replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/\s+/g," ").trim()}function u(e){if(!e||e<0)return"";const t=Math.floor(e/60),n=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}`}function v(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function I(e){return e?.split("@")?.[0]||e||""}function p(e){return e.map(t=>t.name).join(", ")}function C(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const c={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${I(e.payload.from)}`:`Outbound call started — ${I(e.payload.to)}`},VOICE_CALL_ANSWERED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek aangenomen",timeline:(e,t)=>`Call answered — ${t}`},VOICE_CALL_HOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"In de wacht",timeline:(e,t)=>`Call on hold — ${t}`},VOICE_CALL_UNHOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Hervat"},VOICE_CALL_ENDED:{shape:"event",channelKind:"voice",icon:"phone",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${u(e.payload.duration)})`:""}`,timeline:e=>`Call ended${v(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${I(e.payload.from)}`},VOICE_CALL_FAILED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek mislukt",timeline:()=>"Call failed"},VOICE_CALL_VOICEMAIL:{shape:"artifact",channelKind:"voice",icon:"phone",snippet:e=>e.payload.transcription?.trim()?e.payload.transcription:"Voicemail ontvangen"},VIDEO_CALL_STARTED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek gestart",timeline:()=>"Video call started"},VIDEO_CALL_ANSWERED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek aangenomen",timeline:()=>"Video call answered"},VIDEO_CALL_HOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"In de wacht"},VIDEO_CALL_UNHOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Hervat"},VIDEO_CALL_ENDED:{shape:"event",channelKind:"video",icon:"video",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${u(e.payload.duration)})`:""}`,timeline:()=>"Video call ended"},VIDEO_CALL_MISSED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gemiste oproep",timeline:()=>"Missed video call"},VIDEO_CALL_FAILED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek mislukt",timeline:()=>"Video call failed"},EMAIL_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.EMAIL_RECEIVED",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:O},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:O},CHAT_MESSAGE_SENT:{shape:"message",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:e=>e.payload.text??""},CHAT_MESSAGE_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.CHAT_MESSAGE_RECEIVED",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:e=>e.payload.text??""},CHAT_MEMBER_JOINED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${p(e.payload.members)} toegevoegd`,timeline:e=>{const t=p(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · added by ${e.payload.initiator.name}`:"";return`${t} joined the chat${n}`}},CHAT_MEMBER_LEFT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${p(e.payload.members)} verlaten`,timeline:e=>{const t=p(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · removed by ${e.payload.initiator.name}`:"";return`${t} left the chat${n}`}},CHAT_RENAMED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Hernoemd naar "${e.payload.newName}"`,timeline:e=>`Chat renamed to "${e.payload.newName}"${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`},CHAT_CALL_STARTED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:()=>"Gesprek gestart",timeline:e=>`${C(e.payload.callType)} started${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`,joinUrl:e=>e.payload.joinUrl},CHAT_CALL_ENDED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${u(e.payload.duration)})`:""}`,timeline:e=>`${C(e.payload.callType)} ended${v(e.payload.duration)}`,joinUrl:e=>e.payload.joinUrl},CHAT_EVENT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>e.payload.text??e.payload.eventType,timeline:e=>e.payload.text||e.payload.eventType},TRANSCRIPT_ADDED:{shape:"artifact",triggerable:!0,displayNameKey:"communication:activity.TRANSCRIPT_ADDED",component:"communication:TranscriptionActivity",icon:"captions",carriesText:!0,snippet:e=>(e.payload.segments??[]).map(t=>t.text).join(" ")},COMMENT_ADDED:{shape:"note",component:"communication:CommentActivity",icon:"sticky-note",carriesText:!0,snippet:e=>e.payload.text??""},FILE_UPLOADED:{shape:"artifact",component:"communication:FileActivity",icon:"paperclip",snippet:e=>`Bestand: ${e.payload.fileName}`},AI_MESSAGE_ADDED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.AI_MESSAGE_ADDED",icon:"circle",snippet:e=>e.payload.output?.text??e.payload.input?.text??"",timeline:()=>"AI message added"},AI_ACTION_PROPOSED:{shape:"event",component:"communication:ProposedActionCard",icon:"circle",playbookAuthored:!0,snippet:e=>`Voorstel wacht op goedkeuring (${e.payload.actions?.length??0} actie(s))`},PLAYBOOK_STARTED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`Playbook gestart${e.payload.playbookName?`: ${e.payload.playbookName}`:""}`,timeline:e=>`Playbook gestart${e.payload.playbookName?` — ${e.payload.playbookName}`:""}`},PLAYBOOK_COMPLETED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook afgerond",timeline:()=>"Playbook afgerond"},PLAYBOOK_ESCALATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook geëscaleerd naar een mens",timeline:()=>"Playbook geëscaleerd naar een mens"},MEETING_SCHEDULED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gepland: ${e.payload.title}`,timeline:()=>"Meeting scheduled",joinUrl:e=>e.payload.joinUrl},MEETING_STARTED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gestart: ${e.payload.title}`,timeline:()=>"Meeting started",joinUrl:e=>e.payload.joinUrl},MEETING_ENDED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering beëindigd${e.payload.duration?` (${u(e.payload.duration)})`:""}`,timeline:()=>"Meeting ended"},MEETING_PARTICIPANT_JOINED:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} deelgenomen`,timeline:(e,t)=>`${t} joined the meeting`},MEETING_PARTICIPANT_LEFT:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} verlaten`,timeline:(e,t)=>`${t} left the meeting`},INTERACTION_CREATED:{shape:"event",icon:"circle",snippet:()=>"Interactie aangemaakt",timeline:(e,t)=>`Interaction started by ${t}`},INTERACTION_STATUS_CHANGED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.INTERACTION_STATUS_CHANGED",icon:"circle-dot",snippet:e=>`Status: ${e.payload.fromStatus} → ${e.payload.toStatus}`,timeline:(e,t)=>`Status changed to ${e.payload.toStatus} by ${t}`},INTERACTION_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Interactie toegewezen",timeline:(e,t)=>`Assigned by ${t}`}};function O(e){const t=e.payload,n=t.bodySnippet?.trim()||K(t.body??"");return t.subject?`${t.subject} — ${n}`:n}function s(e){return c[e]}function de(e){return s(e)?.icon??"circle"}function me(e){return s(e)?.channelKind}function fe(e){const t=s(e)?.shape;return t==="message"||t==="note"}function ge(e){return s(e)?.replyable===!0}function Ee(e){return s(e)?.carriesText===!0}function he(e){return s(e)?.countsAs}function ye(e){return s(e)?.playbookAuthored===!0}function w(e){const t=s(e.type)?.snippet;return t?t(e):""}function Ae(e,t){const n=s(e.type)?.timeline;return n?n(e,t):e.type.replace(/_/g," ").toLowerCase()}function be(e){const t=s(e.type)?.joinUrl;return t?t(e):void 0}function E(e,t){let n=e;for(const i of t.split(".")){if(n==null||typeof n!="object")return"";n=n[i]}return n==null?"":typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):""}function h(e,t,n){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return E(t,e.value)||null;const i={};for(const[r,o]of Object.entries(e.params??{}))i[r]=E(t,o);const a=n(e.key,i);return a===e.key?null:a}function V(e,t){if(!e||typeof e=="string"||"value"in e)return null;const n={};for(const[i,a]of Object.entries(e.params??{}))n[i]=E(t,a);return{key:e.key,params:n}}const Ie=e=>e;function R(e){const t=c[e];return{type:e,shape:t.shape,channelKind:t.channelKind,icon:t.icon,replyable:t.replyable===!0,countsAs:t.countsAs,carriesText:t.carriesText===!0,triggerable:t.triggerable===!0,component:t.component,builtIn:!0,displayNameKey:t.displayNameKey}}function D(e){return{type:e.type,shape:e.shape,channelKind:e.channelKind,icon:e.icon||"circle",replyable:e.replyable===!0,countsAs:e.countsAs,carriesText:e.carriesText===!0,triggerable:e.triggerable===!0,component:e.component,builtIn:!1,displayNameKey:e.displayNameKey}}class B{constructor(t=[],n=Ie){this.translate=n;for(const i of t)i?.type&&(i.type in c||this.declared.has(i.type)||this.declared.set(i.type,i))}declared=new Map;get(t){if(t in c)return R(t);const n=this.declared.get(t);return n?D(n):void 0}triggerable(){const t=Object.keys(c).filter(i=>c[i].triggerable).map(R),n=[...this.declared.values()].map(D).filter(i=>i.triggerable);return[...t,...n]}timelineText(t,n){const i=c[t.type];if(i?.timeline)return i.timeline(t,n);const a=this.declared.get(t.type);return h(a?.text,t,this.translate)??t.type.replace(/_/g," ").toLowerCase()}snippet(t){const n=c[t.type];if(n?.snippet)return n.snippet(t);const i=this.declared.get(t.type);return h(i?.text,t,this.translate)??""}descriptor(t){return this.declared.get(t)}blocks(t){const n=this.declared.get(t)?.render;return n?.length?n:void 0}get translator(){return this.translate}}const _e=new B,L=140;function Te(e){const t=e.trim();return t.length<=L?t:t.slice(0,L-1).trimEnd()+"…"}function Se(e,t){const n=V(t?.text,e),i=t?h(t.text,e,a=>a):null;return{activityId:e.id,type:e.type,snippet:Te(i??w(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...n?{snippetKey:n.key,snippetParams:n.params}:{}}}function Me(e,t,n=[]){const i=e.createdAt;if(!i)return[];const a=new Set(n);return e.author.type==="user"&&e.author.id&&a.add(e.author.id),Object.entries(t).filter(([r,o])=>o>=i&&!a.has(r)).map(([r])=>r)}function Ne(e){return e.createdAt??0}const ve=[{id:"agent",label:"Agent",labelSource:"user"},{id:"team",label:"Team",labelSource:"team"},{id:"inbox",label:"Inbox",labelSource:"inbox"},{id:"channel",label:"Kanaal",labelSource:"channel"},{id:"provider",label:"Provider",labelSource:"raw"},{id:"status",label:"Status",labelSource:"raw"},{id:"handledBy",label:"Afhandelaar",labelSource:"raw"},{id:"time",label:"Tijd",labelSource:"raw"}];function Ce(e){const t=[];for(const n of Object.keys(e))for(const i of Object.keys(e[n]))t.push({lang:n,key:i,value:e[n][i]});return t}function _(e){return e<10?`0${e}`:`${e}`}function H(e,t){const n=new Date(e),i=`${n.getUTCFullYear()}-${_(n.getUTCMonth()+1)}-${_(n.getUTCDate())}`;return t==="day"?i:`${i}T${_(n.getUTCHours())}`}function j(e,t){const n=new Date(e);return n.setUTCMinutes(0,0,0),t==="day"&&n.setUTCHours(0),n.getTime()}const Oe=36e5,Re=864e5;function De(e,t,n){const i=n==="hour"?Oe:Re,a=[];for(let r=j(e,n);r<=t;r+=i)a.push(H(r,n));return a}const F=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],W=F.map(e=>e.id);function Y(e,t){return`${e}.usage.${t}`}function Le(e,t){return t.map(n=>({id:Y(e,n.unit),label:n.label,category:"Verbruik",valueType:n.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...W,...n.extraDimensions??[],"time"]}))}function ke(e){return(e.startsWith("tool:")?e.slice(5):e).replace(/__/g," · ").replace(/\./g," · ").replace(/_/g," ")}const Ue=[{name:"text",type:"string"},{name:"subject",type:"string"},{name:"from",type:"string"},{name:"type",type:"string"},{name:"direction",type:"string"},{name:"channelId",type:"string"},{name:"interactionId",type:"string"},{name:"activityId",type:"string"},{name:"authorType",type:"string"},{name:"authorName",type:"string"},{name:"textRaw",type:"string"},{name:"fromStatus",type:"string"},{name:"toStatus",type:"string"},{name:"contactId",type:"string"},{name:"companyId",type:"string"}],xe={topics:[{name:"topic",type:"string"},{name:"confidence",type:"number"}],question:[{name:"answer",type:"boolean"},{name:"confidence",type:"number"}],extract:[]};function X(e){switch(e.kind){case"user":return`user:${e.userId}`;case"team":return`team:${e.teamId}`;case"org":return"org"}}function $e(e){if(typeof e!="string")return;const t=e.trim();if(t==="org")return{kind:"org"};const n=t.indexOf(":");if(n<=0)return;const i=t.slice(0,n),a=t.slice(n+1).trim();if(a){if(i==="user")return{kind:"user",userId:a};if(i==="team")return{kind:"team",teamId:a}}}function z(e){return X(e)}function Pe(e){switch(e.kind){case"personal":return{kind:"user",userId:e.userId};case"team":return{kind:"team",teamId:e.teamId};case"org":return{kind:"org"}}}function Ge(e){return z(e)}const q=["done","escalated","failed","timed_out","stopped"],J=["awaiting_approval","awaiting_reply"];function Q(e){return q.includes(e)}function Ke(e){return Q(e)}function we(e){return J.includes(e)}const M=[{id:"openai",label:"OpenAI",capabilities:["chat","transcription","embedding"],defaultModel:"gpt-5-mini",baseUrl:"https://api.openai.com/v1"},{id:"gemini",label:"Google Gemini",capabilities:["chat","transcription","embedding"],defaultModel:"gemini-3.5-flash",baseUrl:"https://generativelanguage.googleapis.com/v1beta"},{id:"anthropic",label:"Anthropic",capabilities:["chat"],defaultModel:"claude-haiku-4-5",baseUrl:"https://api.anthropic.com/v1"},{id:"elevenlabs",label:"ElevenLabs",capabilities:["transcription"],baseUrl:"https://api.elevenlabs.io/v1"},{id:"moonshot",label:"Moonshot (Kimi)",capabilities:["chat"],defaultModel:"kimi-k3",baseUrl:"https://api.moonshot.ai/v1"},{id:"deepseek",label:"DeepSeek",capabilities:["chat"],defaultModel:"deepseek-v4-flash",baseUrl:"https://api.deepseek.com/v1"},{id:"groq",label:"Groq",capabilities:["chat"],defaultModel:"openai/gpt-oss-120b",baseUrl:"https://api.groq.com/openai/v1"},{id:"mistral",label:"Mistral",capabilities:["chat"],defaultModel:"mistral-large-latest",baseUrl:"https://api.mistral.ai/v1"},{id:"openrouter",label:"OpenRouter",capabilities:["chat"],defaultModel:"openrouter/auto",baseUrl:"https://openrouter.ai/api/v1"},{id:"ollama",label:"Ollama (self-hosted)",capabilities:["chat"],defaultModel:"llama3.3"},{id:"openai-compatible",label:"OpenAI-compatible (eigen endpoint)",capabilities:["chat"],defaultModel:"default"}];function y(e){return M.find(t=>t.id===e)}function Ve(e){return y(e)?.label??e}function Be(e,t="gpt-5-mini"){return y(e)?.defaultModel??t}function He(e){return M.filter(t=>t.capabilities.includes(e))}function je(e){const t=y(e);return!!t&&!t.baseUrl}const Fe=new Set(["mail","message"]);function Z(e,t){const n=e.settings?.signatures?.[t];return!n||!n.enabled||!n.body||n.body.trim()===""?null:n}function We(e,t,n,i="html"){if(!e)return n;const a=Z(e,t);return a?`${n}${i==="text"?`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=10,d=10,m=10,f=5,ue=new Set(["header","section","context","divider","image","list","actions","attachments"]);function b(e){if(typeof e=="string")return e.length>0;if(!e||typeof e!="object")return!1;const n=e;return typeof n.key=="string"||typeof n.value=="string"}function de(e,n=()=>{}){if(!Array.isArray(e))return[];const t=[];for(const i of e){if(t.length>=T){n("more than "+T+" blocks; the rest was dropped");break}if(!i||typeof i!="object")continue;const a=i;if(!ue.has(a.type)){n("unknown block type "+String(a.type));continue}switch(a.type){case"header":if(!b(a.text)){n("a header without text");continue}break;case"context":if(!b(a.text)){n("a context block without text");continue}break;case"image":if(!a.url||!a.alt){n("an image without url or alt");continue}break;case"section":Array.isArray(a.fields)&&a.fields.length>d&&(n("more than "+d+" fields in a section"),a.fields=a.fields.slice(0,d));break;case"list":if(!Array.isArray(a.items)||a.items.length===0){n("a list without items");continue}a.items.length>m&&(n("more than "+m+" list items"),a.items=a.items.slice(0,m));break;case"actions":{const r=Array.isArray(a.elements)?a.elements:[],o=r.filter(l=>l&&l.action_id&&l.invoke&&b(l.text));if(o.length!==r.length&&n("an action without action_id, invoke or text"),o.length===0)continue;o.length>f&&n("more than "+f+" actions"),a.elements=o.slice(0,f);break}}t.push(a)}return t}function w(e){return e.replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/\s+/g," ").trim()}function p(e){if(!e||e<0)return"";const n=Math.floor(e/60),t=Math.floor(e%60);return`${n}:${t.toString().padStart(2,"0")}`}function C(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function I(e){return e?.split("@")?.[0]||e||""}function u(e){return e.map(n=>n.name).join(", ")}function v(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const c={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${I(e.payload.from)}`:`Outbound call started — ${I(e.payload.to)}`},VOICE_CALL_ANSWERED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek aangenomen",timeline:(e,n)=>`Call answered — ${n}`},VOICE_CALL_HOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"In de wacht",timeline:(e,n)=>`Call on hold — ${n}`},VOICE_CALL_UNHOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Hervat"},VOICE_CALL_ENDED:{shape:"event",channelKind:"voice",icon:"phone",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${p(e.payload.duration)})`:""}`,timeline:e=>`Call ended${C(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${I(e.payload.from)}`},VOICE_CALL_FAILED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek mislukt",timeline:()=>"Call failed"},VOICE_CALL_VOICEMAIL:{shape:"artifact",channelKind:"voice",icon:"phone",snippet:e=>e.payload.transcription?.trim()?e.payload.transcription:"Voicemail ontvangen"},VIDEO_CALL_STARTED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek gestart",timeline:()=>"Video call started"},VIDEO_CALL_ANSWERED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek aangenomen",timeline:()=>"Video call answered"},VIDEO_CALL_HOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"In de wacht"},VIDEO_CALL_UNHOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Hervat"},VIDEO_CALL_ENDED:{shape:"event",channelKind:"video",icon:"video",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${p(e.payload.duration)})`:""}`,timeline:()=>"Video call ended"},VIDEO_CALL_MISSED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gemiste oproep",timeline:()=>"Missed video call"},VIDEO_CALL_FAILED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek mislukt",timeline:()=>"Video call failed"},EMAIL_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.EMAIL_RECEIVED",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:O},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:O},CHAT_MESSAGE_SENT:{shape:"message",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:e=>e.payload.text??""},CHAT_MESSAGE_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.CHAT_MESSAGE_RECEIVED",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:e=>e.payload.text??""},CHAT_MEMBER_JOINED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${u(e.payload.members)} toegevoegd`,timeline:e=>{const n=u(e.payload.members)||"Someone",t=e.payload.initiator?.name?` · added by ${e.payload.initiator.name}`:"";return`${n} joined the chat${t}`}},CHAT_MEMBER_LEFT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${u(e.payload.members)} verlaten`,timeline:e=>{const n=u(e.payload.members)||"Someone",t=e.payload.initiator?.name?` · removed by ${e.payload.initiator.name}`:"";return`${n} left the chat${t}`}},CHAT_RENAMED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Hernoemd naar "${e.payload.newName}"`,timeline:e=>`Chat renamed to "${e.payload.newName}"${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`},CHAT_CALL_STARTED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:()=>"Gesprek gestart",timeline:e=>`${v(e.payload.callType)} started${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`,joinUrl:e=>e.payload.joinUrl},CHAT_CALL_ENDED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${p(e.payload.duration)})`:""}`,timeline:e=>`${v(e.payload.callType)} ended${C(e.payload.duration)}`,joinUrl:e=>e.payload.joinUrl},CHAT_EVENT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>e.payload.text??e.payload.eventType,timeline:e=>e.payload.text||e.payload.eventType},TRANSCRIPT_ADDED:{shape:"artifact",triggerable:!0,displayNameKey:"communication:activity.TRANSCRIPT_ADDED",component:"communication:TranscriptionActivity",icon:"captions",carriesText:!0,snippet:e=>(e.payload.segments??[]).map(n=>n.text).join(" ")},COMMENT_ADDED:{shape:"note",component:"communication:CommentActivity",icon:"sticky-note",carriesText:!0,snippet:e=>e.payload.text??""},FILE_UPLOADED:{shape:"artifact",component:"communication:FileActivity",icon:"paperclip",snippet:e=>`Bestand: ${e.payload.fileName}`},AI_MESSAGE_ADDED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.AI_MESSAGE_ADDED",icon:"circle",snippet:e=>e.payload.output?.text??e.payload.input?.text??"",timeline:()=>"AI message added"},AI_ACTION_PROPOSED:{shape:"event",component:"communication:ProposedActionCard",icon:"circle",playbookAuthored:!0,snippet:e=>`Voorstel wacht op goedkeuring (${e.payload.actions?.length??0} actie(s))`},PLAYBOOK_STARTED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`Playbook gestart${e.payload.playbookName?`: ${e.payload.playbookName}`:""}`,timeline:e=>`Playbook gestart${e.payload.playbookName?` — ${e.payload.playbookName}`:""}`},PLAYBOOK_COMPLETED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook afgerond",timeline:()=>"Playbook afgerond"},PLAYBOOK_ESCALATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook geëscaleerd naar een mens",timeline:()=>"Playbook geëscaleerd naar een mens"},MEETING_SCHEDULED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gepland: ${e.payload.title}`,timeline:()=>"Meeting scheduled",joinUrl:e=>e.payload.joinUrl},MEETING_STARTED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gestart: ${e.payload.title}`,timeline:()=>"Meeting started",joinUrl:e=>e.payload.joinUrl},MEETING_ENDED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering beëindigd${e.payload.duration?` (${p(e.payload.duration)})`:""}`,timeline:()=>"Meeting ended"},MEETING_PARTICIPANT_JOINED:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} deelgenomen`,timeline:(e,n)=>`${n} joined the meeting`},MEETING_PARTICIPANT_LEFT:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} verlaten`,timeline:(e,n)=>`${n} left the meeting`},INTERACTION_CREATED:{shape:"event",icon:"circle",snippet:()=>"Interactie aangemaakt",timeline:(e,n)=>`Interaction started by ${n}`},INTERACTION_STATUS_CHANGED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.INTERACTION_STATUS_CHANGED",icon:"circle-dot",snippet:e=>`Status: ${e.payload.fromStatus} → ${e.payload.toStatus}`,timeline:(e,n)=>`Status changed to ${e.payload.toStatus} by ${n}`},INTERACTION_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Interactie toegewezen",timeline:(e,n)=>`Assigned by ${n}`}};function O(e){const n=e.payload,t=n.bodySnippet?.trim()||w(n.body??"");return n.subject?`${n.subject} — ${t}`:t}function s(e){return c[e]}function me(e){return s(e)?.icon??"circle"}function fe(e){return s(e)?.channelKind}function ge(e){const n=s(e)?.shape;return n==="message"||n==="note"}function Ee(e){return s(e)?.replyable===!0}function he(e){return s(e)?.carriesText===!0}function ye(e){return s(e)?.countsAs}function Ae(e){return s(e)?.playbookAuthored===!0}function V(e){const n=s(e.type)?.snippet;return n?n(e):""}function be(e,n){const t=s(e.type)?.timeline;return t?t(e,n):e.type.replace(/_/g," ").toLowerCase()}function Ie(e){const n=s(e.type)?.joinUrl;return n?n(e):void 0}function E(e,n){let t=e;for(const i of n.split(".")){if(t==null||typeof t!="object")return"";t=t[i]}return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function h(e,n,t){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return E(n,e.value)||null;const i={};for(const[r,o]of Object.entries(e.params??{}))i[r]=E(n,o);const a=t(e.key,i);return a===e.key?null:a}function B(e,n){if(!e||typeof e=="string"||"value"in e)return null;const t={};for(const[i,a]of Object.entries(e.params??{}))t[i]=E(n,a);return{key:e.key,params:t}}const _e=e=>e;function R(e){const n=c[e];return{type:e,shape:n.shape,channelKind:n.channelKind,icon:n.icon,replyable:n.replyable===!0,countsAs:n.countsAs,carriesText:n.carriesText===!0,triggerable:n.triggerable===!0,component:n.component,builtIn:!0,displayNameKey:n.displayNameKey}}function D(e){return{type:e.type,shape:e.shape,channelKind:e.channelKind,icon:e.icon||"circle",replyable:e.replyable===!0,countsAs:e.countsAs,carriesText:e.carriesText===!0,triggerable:e.triggerable===!0,component:e.component,builtIn:!1,displayNameKey:e.displayNameKey}}class H{constructor(n=[],t=_e){this.translate=t;for(const i of n)i?.type&&(i.type in c||this.declared.has(i.type)||this.declared.set(i.type,i))}declared=new Map;get(n){if(n in c)return R(n);const t=this.declared.get(n);return t?D(t):void 0}triggerable(){const n=Object.keys(c).filter(i=>c[i].triggerable).map(R),t=[...this.declared.values()].map(D).filter(i=>i.triggerable);return[...n,...t]}timelineText(n,t){const i=c[n.type];if(i?.timeline)return i.timeline(n,t);const a=this.declared.get(n.type);return h(a?.text,n,this.translate)??n.type.replace(/_/g," ").toLowerCase()}snippet(n){const t=c[n.type];if(t?.snippet)return t.snippet(n);const i=this.declared.get(n.type);return h(i?.text,n,this.translate)??""}descriptor(n){return this.declared.get(n)}blocks(n){const t=this.declared.get(n)?.render;return t?.length?t:void 0}get translator(){return this.translate}}const Te=new H,L=140;function Se(e){const n=e.trim();return n.length<=L?n:n.slice(0,L-1).trimEnd()+"…"}function Me(e,n){const t=B(n?.text,e),i=n?h(n.text,e,a=>a):null;return{activityId:e.id,type:e.type,snippet:Se(i??V(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...t?{snippetKey:t.key,snippetParams:t.params}:{}}}function Ne(e,n,t=[]){const i=e.createdAt;if(!i)return[];const a=new Set(t);return e.author.type==="user"&&e.author.id&&a.add(e.author.id),Object.entries(n).filter(([r,o])=>o>=i&&!a.has(r)).map(([r])=>r)}function Ce(e){return e.createdAt??0}const ve=[{id:"agent",label:"Agent",labelSource:"user"},{id:"team",label:"Team",labelSource:"team"},{id:"inbox",label:"Inbox",labelSource:"inbox"},{id:"channel",label:"Kanaal",labelSource:"channel"},{id:"provider",label:"Provider",labelSource:"raw"},{id:"status",label:"Status",labelSource:"raw"},{id:"handledBy",label:"Afhandelaar",labelSource:"raw"},{id:"time",label:"Tijd",labelSource:"raw"}];function Oe(e){const n=[];for(const t of Object.keys(e))for(const i of Object.keys(e[t]))n.push({lang:t,key:i,value:e[t][i]});return n}function _(e){return e<10?`0${e}`:`${e}`}function j(e,n){const t=new Date(e),i=`${t.getUTCFullYear()}-${_(t.getUTCMonth()+1)}-${_(t.getUTCDate())}`;return n==="day"?i:`${i}T${_(t.getUTCHours())}`}function F(e,n){const t=new Date(e);return t.setUTCMinutes(0,0,0),n==="day"&&t.setUTCHours(0),t.getTime()}const Re=36e5,De=864e5;function Le(e,n,t){const i=t==="hour"?Re:De,a=[];for(let r=F(e,t);r<=n;r+=i)a.push(j(r,t));return a}const W=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],Y=W.map(e=>e.id);function z(e,n){return`${e}.usage.${n}`}function ke(e,n){return n.map(t=>({id:z(e,t.unit),label:t.label,category:"Verbruik",valueType:t.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...Y,...t.extraDimensions??[],"time"]}))}function Ue(e){return(e.startsWith("tool:")?e.slice(5):e).replace(/__/g," · ").replace(/\./g," · ").replace(/_/g," ")}const $e=[{name:"text",type:"string"},{name:"subject",type:"string"},{name:"from",type:"string"},{name:"type",type:"string"},{name:"direction",type:"string"},{name:"channelId",type:"string"},{name:"interactionId",type:"string"},{name:"activityId",type:"string"},{name:"authorType",type:"string"},{name:"authorName",type:"string"},{name:"textRaw",type:"string"},{name:"fromStatus",type:"string"},{name:"toStatus",type:"string"},{name:"contactId",type:"string"},{name:"companyId",type:"string"}],xe={topics:[{name:"topic",type:"string"},{name:"confidence",type:"number"}],question:[{name:"answer",type:"boolean"},{name:"confidence",type:"number"}],extract:[]};function X(e){switch(e.kind){case"user":return`user:${e.userId}`;case"team":return`team:${e.teamId}`;case"org":return"org"}}function Pe(e){if(typeof e!="string")return;const n=e.trim();if(n==="org")return{kind:"org"};const t=n.indexOf(":");if(t<=0)return;const i=n.slice(0,t),a=n.slice(t+1).trim();if(a){if(i==="user")return{kind:"user",userId:a};if(i==="team")return{kind:"team",teamId:a}}}function q(e){return X(e)}function Ge(e){switch(e.kind){case"personal":return{kind:"user",userId:e.userId};case"team":return{kind:"team",teamId:e.teamId};case"org":return{kind:"org"}}}function Ke(e){return q(e)}const J=["done","escalated","failed","timed_out","stopped"],Q=["awaiting_approval","awaiting_reply"];function Z(e){return J.includes(e)}function we(e){return Z(e)}function Ve(e){return Q.includes(e)}const M=[{id:"openai",label:"OpenAI",capabilities:["chat","transcription","embedding"],defaultModel:"gpt-5-mini",baseUrl:"https://api.openai.com/v1"},{id:"gemini",label:"Google Gemini",capabilities:["chat","transcription","embedding"],defaultModel:"gemini-3.5-flash",baseUrl:"https://generativelanguage.googleapis.com/v1beta"},{id:"anthropic",label:"Anthropic",capabilities:["chat"],defaultModel:"claude-haiku-4-5",baseUrl:"https://api.anthropic.com/v1"},{id:"elevenlabs",label:"ElevenLabs",capabilities:["transcription"],baseUrl:"https://api.elevenlabs.io/v1"},{id:"moonshot",label:"Moonshot (Kimi)",capabilities:["chat"],defaultModel:"kimi-k3",baseUrl:"https://api.moonshot.ai/v1"},{id:"deepseek",label:"DeepSeek",capabilities:["chat"],defaultModel:"deepseek-v4-flash",baseUrl:"https://api.deepseek.com/v1"},{id:"groq",label:"Groq",capabilities:["chat"],defaultModel:"openai/gpt-oss-120b",baseUrl:"https://api.groq.com/openai/v1"},{id:"mistral",label:"Mistral",capabilities:["chat"],defaultModel:"mistral-large-latest",baseUrl:"https://api.mistral.ai/v1"},{id:"openrouter",label:"OpenRouter",capabilities:["chat"],defaultModel:"openrouter/auto",baseUrl:"https://openrouter.ai/api/v1"},{id:"ollama",label:"Ollama (self-hosted)",capabilities:["chat"],defaultModel:"llama3.3"},{id:"openai-compatible",label:"OpenAI-compatible (eigen endpoint)",capabilities:["chat"],defaultModel:"default"}];function y(e){return M.find(n=>n.id===e)}function Be(e){return y(e)?.label??e}function He(e,n="gpt-5-mini"){return y(e)?.defaultModel??n}function je(e){return M.filter(n=>n.capabilities.includes(e))}function Fe(e){const n=y(e);return!!n&&!n.baseUrl}const We=new Set(["mail","message"]);function ee(e,n){const t=e.settings?.signatures?.[n];return!t||!t.enabled||!t.body||t.body.trim()===""?null:t}function Ye(e,n,t,i="html"){if(!e)return t;const a=ee(e,n);return a?`${t}${i==="text"?`
|
|
2
2
|
|
|
3
|
-
`:
|
|
4
|
-
`)
|
|
5
|
-
`).
|
|
6
|
-
`)
|
|
7
|
-
`)
|
|
3
|
+
`:n==="mail"?"<br><br>-- <br>":"<br><br>"}${a.body}`:t}function ze(e){return e.endpoints??[]}const Xe=e=>!!e.assignedUserId||!!e.assignedInboxId,qe=e=>e.status==="closed",Je=e=>({urgent:10,high:5,normal:2,low:1})[e.priority]||0,Qe=(e,n=30)=>e.title?.length<=n?e.title:`${e.title.substring(0,n)}...`;function Ze(e,n){return e.lastActivityAt?!(e.seenBy??[]).includes(n):!1}const en=2e3,nn=500,tn=12e3,an=4e3,ne=["contact","company"];function rn(e){if(!e)return!1;const n=e.slice(0,e.indexOf(":"));return ne.includes(n)}const A={NL:{callingCode:"31",trunkPrefix:"0",nsnMin:7,nsnMax:9},BE:{callingCode:"32",trunkPrefix:"0",nsnMin:8,nsnMax:9},LU:{callingCode:"352",nsnMin:6,nsnMax:9},DE:{callingCode:"49",trunkPrefix:"0",nsnMin:6,nsnMax:13},FR:{callingCode:"33",trunkPrefix:"0",nsnMin:9,nsnMax:9},GB:{callingCode:"44",trunkPrefix:"0",nsnMin:9,nsnMax:10},IE:{callingCode:"353",trunkPrefix:"0",nsnMin:7,nsnMax:9},ES:{callingCode:"34",nsnMin:9,nsnMax:9},PT:{callingCode:"351",nsnMin:9,nsnMax:9},IT:{callingCode:"39",nsnMin:6,nsnMax:11},AT:{callingCode:"43",trunkPrefix:"0",nsnMin:7,nsnMax:13},CH:{callingCode:"41",trunkPrefix:"0",nsnMin:9,nsnMax:9},DK:{callingCode:"45",nsnMin:8,nsnMax:8},SE:{callingCode:"46",trunkPrefix:"0",nsnMin:7,nsnMax:13},NO:{callingCode:"47",nsnMin:8,nsnMax:8},FI:{callingCode:"358",trunkPrefix:"0",nsnMin:5,nsnMax:12},PL:{callingCode:"48",nsnMin:9,nsnMax:9},US:{callingCode:"1",nsnMin:10,nsnMax:10},CA:{callingCode:"1",nsnMin:10,nsnMax:10}},te="NL",on=15,sn=8,ln=Array.from(new Set(Object.values(A).map(e=>e.callingCode))).sort((e,n)=>n.length-e.length);function k(e){if(e)return A[e.trim().toUpperCase()]}function g(e,n){return e.length>=n.nsnMin&&e.length<=n.nsnMax}function U(e){if(e.length>on)return null;for(const n of ln){if(!e.startsWith(n))continue;const t=e.slice(n.length);for(const i of Object.values(A)){if(i.callingCode!==n)continue;const a=i.trunkPrefix,r=a&&t.startsWith(a)?t.slice(a.length):t;if(g(r,i))return`+${n}${r}`}return null}return e.length<sn?null:`+${e}`}function cn(e){let n=e.trim();const t=n.match(/^(sips?|tel|whatsapp):/i);t&&(n=n.slice(t[0].length));const i=n.indexOf("@");return i>=0&&(n=n.slice(0,i)),n.trim()}function pn(e){if(!e)return!1;const n=e.indexOf("@");if(n<=0)return!1;const t=e.slice(0,n).trim();return!/^[+\d\s().-]+$/.test(t)}function S(e,n){if(!e)return null;const t=cn(e);if(!t)return null;const i=t.startsWith("+"),a=t.replace(/\D/g,"");if(!a)return null;if(i)return U(a);if(a.startsWith("00"))return U(a.slice(2));const r=k(n)??k(te);if(!r)return null;const o=r.trunkPrefix;if(o&&a.startsWith(o)){const l=a.slice(o.length);return g(l,r)?`+${r.callingCode}${l}`:null}if(a.startsWith(r.callingCode)){const l=a.slice(r.callingCode.length);if(g(l,r))return`+${r.callingCode}${l}`}return!o&&g(a,r)?`+${r.callingCode}${a}`:null}function un(e,n=9){const t=(e??"").replace(/\D/g,"");return t.length<n?null:t.slice(-n)}function N(e){if(!e)return null;const n=e.trim().toLowerCase(),t=n.lastIndexOf("@");if(t<=0||t===n.length-1)return null;const i=n.slice(0,t).split("+")[0],a=n.slice(t+1);return!i||!a.includes(".")?null:`${i}@${a}`}function dn(e){const n=N(e);return n?n.slice(n.lastIndexOf("@")+1):null}const mn=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","co.nz","com.br","co.za"]);function ie(e){if(!e)return null;const n=e.trim().toLowerCase().replace(/\.$/,"").split(".").filter(Boolean);if(n.length<2)return null;const t=n.slice(-2).join(".");return mn.has(t)&&n.length>=3?n.slice(-3).join("."):t}const ae=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","hotmail.nl","hotmail.be","hotmail.co.uk","live.com","live.nl","live.be","msn.com","yahoo.com","yahoo.co.uk","ymail.com","icloud.com","me.com","mac.com","aol.com","gmx.net","gmx.de","web.de","protonmail.com","proton.me","pm.me","tutanota.com","zoho.com","mail.com","ziggo.nl","kpnmail.nl","planet.nl","home.nl","casema.nl","chello.nl","xs4all.nl","telfort.nl","hetnet.nl","zonnet.nl","upcmail.nl","quicknet.nl","telenet.be","skynet.be","proximus.be","scarlet.be"]);function fn(e){const n=ie(e);return n?ae.has(n):!1}function gn(e){if(!e)return!1;const n=e.trim().toLowerCase();return n==="tel"||n==="sms"||n==="whatsapp"||n==="fax"}function En(e,n,t){if(!e||!n)return null;const i=e.trim().toLowerCase();if(i==="tel"||i==="sms"||i==="whatsapp"){const r=S(n,t);return r?`tel:${r}`:null}if(i==="fax"){const r=S(n,t);return r?`fax:${r}`:null}if(i==="mailto"||i==="email"){const r=N(n);return r?`mailto:${r}`:null}const a=n.trim().toLowerCase();return a?`${i}:${a}`:null}const hn=/(\*\*|__)(?=\S)([\s\S]*?\S)\1/g,yn=/(\*|_)(?=\S)([^*_\n]*?\S)\1/g;function An(e){if(typeof e!="string"||!e)return"";let n=e;return n=n.replace(/```[a-z]*\n?/gi,"").replace(/~~~[a-z]*\n?/gi,""),n=n.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1"),n=n.replace(/\[([^\]]*)\]\([^)]*\)/g,"$1"),n=n.replace(/\[([^\]]*)\]\[[^\]]*\]/g,"$1"),n=n.replace(/<((?:https?|mailto):[^>\s]+)>/gi,"$1"),n=n.split(`
|
|
4
|
+
`).map(t=>t.replace(/^\s{0,3}#{1,6}\s+/,"").replace(/^\s{0,3}>\s?/,"").replace(/^\s*[-*+]\s+/,"").replace(/^\s*\d+[.)]\s+/,"").replace(/^\s*(?:[-*_]\s*){3,}$/,"")).join(`
|
|
5
|
+
`),n=n.replace(hn,"$2"),n=n.replace(yn,"$2"),n=n.replace(/~~(?=\S)([\s\S]*?\S)~~/g,"$1"),n=n.replace(/`([^`\n]+)`/g,"$1"),n.replace(/\s+/g," ").trim()}const bn=[/<blockquote/i,/class="?gmail_quote/i,/id="?[^"]*divRplyFwdMsg/i,/id="?[^"]*mail-editor-reference-message-container/i,/-{3,}\s*Original Message\s*-{3,}/i,/\n_{5,}\s*\n/,/\bOn\b[\s\S]{0,200}?\bwrote:/i],$=/^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i,In=/^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;function _n(e){const n=e.split(`
|
|
6
|
+
`);for(let t=0;t<n.length;t++)if(In.test(n[t])||$.test(n[t])&&n.slice(t+1,t+4).some(i=>$.test(i)))return n.slice(0,t).join(`
|
|
7
|
+
`).trim();return e}function x(e){let n=e;return n=n.replace(/<(script|style)[\s\S]*?<\/\1>/gi,""),n=n.replace(/<br\s*\/?>/gi,`
|
|
8
|
+
`),n=n.replace(/<\/(p|div|li|tr|h[1-6]|ul|ol|table)>/gi,`
|
|
9
|
+
`),n=n.replace(/<[^>]+>/g,""),n=n.replace(/<[^>]*$/,""),n}function P(e){return!Number.isInteger(e)||e<0||e>1114111?null:String.fromCodePoint(e)}function G(e){return e.replace(/ /gi," ").replace(/</gi,"<").replace(/>/gi,">").replace(/"/gi,'"').replace(/&#(\d+);/g,(n,t)=>P(Number(t))??n).replace(/&#x([0-9a-f]+);/gi,(n,t)=>P(parseInt(t,16))??n).replace(/&/gi,"&")}function K(e){return e.replace(/\r/g,"").replace(/[ \t]+/g," ").replace(/ *\n */g,`
|
|
8
10
|
`).replace(/\n{3,}/g,`
|
|
9
11
|
|
|
10
|
-
`).trim()}function
|
|
12
|
+
`).trim()}function Tn(e){if(typeof e!="string"||!e)return"";let n=e.length;for(const r of bn){const o=e.search(r);o>=0&&o<n&&(n=o)}const t=e.slice(0,n);let i=K(G(x(t)));return i||(i=K(G(x(e)))),_n(i)||i}const Sn=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i,Mn=/\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;function Nn(e,n){return!!(e&&Sn.test(e)||n&&Mn.test(n))}const re=3,oe=600;function Cn(e,n){return e>=re||n>=oe}function se(e,n){const t=new Set(e.disabledIntents??[]),i=e.intentOverrides??{},a=n.intents.filter(o=>!t.has(o.intent)).map(o=>On(o,i[o.intent]));if(!e.extraIntents||e.extraIntents.length===0)return a;const r=new Set(a.map(o=>o.intent));for(const o of e.extraIntents)r.has(o.intent)||(a.push(o),r.add(o.intent));return a}function le(e,n){const t={};for(const i of e.intents){if(!i.togglable)continue;const a=n?.[i.intent];t[i.intent]=a??i.defaultEnabled??!0}return t}function vn(e,n){const t=le(e,n);return Object.entries(t).filter(([,i])=>!i).map(([i])=>i)}function On(e,n){return n?{intent:n.intent??e.intent,targetSchemes:n.targetSchemes??e.targetSchemes,transport:n.transport??e.transport}:e}function Rn(e,n){const t=[];for(const i of e){if(!i.enabled)continue;const a=n[i.providerId];if(a)for(const r of se(i,a))t.push({channel:i,description:a,capability:r})}return t}function Dn(e,n){return n.filter(t=>t.capability.intent===e)}function ce(e,n){return n.filter(t=>t.capability.targetSchemes.includes(e))}function Ln(e,n){return ce(e.scheme,n)}function kn(e,n,t){const i=[];for(const a of e)for(const r of t)r.capability.intent===n&&r.capability.targetSchemes.includes(a.scheme)&&i.push({channelIntent:r,endpoint:a});return i}var pe=(e=>(e.MAILTO="mailto",e.SIP="sip",e.TEL="tel",e.WEBHOOK="webhook",e.USERNAME="username",e.ID="id",e.CUSTOM="custom",e.URL="url",e.TELEGRAM="telegram",e.WHATSAPP="whatsapp",e.MESSENGER="messenger",e.INSTAGRAM="instagram",e.VIBER="viber",e.SMS="sms",e.FAX="fax",e.TEAMS="teams",e.CALENDAR="calendar",e))(pe||{});const Un="message_window",$n="message_templates",xn={FROM:"from",TO:"to",CC:"cc",BCC:"bcc",ORGANIZER:"organizer",PRESENTER:"presenter",ATTENDEE:"attendee",OWNER:"owner",MEMBER:"member",GUEST:"guest",HOST:"host",PARTICIPANT:"participant"},Pn=(e,n)=>({intent:e,...n}),Gn="folder_management",Kn="remote_search",wn={ok:!1,code:"UNSUPPORTED",message:"Provider does not support this op"},Vn=9e4,Bn="installation-id";exports.ACTIVITY_CATALOG=c;exports.AI_VENDORS=M;exports.ActivityTypeRegistry=H;exports.BUILT_IN_ONLY=Te;exports.CLASSIFY_VARS=xe;exports.CORE_DIMENSIONS=ve;exports.CommunicationScheme=pe;exports.DEFAULT_MEMORY_BUDGET=an;exports.DEFAULT_PHONE_REGION=te;exports.FEATURE_FOLDER_MANAGEMENT=Gn;exports.FEATURE_REMOTE_SEARCH=Kn;exports.INSTALLATION_HEADER=Bn;exports.InteractionParticipantRole=xn;exports.MAX_ACTIONS=f;exports.MAX_BLOCKS=T;exports.MAX_FIELDS=d;exports.MAX_LIST_ITEMS=m;exports.MAX_MEMORY_BUDGET=tn;exports.MAX_MEMORY_CHARS=en;exports.MIN_MEMORY_BUDGET=nn;exports.PAUSED_RUN_STATUSES=Q;exports.PHONE_REGIONS=A;exports.PRESENCE_ONLINE_WINDOW_MS=Vn;exports.PROVIDER_FEATURE_MESSAGE_TEMPLATES=$n;exports.PROVIDER_FEATURE_MESSAGE_WINDOW=Un;exports.PUBLIC_EMAIL_DOMAINS=ae;exports.RELATED_SUBJECT_KINDS=ne;exports.SIGNATURE_INTENTS=We;exports.SUMMARY_MIN_LAST_CHARS=oe;exports.SUMMARY_MIN_MESSAGES=re;exports.TERMINAL_RUN_STATUSES=J;exports.TRIGGER_VARS=$e;exports.UNSUPPORTED=wn;exports.USAGE_DIMENSIONS=W;exports.USAGE_DIMENSION_IDS=Y;exports.actingIdentityKey=q;exports.activityIconOf=me;exports.activityJoinUrl=Ie;exports.activitySnippet=V;exports.activityTextParams=B;exports.activityTimelineText=be;exports.activityTimestamp=Ce;exports.activityTypeInfo=s;exports.actorKey=Ke;exports.aiVendorDefaultModel=He;exports.aiVendorLabel=Be;exports.aiVendorNeedsBaseUrl=Fe;exports.aiVendorsWith=je;exports.applySignature=Ye;exports.buildActivityPreview=Me;exports.buildChannelIntents=Rn;exports.carriesText=he;exports.channelKindOf=fe;exports.cleanMessageText=Tn;exports.defineIntent=Pn;exports.disabledIntentsFromCapabilities=vn;exports.emailDomain=dn;exports.endpointKey=En;exports.filterByEndpoint=Ln;exports.filterByIntent=Dn;exports.filterByTargetScheme=ce;exports.findAiVendor=y;exports.flattenLocales=Oe;exports.floorToPeriod=F;exports.formatActingIdentity=X;exports.formatPeriod=j;exports.getActivitySeenUserIds=Ne;exports.getContactEndpoints=ze;exports.getShortTitle=Qe;exports.getUrgencyScore=Je;exports.humanizeAction=Ue;exports.isAssigned=Xe;exports.isClosed=qe;exports.isInteractionUnseen=Ze;exports.isLikelyBulk=Nn;exports.isMessageType=ge;exports.isPaused=Ve;exports.isPlaybookAuthoredType=Ae;exports.isPublicEmailDomain=fn;exports.isReplyableType=Ee;exports.isRetryable=we;exports.isTerminal=Z;exports.isThreadLongEnough=Cn;exports.looksLikeEmail=pn;exports.matchContactToIntents=kn;exports.messageCountsAs=ye;exports.needsPhoneRegion=gn;exports.normalizeBlocks=de;exports.normalizeEmail=N;exports.parseActingIdentity=Pe;exports.periodsInRange=Le;exports.phoneSuffix=un;exports.plainTextFromMarkdown=An;exports.playbookActor=Ge;exports.readPath=E;exports.registrableDomain=ie;exports.relatedByDefault=rn;exports.resolveAccountCapabilities=le;exports.resolveActivityText=h;exports.resolveChannelIntents=se;exports.resolveSignature=ee;exports.stripHtml=w;exports.toE164=S;exports.usageMetricId=z;exports.usageMetrics=ke;
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export * from './entities/transcript';
|
|
|
32
32
|
export * from './entities/user';
|
|
33
33
|
export * from './entities/webhook';
|
|
34
34
|
export * from './text/endpoint';
|
|
35
|
+
export * from './text/markdown';
|
|
35
36
|
export * from './text/message';
|
|
36
37
|
export * from './text/triage';
|
|
37
38
|
export * from './platform/ai-tools';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const Me = 10, Ce = 10, ve = 10, Ne = 5, U = /* @__PURE__ */ new Set([
|
|
2
2
|
"header",
|
|
3
3
|
"section",
|
|
4
4
|
"context",
|
|
@@ -14,7 +14,7 @@ function m(e) {
|
|
|
14
14
|
const n = e;
|
|
15
15
|
return typeof n.key == "string" || typeof n.value == "string";
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function Oe(e, n = () => {
|
|
18
18
|
}) {
|
|
19
19
|
if (!Array.isArray(e)) return [];
|
|
20
20
|
const t = [];
|
|
@@ -25,7 +25,7 @@ function Ce(e, n = () => {
|
|
|
25
25
|
}
|
|
26
26
|
if (!i || typeof i != "object") continue;
|
|
27
27
|
const a = i;
|
|
28
|
-
if (!
|
|
28
|
+
if (!U.has(a.type)) {
|
|
29
29
|
n("unknown block type " + String(a.type));
|
|
30
30
|
continue;
|
|
31
31
|
}
|
|
@@ -69,10 +69,10 @@ function Ce(e, n = () => {
|
|
|
69
69
|
}
|
|
70
70
|
return t;
|
|
71
71
|
}
|
|
72
|
-
function
|
|
72
|
+
function P(e) {
|
|
73
73
|
return e.replace(/<style[\s\S]*?<\/style>/gi, " ").replace(/<script[\s\S]*?<\/script>/gi, " ").replace(/<[^>]+>/g, " ").replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/\s+/g, " ").trim();
|
|
74
74
|
}
|
|
75
|
-
function
|
|
75
|
+
function p(e) {
|
|
76
76
|
if (!e || e < 0) return "";
|
|
77
77
|
const n = Math.floor(e / 60), t = Math.floor(e % 60);
|
|
78
78
|
return `${n}:${t.toString().padStart(2, "0")}`;
|
|
@@ -83,7 +83,7 @@ function A(e) {
|
|
|
83
83
|
function f(e) {
|
|
84
84
|
return e?.split("@")?.[0] || e || "";
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function u(e) {
|
|
87
87
|
return e.map((n) => n.name).join(", ");
|
|
88
88
|
}
|
|
89
89
|
function I(e) {
|
|
@@ -122,7 +122,7 @@ const c = {
|
|
|
122
122
|
shape: "event",
|
|
123
123
|
channelKind: "voice",
|
|
124
124
|
icon: "phone",
|
|
125
|
-
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${
|
|
125
|
+
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${p(e.payload.duration)})` : ""}`,
|
|
126
126
|
timeline: (e) => `Call ended${A(e.payload.duration)}`
|
|
127
127
|
},
|
|
128
128
|
VOICE_CALL_MISSED: {
|
|
@@ -176,7 +176,7 @@ const c = {
|
|
|
176
176
|
shape: "event",
|
|
177
177
|
channelKind: "video",
|
|
178
178
|
icon: "video",
|
|
179
|
-
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${
|
|
179
|
+
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${p(e.payload.duration)})` : ""}`,
|
|
180
180
|
timeline: () => "Video call ended"
|
|
181
181
|
},
|
|
182
182
|
VIDEO_CALL_MISSED: {
|
|
@@ -243,9 +243,9 @@ const c = {
|
|
|
243
243
|
shape: "event",
|
|
244
244
|
channelKind: "chat",
|
|
245
245
|
icon: "message-circle",
|
|
246
|
-
snippet: (e) => `${
|
|
246
|
+
snippet: (e) => `${u(e.payload.members)} toegevoegd`,
|
|
247
247
|
timeline: (e) => {
|
|
248
|
-
const n =
|
|
248
|
+
const n = u(e.payload.members) || "Someone", t = e.payload.initiator?.name ? ` · added by ${e.payload.initiator.name}` : "";
|
|
249
249
|
return `${n} joined the chat${t}`;
|
|
250
250
|
}
|
|
251
251
|
},
|
|
@@ -253,9 +253,9 @@ const c = {
|
|
|
253
253
|
shape: "event",
|
|
254
254
|
channelKind: "chat",
|
|
255
255
|
icon: "message-circle",
|
|
256
|
-
snippet: (e) => `${
|
|
256
|
+
snippet: (e) => `${u(e.payload.members)} verlaten`,
|
|
257
257
|
timeline: (e) => {
|
|
258
|
-
const n =
|
|
258
|
+
const n = u(e.payload.members) || "Someone", t = e.payload.initiator?.name ? ` · removed by ${e.payload.initiator.name}` : "";
|
|
259
259
|
return `${n} left the chat${t}`;
|
|
260
260
|
}
|
|
261
261
|
},
|
|
@@ -278,7 +278,7 @@ const c = {
|
|
|
278
278
|
shape: "event",
|
|
279
279
|
channelKind: "chat",
|
|
280
280
|
icon: "message-circle",
|
|
281
|
-
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${
|
|
281
|
+
snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${p(e.payload.duration)})` : ""}`,
|
|
282
282
|
timeline: (e) => `${I(e.payload.callType)} ended${A(e.payload.duration)}`,
|
|
283
283
|
joinUrl: (e) => e.payload.joinUrl
|
|
284
284
|
},
|
|
@@ -367,7 +367,7 @@ const c = {
|
|
|
367
367
|
MEETING_ENDED: {
|
|
368
368
|
shape: "event",
|
|
369
369
|
icon: "calendar",
|
|
370
|
-
snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${
|
|
370
|
+
snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${p(e.payload.duration)})` : ""}`,
|
|
371
371
|
timeline: () => "Meeting ended"
|
|
372
372
|
},
|
|
373
373
|
MEETING_PARTICIPANT_JOINED: {
|
|
@@ -405,43 +405,43 @@ const c = {
|
|
|
405
405
|
}
|
|
406
406
|
};
|
|
407
407
|
function _(e) {
|
|
408
|
-
const n = e.payload, t = n.bodySnippet?.trim() ||
|
|
408
|
+
const n = e.payload, t = n.bodySnippet?.trim() || P(n.body ?? "");
|
|
409
409
|
return n.subject ? `${n.subject} — ${t}` : t;
|
|
410
410
|
}
|
|
411
411
|
function l(e) {
|
|
412
412
|
return c[e];
|
|
413
413
|
}
|
|
414
|
-
function
|
|
414
|
+
function ke(e) {
|
|
415
415
|
return l(e)?.icon ?? "circle";
|
|
416
416
|
}
|
|
417
|
-
function
|
|
417
|
+
function De(e) {
|
|
418
418
|
return l(e)?.channelKind;
|
|
419
419
|
}
|
|
420
|
-
function
|
|
420
|
+
function Le(e) {
|
|
421
421
|
const n = l(e)?.shape;
|
|
422
422
|
return n === "message" || n === "note";
|
|
423
423
|
}
|
|
424
|
-
function
|
|
424
|
+
function $e(e) {
|
|
425
425
|
return l(e)?.replyable === !0;
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function Re(e) {
|
|
428
428
|
return l(e)?.carriesText === !0;
|
|
429
429
|
}
|
|
430
|
-
function
|
|
430
|
+
function xe(e) {
|
|
431
431
|
return l(e)?.countsAs;
|
|
432
432
|
}
|
|
433
|
-
function
|
|
433
|
+
function Ue(e) {
|
|
434
434
|
return l(e)?.playbookAuthored === !0;
|
|
435
435
|
}
|
|
436
|
-
function
|
|
436
|
+
function w(e) {
|
|
437
437
|
const n = l(e.type)?.snippet;
|
|
438
438
|
return n ? n(e) : "";
|
|
439
439
|
}
|
|
440
|
-
function
|
|
440
|
+
function Pe(e, n) {
|
|
441
441
|
const t = l(e.type)?.timeline;
|
|
442
442
|
return t ? t(e, n) : e.type.replace(/_/g, " ").toLowerCase();
|
|
443
443
|
}
|
|
444
|
-
function
|
|
444
|
+
function we(e) {
|
|
445
445
|
const n = l(e.type)?.joinUrl;
|
|
446
446
|
return n ? n(e) : void 0;
|
|
447
447
|
}
|
|
@@ -464,14 +464,14 @@ function y(e, n, t) {
|
|
|
464
464
|
const a = t(e.key, i);
|
|
465
465
|
return a === e.key ? null : a;
|
|
466
466
|
}
|
|
467
|
-
function
|
|
467
|
+
function K(e, n) {
|
|
468
468
|
if (!e || typeof e == "string" || "value" in e) return null;
|
|
469
469
|
const t = {};
|
|
470
470
|
for (const [i, a] of Object.entries(e.params ?? {}))
|
|
471
471
|
t[i] = h(n, a);
|
|
472
472
|
return { key: e.key, params: t };
|
|
473
473
|
}
|
|
474
|
-
const
|
|
474
|
+
const G = (e) => e;
|
|
475
475
|
function T(e) {
|
|
476
476
|
const n = c[e];
|
|
477
477
|
return {
|
|
@@ -488,7 +488,7 @@ function T(e) {
|
|
|
488
488
|
displayNameKey: n.displayNameKey
|
|
489
489
|
};
|
|
490
490
|
}
|
|
491
|
-
function
|
|
491
|
+
function S(e) {
|
|
492
492
|
return {
|
|
493
493
|
type: e.type,
|
|
494
494
|
shape: e.shape,
|
|
@@ -503,8 +503,8 @@ function M(e) {
|
|
|
503
503
|
displayNameKey: e.displayNameKey
|
|
504
504
|
};
|
|
505
505
|
}
|
|
506
|
-
class
|
|
507
|
-
constructor(n = [], t =
|
|
506
|
+
class V {
|
|
507
|
+
constructor(n = [], t = G) {
|
|
508
508
|
this.translate = t;
|
|
509
509
|
for (const i of n)
|
|
510
510
|
i?.type && (i.type in c || this.declared.has(i.type) || this.declared.set(i.type, i));
|
|
@@ -513,11 +513,11 @@ class G {
|
|
|
513
513
|
get(n) {
|
|
514
514
|
if (n in c) return T(n);
|
|
515
515
|
const t = this.declared.get(n);
|
|
516
|
-
return t ?
|
|
516
|
+
return t ? S(t) : void 0;
|
|
517
517
|
}
|
|
518
518
|
/** Alles wat als trigger aangeboden mag worden, ingebouwd en gedeclareerd. */
|
|
519
519
|
triggerable() {
|
|
520
|
-
const n = Object.keys(c).filter((i) => c[i].triggerable).map(T), t = [...this.declared.values()].map(
|
|
520
|
+
const n = Object.keys(c).filter((i) => c[i].triggerable).map(T), t = [...this.declared.values()].map(S).filter((i) => i.triggerable);
|
|
521
521
|
return [...n, ...t];
|
|
522
522
|
}
|
|
523
523
|
/**
|
|
@@ -552,33 +552,33 @@ class G {
|
|
|
552
552
|
return this.translate;
|
|
553
553
|
}
|
|
554
554
|
}
|
|
555
|
-
const
|
|
556
|
-
function
|
|
555
|
+
const Ke = new V(), M = 140;
|
|
556
|
+
function H(e) {
|
|
557
557
|
const n = e.trim();
|
|
558
|
-
return n.length <=
|
|
558
|
+
return n.length <= M ? n : n.slice(0, M - 1).trimEnd() + "…";
|
|
559
559
|
}
|
|
560
|
-
function
|
|
561
|
-
const t =
|
|
560
|
+
function Ge(e, n) {
|
|
561
|
+
const t = K(n?.text, e), i = n ? y(n.text, e, (a) => a) : null;
|
|
562
562
|
return {
|
|
563
563
|
activityId: e.id,
|
|
564
564
|
type: e.type,
|
|
565
|
-
snippet:
|
|
565
|
+
snippet: H(i ?? w(e)),
|
|
566
566
|
authorName: e.author?.name ?? "",
|
|
567
567
|
direction: e.direction,
|
|
568
568
|
createdAt: e.createdAt ?? Date.now(),
|
|
569
569
|
...t ? { snippetKey: t.key, snippetParams: t.params } : {}
|
|
570
570
|
};
|
|
571
571
|
}
|
|
572
|
-
function
|
|
572
|
+
function Ve(e, n, t = []) {
|
|
573
573
|
const i = e.createdAt;
|
|
574
574
|
if (!i) return [];
|
|
575
575
|
const a = new Set(t);
|
|
576
576
|
return e.author.type === "user" && e.author.id && a.add(e.author.id), Object.entries(n).filter(([r, o]) => o >= i && !a.has(r)).map(([r]) => r);
|
|
577
577
|
}
|
|
578
|
-
function
|
|
578
|
+
function He(e) {
|
|
579
579
|
return e.createdAt ?? 0;
|
|
580
580
|
}
|
|
581
|
-
const
|
|
581
|
+
const je = [
|
|
582
582
|
{ id: "agent", label: "Agent", labelSource: "user" },
|
|
583
583
|
{ id: "team", label: "Team", labelSource: "team" },
|
|
584
584
|
{ id: "inbox", label: "Inbox", labelSource: "inbox" },
|
|
@@ -588,7 +588,7 @@ const Ge = [
|
|
|
588
588
|
{ id: "handledBy", label: "Afhandelaar", labelSource: "raw" },
|
|
589
589
|
{ id: "time", label: "Tijd", labelSource: "raw" }
|
|
590
590
|
];
|
|
591
|
-
function
|
|
591
|
+
function Be(e) {
|
|
592
592
|
const n = [];
|
|
593
593
|
for (const t of Object.keys(e))
|
|
594
594
|
for (const i of Object.keys(e[t]))
|
|
@@ -598,7 +598,7 @@ function Ve(e) {
|
|
|
598
598
|
function g(e) {
|
|
599
599
|
return e < 10 ? `0${e}` : `${e}`;
|
|
600
600
|
}
|
|
601
|
-
function
|
|
601
|
+
function j(e, n) {
|
|
602
602
|
const t = new Date(e), i = `${t.getUTCFullYear()}-${g(t.getUTCMonth() + 1)}-${g(t.getUTCDate())}`;
|
|
603
603
|
return n === "day" ? i : `${i}T${g(t.getUTCHours())}`;
|
|
604
604
|
}
|
|
@@ -606,39 +606,39 @@ function B(e, n) {
|
|
|
606
606
|
const t = new Date(e);
|
|
607
607
|
return t.setUTCMinutes(0, 0, 0), n === "day" && t.setUTCHours(0), t.getTime();
|
|
608
608
|
}
|
|
609
|
-
const
|
|
610
|
-
function
|
|
611
|
-
const i = t === "hour" ?
|
|
609
|
+
const F = 36e5, X = 864e5;
|
|
610
|
+
function Fe(e, n, t) {
|
|
611
|
+
const i = t === "hour" ? F : X, a = [];
|
|
612
612
|
for (let r = B(e, t); r <= n; r += i)
|
|
613
|
-
a.push(
|
|
613
|
+
a.push(j(r, t));
|
|
614
614
|
return a;
|
|
615
615
|
}
|
|
616
|
-
const
|
|
616
|
+
const W = [
|
|
617
617
|
{ id: "resource", label: "Resource", labelSource: "raw" },
|
|
618
618
|
{ id: "origin", label: "Herkomst", labelSource: "raw" }
|
|
619
|
-
],
|
|
620
|
-
function
|
|
619
|
+
], Y = W.map((e) => e.id);
|
|
620
|
+
function z(e, n) {
|
|
621
621
|
return `${e}.usage.${n}`;
|
|
622
622
|
}
|
|
623
|
-
function
|
|
623
|
+
function Xe(e, n) {
|
|
624
624
|
return n.map((t) => ({
|
|
625
|
-
id:
|
|
625
|
+
id: z(e, t.unit),
|
|
626
626
|
label: t.label,
|
|
627
627
|
category: "Verbruik",
|
|
628
628
|
valueType: t.valueType ?? "count",
|
|
629
629
|
aggregation: "sum",
|
|
630
630
|
supportedDimensions: [
|
|
631
631
|
"provider",
|
|
632
|
-
...
|
|
632
|
+
...Y,
|
|
633
633
|
...t.extraDimensions ?? [],
|
|
634
634
|
"time"
|
|
635
635
|
]
|
|
636
636
|
}));
|
|
637
637
|
}
|
|
638
|
-
function
|
|
638
|
+
function We(e) {
|
|
639
639
|
return (e.startsWith("tool:") ? e.slice(5) : e).replace(/__/g, " · ").replace(/\./g, " · ").replace(/_/g, " ");
|
|
640
640
|
}
|
|
641
|
-
const
|
|
641
|
+
const Ye = [
|
|
642
642
|
{ name: "text", type: "string" },
|
|
643
643
|
{ name: "subject", type: "string" },
|
|
644
644
|
{ name: "from", type: "string" },
|
|
@@ -661,7 +661,7 @@ const Fe = [
|
|
|
661
661
|
// een nieuw adres) — een stap die hierop leunt hoort dus een `condition` te hebben.
|
|
662
662
|
{ name: "contactId", type: "string" },
|
|
663
663
|
{ name: "companyId", type: "string" }
|
|
664
|
-
],
|
|
664
|
+
], ze = {
|
|
665
665
|
topics: [
|
|
666
666
|
{ name: "topic", type: "string" },
|
|
667
667
|
{ name: "confidence", type: "number" }
|
|
@@ -672,7 +672,7 @@ const Fe = [
|
|
|
672
672
|
],
|
|
673
673
|
extract: []
|
|
674
674
|
};
|
|
675
|
-
function
|
|
675
|
+
function q(e) {
|
|
676
676
|
switch (e.kind) {
|
|
677
677
|
case "user":
|
|
678
678
|
return `user:${e.userId}`;
|
|
@@ -682,7 +682,7 @@ function z(e) {
|
|
|
682
682
|
return "org";
|
|
683
683
|
}
|
|
684
684
|
}
|
|
685
|
-
function
|
|
685
|
+
function qe(e) {
|
|
686
686
|
if (typeof e != "string") return;
|
|
687
687
|
const n = e.trim();
|
|
688
688
|
if (n === "org") return { kind: "org" };
|
|
@@ -694,10 +694,10 @@ function We(e) {
|
|
|
694
694
|
if (i === "team") return { kind: "team", teamId: a };
|
|
695
695
|
}
|
|
696
696
|
}
|
|
697
|
-
function
|
|
698
|
-
return
|
|
697
|
+
function J(e) {
|
|
698
|
+
return q(e);
|
|
699
699
|
}
|
|
700
|
-
function
|
|
700
|
+
function Je(e) {
|
|
701
701
|
switch (e.kind) {
|
|
702
702
|
case "personal":
|
|
703
703
|
return { kind: "user", userId: e.userId };
|
|
@@ -707,18 +707,18 @@ function Ye(e) {
|
|
|
707
707
|
return { kind: "org" };
|
|
708
708
|
}
|
|
709
709
|
}
|
|
710
|
-
function
|
|
711
|
-
return
|
|
710
|
+
function Qe(e) {
|
|
711
|
+
return J(e);
|
|
712
712
|
}
|
|
713
|
-
const
|
|
714
|
-
function
|
|
715
|
-
return
|
|
713
|
+
const Q = ["done", "escalated", "failed", "timed_out", "stopped"], Z = ["awaiting_approval", "awaiting_reply"];
|
|
714
|
+
function ee(e) {
|
|
715
|
+
return Q.includes(e);
|
|
716
716
|
}
|
|
717
|
-
function
|
|
718
|
-
return
|
|
717
|
+
function Ze(e) {
|
|
718
|
+
return ee(e);
|
|
719
719
|
}
|
|
720
|
-
function
|
|
721
|
-
return
|
|
720
|
+
function en(e) {
|
|
721
|
+
return Z.includes(e);
|
|
722
722
|
}
|
|
723
723
|
const R = [
|
|
724
724
|
{
|
|
@@ -811,48 +811,48 @@ const R = [
|
|
|
811
811
|
function E(e) {
|
|
812
812
|
return R.find((n) => n.id === e);
|
|
813
813
|
}
|
|
814
|
-
function
|
|
814
|
+
function nn(e) {
|
|
815
815
|
return E(e)?.label ?? e;
|
|
816
816
|
}
|
|
817
|
-
function
|
|
817
|
+
function tn(e, n = "gpt-5-mini") {
|
|
818
818
|
return E(e)?.defaultModel ?? n;
|
|
819
819
|
}
|
|
820
|
-
function
|
|
820
|
+
function an(e) {
|
|
821
821
|
return R.filter((n) => n.capabilities.includes(e));
|
|
822
822
|
}
|
|
823
|
-
function
|
|
823
|
+
function rn(e) {
|
|
824
824
|
const n = E(e);
|
|
825
825
|
return !!n && !n.baseUrl;
|
|
826
826
|
}
|
|
827
|
-
const
|
|
828
|
-
function
|
|
827
|
+
const on = /* @__PURE__ */ new Set(["mail", "message"]);
|
|
828
|
+
function ne(e, n) {
|
|
829
829
|
const t = e.settings?.signatures?.[n];
|
|
830
830
|
return !t || !t.enabled || !t.body || t.body.trim() === "" ? null : t;
|
|
831
831
|
}
|
|
832
|
-
function
|
|
832
|
+
function sn(e, n, t, i = "html") {
|
|
833
833
|
if (!e) return t;
|
|
834
|
-
const a =
|
|
834
|
+
const a = ne(e, n);
|
|
835
835
|
return a ? `${t}${i === "text" ? `
|
|
836
836
|
|
|
837
837
|
` : n === "mail" ? "<br><br>-- <br>" : "<br><br>"}${a.body}` : t;
|
|
838
838
|
}
|
|
839
|
-
function
|
|
839
|
+
function ln(e) {
|
|
840
840
|
return e.endpoints ?? [];
|
|
841
841
|
}
|
|
842
|
-
const
|
|
842
|
+
const cn = (e) => !!e.assignedUserId || !!e.assignedInboxId, pn = (e) => e.status === "closed", un = (e) => ({
|
|
843
843
|
urgent: 10,
|
|
844
844
|
high: 5,
|
|
845
845
|
normal: 2,
|
|
846
846
|
low: 1
|
|
847
|
-
})[e.priority] || 0,
|
|
848
|
-
function
|
|
847
|
+
})[e.priority] || 0, dn = (e, n = 30) => e.title?.length <= n ? e.title : `${e.title.substring(0, n)}...`;
|
|
848
|
+
function mn(e, n) {
|
|
849
849
|
return e.lastActivityAt ? !(e.seenBy ?? []).includes(n) : !1;
|
|
850
850
|
}
|
|
851
|
-
const
|
|
852
|
-
function
|
|
851
|
+
const fn = 2e3, gn = 500, hn = 12e3, yn = 4e3, te = ["contact", "company"];
|
|
852
|
+
function En(e) {
|
|
853
853
|
if (!e) return !1;
|
|
854
854
|
const n = e.slice(0, e.indexOf(":"));
|
|
855
|
-
return
|
|
855
|
+
return te.includes(n);
|
|
856
856
|
}
|
|
857
857
|
const b = {
|
|
858
858
|
// The lower bounds are deliberately generous: service ranges (0800/0900) are
|
|
@@ -877,7 +877,7 @@ const b = {
|
|
|
877
877
|
PL: { callingCode: "48", nsnMin: 9, nsnMax: 9 },
|
|
878
878
|
US: { callingCode: "1", nsnMin: 10, nsnMax: 10 },
|
|
879
879
|
CA: { callingCode: "1", nsnMin: 10, nsnMax: 10 }
|
|
880
|
-
},
|
|
880
|
+
}, ie = "NL", ae = 15, re = 8, oe = Array.from(
|
|
881
881
|
new Set(Object.values(b).map((e) => e.callingCode))
|
|
882
882
|
).sort((e, n) => n.length - e.length);
|
|
883
883
|
function C(e) {
|
|
@@ -888,8 +888,8 @@ function d(e, n) {
|
|
|
888
888
|
return e.length >= n.nsnMin && e.length <= n.nsnMax;
|
|
889
889
|
}
|
|
890
890
|
function v(e) {
|
|
891
|
-
if (e.length >
|
|
892
|
-
for (const n of
|
|
891
|
+
if (e.length > ae) return null;
|
|
892
|
+
for (const n of oe) {
|
|
893
893
|
if (!e.startsWith(n)) continue;
|
|
894
894
|
const t = e.slice(n.length);
|
|
895
895
|
for (const i of Object.values(b)) {
|
|
@@ -899,16 +899,16 @@ function v(e) {
|
|
|
899
899
|
}
|
|
900
900
|
return null;
|
|
901
901
|
}
|
|
902
|
-
return e.length <
|
|
902
|
+
return e.length < re ? null : `+${e}`;
|
|
903
903
|
}
|
|
904
|
-
function
|
|
904
|
+
function se(e) {
|
|
905
905
|
let n = e.trim();
|
|
906
906
|
const t = n.match(/^(sips?|tel|whatsapp):/i);
|
|
907
907
|
t && (n = n.slice(t[0].length));
|
|
908
908
|
const i = n.indexOf("@");
|
|
909
909
|
return i >= 0 && (n = n.slice(0, i)), n.trim();
|
|
910
910
|
}
|
|
911
|
-
function
|
|
911
|
+
function bn(e) {
|
|
912
912
|
if (!e) return !1;
|
|
913
913
|
const n = e.indexOf("@");
|
|
914
914
|
if (n <= 0) return !1;
|
|
@@ -917,13 +917,13 @@ function hn(e) {
|
|
|
917
917
|
}
|
|
918
918
|
function N(e, n) {
|
|
919
919
|
if (!e) return null;
|
|
920
|
-
const t =
|
|
920
|
+
const t = se(e);
|
|
921
921
|
if (!t) return null;
|
|
922
922
|
const i = t.startsWith("+"), a = t.replace(/\D/g, "");
|
|
923
923
|
if (!a) return null;
|
|
924
924
|
if (i) return v(a);
|
|
925
925
|
if (a.startsWith("00")) return v(a.slice(2));
|
|
926
|
-
const r = C(n) ?? C(
|
|
926
|
+
const r = C(n) ?? C(ie);
|
|
927
927
|
if (!r) return null;
|
|
928
928
|
const o = r.trunkPrefix;
|
|
929
929
|
if (o && a.startsWith(o)) {
|
|
@@ -936,22 +936,22 @@ function N(e, n) {
|
|
|
936
936
|
}
|
|
937
937
|
return !o && d(a, r) ? `+${r.callingCode}${a}` : null;
|
|
938
938
|
}
|
|
939
|
-
function
|
|
939
|
+
function An(e, n = 9) {
|
|
940
940
|
const t = (e ?? "").replace(/\D/g, "");
|
|
941
941
|
return t.length < n ? null : t.slice(-n);
|
|
942
942
|
}
|
|
943
|
-
function
|
|
943
|
+
function x(e) {
|
|
944
944
|
if (!e) return null;
|
|
945
945
|
const n = e.trim().toLowerCase(), t = n.lastIndexOf("@");
|
|
946
946
|
if (t <= 0 || t === n.length - 1) return null;
|
|
947
947
|
const i = n.slice(0, t).split("+")[0], a = n.slice(t + 1);
|
|
948
948
|
return !i || !a.includes(".") ? null : `${i}@${a}`;
|
|
949
949
|
}
|
|
950
|
-
function
|
|
951
|
-
const n =
|
|
950
|
+
function In(e) {
|
|
951
|
+
const n = x(e);
|
|
952
952
|
return n ? n.slice(n.lastIndexOf("@") + 1) : null;
|
|
953
953
|
}
|
|
954
|
-
const
|
|
954
|
+
const le = /* @__PURE__ */ new Set([
|
|
955
955
|
"co.uk",
|
|
956
956
|
"org.uk",
|
|
957
957
|
"gov.uk",
|
|
@@ -961,14 +961,14 @@ const se = /* @__PURE__ */ new Set([
|
|
|
961
961
|
"com.br",
|
|
962
962
|
"co.za"
|
|
963
963
|
]);
|
|
964
|
-
function
|
|
964
|
+
function ce(e) {
|
|
965
965
|
if (!e) return null;
|
|
966
966
|
const n = e.trim().toLowerCase().replace(/\.$/, "").split(".").filter(Boolean);
|
|
967
967
|
if (n.length < 2) return null;
|
|
968
968
|
const t = n.slice(-2).join(".");
|
|
969
|
-
return
|
|
969
|
+
return le.has(t) && n.length >= 3 ? n.slice(-3).join(".") : t;
|
|
970
970
|
}
|
|
971
|
-
const
|
|
971
|
+
const pe = /* @__PURE__ */ new Set([
|
|
972
972
|
"gmail.com",
|
|
973
973
|
"googlemail.com",
|
|
974
974
|
"outlook.com",
|
|
@@ -1013,16 +1013,16 @@ const ce = /* @__PURE__ */ new Set([
|
|
|
1013
1013
|
"proximus.be",
|
|
1014
1014
|
"scarlet.be"
|
|
1015
1015
|
]);
|
|
1016
|
-
function
|
|
1017
|
-
const n =
|
|
1018
|
-
return n ?
|
|
1016
|
+
function _n(e) {
|
|
1017
|
+
const n = ce(e);
|
|
1018
|
+
return n ? pe.has(n) : !1;
|
|
1019
1019
|
}
|
|
1020
|
-
function
|
|
1020
|
+
function Tn(e) {
|
|
1021
1021
|
if (!e) return !1;
|
|
1022
1022
|
const n = e.trim().toLowerCase();
|
|
1023
1023
|
return n === "tel" || n === "sms" || n === "whatsapp" || n === "fax";
|
|
1024
1024
|
}
|
|
1025
|
-
function
|
|
1025
|
+
function Sn(e, n, t) {
|
|
1026
1026
|
if (!e || !n) return null;
|
|
1027
1027
|
const i = e.trim().toLowerCase();
|
|
1028
1028
|
if (i === "tel" || i === "sms" || i === "whatsapp") {
|
|
@@ -1034,13 +1034,23 @@ function In(e, n, t) {
|
|
|
1034
1034
|
return r ? `fax:${r}` : null;
|
|
1035
1035
|
}
|
|
1036
1036
|
if (i === "mailto" || i === "email") {
|
|
1037
|
-
const r =
|
|
1037
|
+
const r = x(n);
|
|
1038
1038
|
return r ? `mailto:${r}` : null;
|
|
1039
1039
|
}
|
|
1040
1040
|
const a = n.trim().toLowerCase();
|
|
1041
1041
|
return a ? `${i}:${a}` : null;
|
|
1042
1042
|
}
|
|
1043
|
-
const ue = [
|
|
1043
|
+
const ue = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, de = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
|
|
1044
|
+
function Mn(e) {
|
|
1045
|
+
if (typeof e != "string" || !e) return "";
|
|
1046
|
+
let n = e;
|
|
1047
|
+
return n = n.replace(/```[a-z]*\n?/gi, "").replace(/~~~[a-z]*\n?/gi, ""), n = n.replace(/!\[([^\]]*)\]\([^)]*\)/g, "$1"), n = n.replace(/\[([^\]]*)\]\([^)]*\)/g, "$1"), n = n.replace(/\[([^\]]*)\]\[[^\]]*\]/g, "$1"), n = n.replace(/<((?:https?|mailto):[^>\s]+)>/gi, "$1"), n = n.split(`
|
|
1048
|
+
`).map(
|
|
1049
|
+
(t) => t.replace(/^\s{0,3}#{1,6}\s+/, "").replace(/^\s{0,3}>\s?/, "").replace(/^\s*[-*+]\s+/, "").replace(/^\s*\d+[.)]\s+/, "").replace(/^\s*(?:[-*_]\s*){3,}$/, "")
|
|
1050
|
+
).join(`
|
|
1051
|
+
`), n = n.replace(ue, "$2"), n = n.replace(de, "$2"), n = n.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), n = n.replace(/`([^`\n]+)`/g, "$1"), n.replace(/\s+/g, " ").trim();
|
|
1052
|
+
}
|
|
1053
|
+
const me = [
|
|
1044
1054
|
/<blockquote/i,
|
|
1045
1055
|
/class="?gmail_quote/i,
|
|
1046
1056
|
// Gmail quote container
|
|
@@ -1053,12 +1063,12 @@ const ue = [
|
|
|
1053
1063
|
// Outlook underscore separator before "From:"
|
|
1054
1064
|
/\bOn\b[\s\S]{0,200}?\bwrote:/i
|
|
1055
1065
|
// Gmail "On <date> <name> wrote:"
|
|
1056
|
-
], O = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i,
|
|
1057
|
-
function
|
|
1066
|
+
], O = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, fe = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
|
|
1067
|
+
function ge(e) {
|
|
1058
1068
|
const n = e.split(`
|
|
1059
1069
|
`);
|
|
1060
1070
|
for (let t = 0; t < n.length; t++)
|
|
1061
|
-
if (
|
|
1071
|
+
if (fe.test(n[t]) || O.test(n[t]) && n.slice(t + 1, t + 4).some((i) => O.test(i)))
|
|
1062
1072
|
return n.slice(0, t).join(`
|
|
1063
1073
|
`).trim();
|
|
1064
1074
|
return e;
|
|
@@ -1070,42 +1080,45 @@ function k(e) {
|
|
|
1070
1080
|
`), n = n.replace(/<[^>]+>/g, ""), n = n.replace(/<[^>]*$/, ""), n;
|
|
1071
1081
|
}
|
|
1072
1082
|
function D(e) {
|
|
1073
|
-
return
|
|
1083
|
+
return !Number.isInteger(e) || e < 0 || e > 1114111 ? null : String.fromCodePoint(e);
|
|
1074
1084
|
}
|
|
1075
1085
|
function L(e) {
|
|
1086
|
+
return e.replace(/ /gi, " ").replace(/</gi, "<").replace(/>/gi, ">").replace(/"/gi, '"').replace(/&#(\d+);/g, (n, t) => D(Number(t)) ?? n).replace(/&#x([0-9a-f]+);/gi, (n, t) => D(parseInt(t, 16)) ?? n).replace(/&/gi, "&");
|
|
1087
|
+
}
|
|
1088
|
+
function $(e) {
|
|
1076
1089
|
return e.replace(/\r/g, "").replace(/[ \t]+/g, " ").replace(/ *\n */g, `
|
|
1077
1090
|
`).replace(/\n{3,}/g, `
|
|
1078
1091
|
|
|
1079
1092
|
`).trim();
|
|
1080
1093
|
}
|
|
1081
|
-
function
|
|
1094
|
+
function Cn(e) {
|
|
1082
1095
|
if (typeof e != "string" || !e) return "";
|
|
1083
1096
|
let n = e.length;
|
|
1084
|
-
for (const r of
|
|
1097
|
+
for (const r of me) {
|
|
1085
1098
|
const o = e.search(r);
|
|
1086
1099
|
o >= 0 && o < n && (n = o);
|
|
1087
1100
|
}
|
|
1088
1101
|
const t = e.slice(0, n);
|
|
1089
|
-
let i = L(
|
|
1090
|
-
return i || (i = L(
|
|
1102
|
+
let i = $(L(k(t)));
|
|
1103
|
+
return i || (i = $(L(k(e)))), ge(i) || i;
|
|
1091
1104
|
}
|
|
1092
|
-
const
|
|
1093
|
-
function
|
|
1094
|
-
return !!(e &&
|
|
1105
|
+
const he = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, ye = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
|
|
1106
|
+
function vn(e, n) {
|
|
1107
|
+
return !!(e && he.test(e) || n && ye.test(n));
|
|
1095
1108
|
}
|
|
1096
|
-
const
|
|
1097
|
-
function
|
|
1098
|
-
return e >=
|
|
1109
|
+
const Ee = 3, be = 600;
|
|
1110
|
+
function Nn(e, n) {
|
|
1111
|
+
return e >= Ee || n >= be;
|
|
1099
1112
|
}
|
|
1100
|
-
function
|
|
1101
|
-
const t = new Set(e.disabledIntents ?? []), i = e.intentOverrides ?? {}, a = n.intents.filter((o) => !t.has(o.intent)).map((o) =>
|
|
1113
|
+
function Ae(e, n) {
|
|
1114
|
+
const t = new Set(e.disabledIntents ?? []), i = e.intentOverrides ?? {}, a = n.intents.filter((o) => !t.has(o.intent)).map((o) => _e(o, i[o.intent]));
|
|
1102
1115
|
if (!e.extraIntents || e.extraIntents.length === 0) return a;
|
|
1103
1116
|
const r = new Set(a.map((o) => o.intent));
|
|
1104
1117
|
for (const o of e.extraIntents)
|
|
1105
1118
|
r.has(o.intent) || (a.push(o), r.add(o.intent));
|
|
1106
1119
|
return a;
|
|
1107
1120
|
}
|
|
1108
|
-
function
|
|
1121
|
+
function Ie(e, n) {
|
|
1109
1122
|
const t = {};
|
|
1110
1123
|
for (const i of e.intents) {
|
|
1111
1124
|
if (!i.togglable) continue;
|
|
@@ -1114,46 +1127,46 @@ function Ee(e, n) {
|
|
|
1114
1127
|
}
|
|
1115
1128
|
return t;
|
|
1116
1129
|
}
|
|
1117
|
-
function
|
|
1118
|
-
const t =
|
|
1130
|
+
function On(e, n) {
|
|
1131
|
+
const t = Ie(e, n);
|
|
1119
1132
|
return Object.entries(t).filter(([, i]) => !i).map(([i]) => i);
|
|
1120
1133
|
}
|
|
1121
|
-
function
|
|
1134
|
+
function _e(e, n) {
|
|
1122
1135
|
return n ? {
|
|
1123
1136
|
intent: n.intent ?? e.intent,
|
|
1124
1137
|
targetSchemes: n.targetSchemes ?? e.targetSchemes,
|
|
1125
1138
|
transport: n.transport ?? e.transport
|
|
1126
1139
|
} : e;
|
|
1127
1140
|
}
|
|
1128
|
-
function
|
|
1141
|
+
function kn(e, n) {
|
|
1129
1142
|
const t = [];
|
|
1130
1143
|
for (const i of e) {
|
|
1131
1144
|
if (!i.enabled) continue;
|
|
1132
1145
|
const a = n[i.providerId];
|
|
1133
1146
|
if (a)
|
|
1134
|
-
for (const r of
|
|
1147
|
+
for (const r of Ae(i, a))
|
|
1135
1148
|
t.push({ channel: i, description: a, capability: r });
|
|
1136
1149
|
}
|
|
1137
1150
|
return t;
|
|
1138
1151
|
}
|
|
1139
|
-
function
|
|
1152
|
+
function Dn(e, n) {
|
|
1140
1153
|
return n.filter((t) => t.capability.intent === e);
|
|
1141
1154
|
}
|
|
1142
|
-
function
|
|
1155
|
+
function Te(e, n) {
|
|
1143
1156
|
return n.filter((t) => t.capability.targetSchemes.includes(e));
|
|
1144
1157
|
}
|
|
1145
|
-
function
|
|
1146
|
-
return
|
|
1158
|
+
function Ln(e, n) {
|
|
1159
|
+
return Te(e.scheme, n);
|
|
1147
1160
|
}
|
|
1148
|
-
function
|
|
1161
|
+
function $n(e, n, t) {
|
|
1149
1162
|
const i = [];
|
|
1150
1163
|
for (const a of e)
|
|
1151
1164
|
for (const r of t)
|
|
1152
1165
|
r.capability.intent === n && r.capability.targetSchemes.includes(a.scheme) && i.push({ channelIntent: r, endpoint: a });
|
|
1153
1166
|
return i;
|
|
1154
1167
|
}
|
|
1155
|
-
var
|
|
1156
|
-
const
|
|
1168
|
+
var Se = /* @__PURE__ */ ((e) => (e.MAILTO = "mailto", e.SIP = "sip", e.TEL = "tel", e.WEBHOOK = "webhook", e.USERNAME = "username", e.ID = "id", e.CUSTOM = "custom", e.URL = "url", e.TELEGRAM = "telegram", e.WHATSAPP = "whatsapp", e.MESSENGER = "messenger", e.INSTAGRAM = "instagram", e.VIBER = "viber", e.SMS = "sms", e.FAX = "fax", e.TEAMS = "teams", e.CALENDAR = "calendar", e))(Se || {});
|
|
1169
|
+
const Rn = "message_window", xn = "message_templates", Un = {
|
|
1157
1170
|
// E-mail
|
|
1158
1171
|
FROM: "from",
|
|
1159
1172
|
TO: "to",
|
|
@@ -1170,110 +1183,111 @@ const kn = "message_window", Dn = "message_templates", Ln = {
|
|
|
1170
1183
|
// Voice/conference
|
|
1171
1184
|
HOST: "host",
|
|
1172
1185
|
PARTICIPANT: "participant"
|
|
1173
|
-
},
|
|
1186
|
+
}, Pn = (e, n) => ({ intent: e, ...n }), wn = "folder_management", Kn = "remote_search", Gn = { ok: !1, code: "UNSUPPORTED", message: "Provider does not support this op" }, Vn = 9e4, Hn = "installation-id";
|
|
1174
1187
|
export {
|
|
1175
1188
|
c as ACTIVITY_CATALOG,
|
|
1176
1189
|
R as AI_VENDORS,
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1190
|
+
V as ActivityTypeRegistry,
|
|
1191
|
+
Ke as BUILT_IN_ONLY,
|
|
1192
|
+
ze as CLASSIFY_VARS,
|
|
1193
|
+
je as CORE_DIMENSIONS,
|
|
1194
|
+
Se as CommunicationScheme,
|
|
1195
|
+
yn as DEFAULT_MEMORY_BUDGET,
|
|
1196
|
+
ie as DEFAULT_PHONE_REGION,
|
|
1197
|
+
wn as FEATURE_FOLDER_MANAGEMENT,
|
|
1198
|
+
Kn as FEATURE_REMOTE_SEARCH,
|
|
1199
|
+
Hn as INSTALLATION_HEADER,
|
|
1200
|
+
Un as InteractionParticipantRole,
|
|
1201
|
+
Ne as MAX_ACTIONS,
|
|
1202
|
+
Me as MAX_BLOCKS,
|
|
1203
|
+
Ce as MAX_FIELDS,
|
|
1204
|
+
ve as MAX_LIST_ITEMS,
|
|
1205
|
+
hn as MAX_MEMORY_BUDGET,
|
|
1206
|
+
fn as MAX_MEMORY_CHARS,
|
|
1207
|
+
gn as MIN_MEMORY_BUDGET,
|
|
1208
|
+
Z as PAUSED_RUN_STATUSES,
|
|
1196
1209
|
b as PHONE_REGIONS,
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1210
|
+
Vn as PRESENCE_ONLINE_WINDOW_MS,
|
|
1211
|
+
xn as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
|
|
1212
|
+
Rn as PROVIDER_FEATURE_MESSAGE_WINDOW,
|
|
1213
|
+
pe as PUBLIC_EMAIL_DOMAINS,
|
|
1214
|
+
te as RELATED_SUBJECT_KINDS,
|
|
1215
|
+
on as SIGNATURE_INTENTS,
|
|
1216
|
+
be as SUMMARY_MIN_LAST_CHARS,
|
|
1217
|
+
Ee as SUMMARY_MIN_MESSAGES,
|
|
1218
|
+
Q as TERMINAL_RUN_STATUSES,
|
|
1219
|
+
Ye as TRIGGER_VARS,
|
|
1220
|
+
Gn as UNSUPPORTED,
|
|
1221
|
+
W as USAGE_DIMENSIONS,
|
|
1222
|
+
Y as USAGE_DIMENSION_IDS,
|
|
1223
|
+
J as actingIdentityKey,
|
|
1224
|
+
ke as activityIconOf,
|
|
1225
|
+
we as activityJoinUrl,
|
|
1226
|
+
w as activitySnippet,
|
|
1227
|
+
K as activityTextParams,
|
|
1228
|
+
Pe as activityTimelineText,
|
|
1229
|
+
He as activityTimestamp,
|
|
1217
1230
|
l as activityTypeInfo,
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1231
|
+
Qe as actorKey,
|
|
1232
|
+
tn as aiVendorDefaultModel,
|
|
1233
|
+
nn as aiVendorLabel,
|
|
1234
|
+
rn as aiVendorNeedsBaseUrl,
|
|
1235
|
+
an as aiVendorsWith,
|
|
1236
|
+
sn as applySignature,
|
|
1237
|
+
Ge as buildActivityPreview,
|
|
1238
|
+
kn as buildChannelIntents,
|
|
1239
|
+
Re as carriesText,
|
|
1240
|
+
De as channelKindOf,
|
|
1241
|
+
Cn as cleanMessageText,
|
|
1242
|
+
Pn as defineIntent,
|
|
1243
|
+
On as disabledIntentsFromCapabilities,
|
|
1244
|
+
In as emailDomain,
|
|
1245
|
+
Sn as endpointKey,
|
|
1246
|
+
Ln as filterByEndpoint,
|
|
1247
|
+
Dn as filterByIntent,
|
|
1248
|
+
Te as filterByTargetScheme,
|
|
1236
1249
|
E as findAiVendor,
|
|
1237
|
-
|
|
1250
|
+
Be as flattenLocales,
|
|
1238
1251
|
B as floorToPeriod,
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1252
|
+
q as formatActingIdentity,
|
|
1253
|
+
j as formatPeriod,
|
|
1254
|
+
Ve as getActivitySeenUserIds,
|
|
1255
|
+
ln as getContactEndpoints,
|
|
1256
|
+
dn as getShortTitle,
|
|
1257
|
+
un as getUrgencyScore,
|
|
1258
|
+
We as humanizeAction,
|
|
1259
|
+
cn as isAssigned,
|
|
1260
|
+
pn as isClosed,
|
|
1261
|
+
mn as isInteractionUnseen,
|
|
1262
|
+
vn as isLikelyBulk,
|
|
1263
|
+
Le as isMessageType,
|
|
1264
|
+
en as isPaused,
|
|
1265
|
+
Ue as isPlaybookAuthoredType,
|
|
1266
|
+
_n as isPublicEmailDomain,
|
|
1267
|
+
$e as isReplyableType,
|
|
1268
|
+
Ze as isRetryable,
|
|
1269
|
+
ee as isTerminal,
|
|
1270
|
+
Nn as isThreadLongEnough,
|
|
1271
|
+
bn as looksLikeEmail,
|
|
1272
|
+
$n as matchContactToIntents,
|
|
1273
|
+
xe as messageCountsAs,
|
|
1274
|
+
Tn as needsPhoneRegion,
|
|
1275
|
+
Oe as normalizeBlocks,
|
|
1276
|
+
x as normalizeEmail,
|
|
1277
|
+
qe as parseActingIdentity,
|
|
1278
|
+
Fe as periodsInRange,
|
|
1279
|
+
An as phoneSuffix,
|
|
1280
|
+
Mn as plainTextFromMarkdown,
|
|
1281
|
+
Je as playbookActor,
|
|
1268
1282
|
h as readPath,
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1283
|
+
ce as registrableDomain,
|
|
1284
|
+
En as relatedByDefault,
|
|
1285
|
+
Ie as resolveAccountCapabilities,
|
|
1272
1286
|
y as resolveActivityText,
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1287
|
+
Ae as resolveChannelIntents,
|
|
1288
|
+
ne as resolveSignature,
|
|
1289
|
+
P as stripHtml,
|
|
1276
1290
|
N as toE164,
|
|
1277
|
-
|
|
1278
|
-
|
|
1291
|
+
z as usageMetricId,
|
|
1292
|
+
Xe as usageMetrics
|
|
1279
1293
|
};
|
package/dist/platform/ui.d.ts
CHANGED
|
@@ -141,6 +141,16 @@ export interface ExtensionConfig {
|
|
|
141
141
|
* does not have to know which extension is special.
|
|
142
142
|
*/
|
|
143
143
|
pinned?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Paint this tool's glyph in the assistant hue. Declared by the app — like
|
|
146
|
+
* `pinned` — so the host does not have to know which extension is the AI.
|
|
147
|
+
*
|
|
148
|
+
* Deliberately the only value there is: violet is reserved for the
|
|
149
|
+
* assistant, and an open colour field here would give us a rainbow of tool
|
|
150
|
+
* headers. The shell used to hardcode this tint on *every* tool, which is
|
|
151
|
+
* how the storage and task panels ended up wearing the assistant's colour.
|
|
152
|
+
*/
|
|
153
|
+
tone?: "assistant";
|
|
144
154
|
conditions?: {
|
|
145
155
|
[key: string]: any;
|
|
146
156
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown → plain text, for the places that show a *line* rather than a
|
|
3
|
+
* document: the snippet under a conversation in the inbox, a search result, a
|
|
4
|
+
* push notification.
|
|
5
|
+
*
|
|
6
|
+
* Those lines come from stored bodies, and a growing share of them is written by
|
|
7
|
+
* an assistant or a playbook — so they arrive as markdown and the list showed
|
|
8
|
+
* `**Klant** vraagt om een offerte` verbatim. Rendering the markdown there is
|
|
9
|
+
* not the answer: the row is one truncated line, and bold-in-a-snippet is noise.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately a stripper, not a parser: it removes notation and keeps the
|
|
12
|
+
* words. Anything it does not recognise it leaves alone, which is the safe
|
|
13
|
+
* direction — an unrecognised construct shows as text, never as an error.
|
|
14
|
+
*/
|
|
15
|
+
export declare function plainTextFromMarkdown(raw: unknown): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|