@opencxh/domain 1.137.0 → 1.142.0
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/entities/communication/message-template.d.ts +17 -2
- package/dist/entities/kb/help-center.d.ts +106 -0
- package/dist/entities/kb/index.d.ts +1 -0
- package/dist/entities/kb/types.d.ts +66 -3
- package/dist/entities/kb/types.test.d.ts +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.js +400 -304
- package/dist/platform/manifest.d.ts +8 -0
- package/dist/platform/routing.d.ts +69 -0
- package/dist/platform/routing.test.d.ts +1 -0
- package/dist/platform/sdk.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OwnerScope } from '../contact/types';
|
|
1
2
|
export interface MessageTemplate {
|
|
2
3
|
id: string;
|
|
3
4
|
name: string;
|
|
@@ -10,8 +11,22 @@ export interface MessageTemplate {
|
|
|
10
11
|
*/
|
|
11
12
|
shortcut?: string;
|
|
12
13
|
folderId?: string;
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Who this template belongs to — the same three rungs as a task, a calendar
|
|
16
|
+
* event or a contact, so one set of helpers answers "may I read it", "may I
|
|
17
|
+
* write it" and "who gets the push".
|
|
18
|
+
*
|
|
19
|
+
* Replaces an `isPrivate` boolean plus an `inboxIds` list. Those were two
|
|
20
|
+
* ad-hoc axes with a hole between them: a template that was not private and
|
|
21
|
+
* named no inbox was visible to **nobody**, because the filter ended in
|
|
22
|
+
* `inboxIds?.some(...)`. "Share with everyone" simply had no representation.
|
|
23
|
+
*
|
|
24
|
+
* Per-inbox targeting is gone with it. Nothing consumed it: no picker and no
|
|
25
|
+
* selector ever narrowed templates to the inbox you were writing in, so the
|
|
26
|
+
* list was only ever a visibility gate — which is what `ownerScope` is, done
|
|
27
|
+
* once for the whole platform.
|
|
28
|
+
*/
|
|
29
|
+
ownerScope: OwnerScope;
|
|
15
30
|
organizationId: string;
|
|
16
31
|
createdBy: string;
|
|
17
32
|
createdAt?: number;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { KbLocale } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* The public face of one knowledge base.
|
|
4
|
+
*
|
|
5
|
+
* One-to-one with a `KnowledgeBase`: authoring stays where it already is, and a
|
|
6
|
+
* help centre only adds the things a reader sees — a URL, a brand, a set of
|
|
7
|
+
* languages, a search box. A knowledge base with no help centre is internal.
|
|
8
|
+
*
|
|
9
|
+
* Every label in here is a list keyed *by a field*, never a map keyed by locale:
|
|
10
|
+
* the http client rewrites object keys between camel and snake case, so
|
|
11
|
+
* `{ "nl-NL": … }` does not survive the wire.
|
|
12
|
+
*/
|
|
13
|
+
export interface HelpCenter {
|
|
14
|
+
id: string;
|
|
15
|
+
organizationId: string;
|
|
16
|
+
knowledgeBaseId: string;
|
|
17
|
+
/**
|
|
18
|
+
* First segment of every public URL: `/help/{slug}/{locale}/…`.
|
|
19
|
+
*
|
|
20
|
+
* An organisation can have several knowledge bases and therefore several
|
|
21
|
+
* help centres, so this is not optional decoration — without it they all
|
|
22
|
+
* collide on `/help`.
|
|
23
|
+
*/
|
|
24
|
+
slug: string;
|
|
25
|
+
/** Where the bare `/help` lands. At most one per organisation. */
|
|
26
|
+
isDefault?: boolean;
|
|
27
|
+
status: "draft" | "published";
|
|
28
|
+
theme?: HelpCenterTheme;
|
|
29
|
+
header?: HelpCenterHeader;
|
|
30
|
+
footer?: HelpCenterFooter;
|
|
31
|
+
search?: HelpCenterSearch;
|
|
32
|
+
seo?: HelpCenterSeo;
|
|
33
|
+
/** Title, tagline and the rest, per language. */
|
|
34
|
+
translations?: HelpCenterText[];
|
|
35
|
+
createdAt?: number;
|
|
36
|
+
updatedAt?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface HelpCenterTheme {
|
|
39
|
+
/** Buttons, links, active states. Any CSS colour. */
|
|
40
|
+
primaryColor?: string;
|
|
41
|
+
/** Page backdrop behind the cards. */
|
|
42
|
+
backgroundColor?: string;
|
|
43
|
+
cardStyle?: "classic" | "compact" | "visual";
|
|
44
|
+
/** Corner radius in pixels, 0–24. */
|
|
45
|
+
cornerRadius?: number;
|
|
46
|
+
/** Collection grid width. */
|
|
47
|
+
columns?: 1 | 2 | 3;
|
|
48
|
+
/** Inline data URIs — see `assertInlineImage` for the ceilings. */
|
|
49
|
+
logo?: string;
|
|
50
|
+
favicon?: string;
|
|
51
|
+
socialImage?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface HelpCenterHeader {
|
|
54
|
+
heroStyle?: "solid" | "gradient" | "image";
|
|
55
|
+
/**
|
|
56
|
+
* External URL, not inline. A hero photo at Intercom's sizes is megabytes,
|
|
57
|
+
* and this config is fetched on every public page load.
|
|
58
|
+
*/
|
|
59
|
+
heroImageUrl?: string;
|
|
60
|
+
heroHeight?: 245 | 360 | 480;
|
|
61
|
+
searchSize?: "sm" | "md" | "lg";
|
|
62
|
+
/** At most three, mirroring Intercom. */
|
|
63
|
+
links?: HelpCenterLink[];
|
|
64
|
+
}
|
|
65
|
+
export interface HelpCenterFooter {
|
|
66
|
+
template?: "simple" | "classic" | "multi";
|
|
67
|
+
links?: HelpCenterLink[];
|
|
68
|
+
socialLinks?: HelpCenterLink[];
|
|
69
|
+
showPoweredBy?: boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface HelpCenterLink {
|
|
72
|
+
id: string;
|
|
73
|
+
url: string;
|
|
74
|
+
/** Icon name, for a social link. */
|
|
75
|
+
icon?: string;
|
|
76
|
+
/** Group heading in the multi-column footer. */
|
|
77
|
+
group?: string;
|
|
78
|
+
labels?: {
|
|
79
|
+
locale: KbLocale;
|
|
80
|
+
label: string;
|
|
81
|
+
}[];
|
|
82
|
+
}
|
|
83
|
+
export interface HelpCenterSearch {
|
|
84
|
+
enabled?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* `keyword` is free and is the default. `semantic` costs an embedding call
|
|
87
|
+
* per query made by a stranger, so it is opt-in and rate limited.
|
|
88
|
+
*/
|
|
89
|
+
mode?: "keyword" | "semantic";
|
|
90
|
+
}
|
|
91
|
+
export interface HelpCenterSeo {
|
|
92
|
+
googleAnalyticsId?: string;
|
|
93
|
+
/** Ask crawlers to stay away — for a help centre that is live but not launched. */
|
|
94
|
+
noindex?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface HelpCenterText {
|
|
97
|
+
locale: KbLocale;
|
|
98
|
+
/** Browser tab and the `<h1>` of the home page. */
|
|
99
|
+
title?: string;
|
|
100
|
+
tagline?: string;
|
|
101
|
+
searchPlaceholder?: string;
|
|
102
|
+
}
|
|
103
|
+
/** The link's label in one language, falling back to the first one it has. */
|
|
104
|
+
export declare function linkLabel(link: HelpCenterLink, locale: KbLocale): string;
|
|
105
|
+
/** The help centre's own copy for one language, falling back to the default. */
|
|
106
|
+
export declare function helpCenterText(helpCenter: Pick<HelpCenter, "translations">, locale: KbLocale, defaultLocale?: KbLocale): HelpCenterText;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** A language a knowledge base publishes in, e.g. `nl`, `en`, `de`. */
|
|
2
|
+
export type KbLocale = string;
|
|
1
3
|
export interface KnowledgeBase {
|
|
2
4
|
id: string;
|
|
3
5
|
organizationId: string;
|
|
@@ -5,15 +7,51 @@ export interface KnowledgeBase {
|
|
|
5
7
|
description?: string;
|
|
6
8
|
status: "draft" | "published";
|
|
7
9
|
visibility: "public" | "internal";
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The language articles are written in when nobody says otherwise, and the
|
|
12
|
+
* one a visitor falls back to. Absent on rows written before the migration
|
|
13
|
+
* — read it through `localesOf()` rather than directly.
|
|
14
|
+
*
|
|
15
|
+
* Deliberately not called `locale` alongside `locales`: two field names one
|
|
16
|
+
* letter apart on the same object is a bug waiting to be typed.
|
|
17
|
+
*/
|
|
18
|
+
defaultLocale?: KbLocale;
|
|
19
|
+
/** Every language this base is authored in. The default is always a member. */
|
|
20
|
+
locales?: KbLocale[];
|
|
21
|
+
/** @deprecated The single language a base used to have. Superseded by
|
|
22
|
+
* `defaultLocale`; kept so the backfill can still read it. */
|
|
23
|
+
locale?: KbLocale;
|
|
24
|
+
}
|
|
25
|
+
/** A name and blurb for one language. Never a map keyed by locale: the http
|
|
26
|
+
* client mangles object keys, so `{ "nl-NL": … }` does not survive the wire. */
|
|
27
|
+
export interface KbTranslation {
|
|
28
|
+
locale: KbLocale;
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
9
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* A collection of articles. Nests into itself up to three levels.
|
|
34
|
+
*
|
|
35
|
+
* The structure is language-neutral — one tree, however many languages the base
|
|
36
|
+
* publishes — and only the labels are translated. That is what keeps an editor
|
|
37
|
+
* from rebuilding the same tree per language.
|
|
38
|
+
*/
|
|
10
39
|
export interface KbCategory {
|
|
11
40
|
id: string;
|
|
12
41
|
organizationId: string;
|
|
13
42
|
knowledgeBaseId: string;
|
|
14
|
-
|
|
15
|
-
|
|
43
|
+
/** Parent collection, or absent for a top-level one. */
|
|
44
|
+
parentId?: string;
|
|
45
|
+
/** Icon name from the shared set, shown on the public collection card. */
|
|
46
|
+
icon?: string;
|
|
47
|
+
/** Labels per language. Empty until the migration has run. */
|
|
48
|
+
translations?: KbTranslation[];
|
|
16
49
|
order: number;
|
|
50
|
+
/** @deprecated Pre-migration label; read `translations`. Kept so the
|
|
51
|
+
* backfill still has something to convert. */
|
|
52
|
+
name?: string;
|
|
53
|
+
/** @deprecated See `name`. */
|
|
54
|
+
description?: string;
|
|
17
55
|
}
|
|
18
56
|
export interface KbArticle {
|
|
19
57
|
id: string;
|
|
@@ -25,6 +63,23 @@ export interface KbArticle {
|
|
|
25
63
|
status: "draft" | "published";
|
|
26
64
|
authorId?: string;
|
|
27
65
|
order: number;
|
|
66
|
+
/**
|
|
67
|
+
* The language this article is written in. An article in Dutch and its
|
|
68
|
+
* English version are two rows, not one row with two bodies: they have
|
|
69
|
+
* their own publish state, their own author and their own search chunks.
|
|
70
|
+
*/
|
|
71
|
+
locale?: KbLocale;
|
|
72
|
+
/**
|
|
73
|
+
* Ties an article to its versions in other languages. Defaults to the
|
|
74
|
+
* article's own id, so a single-language article is a group of one.
|
|
75
|
+
*/
|
|
76
|
+
translationGroupId?: string;
|
|
77
|
+
/** URL segment, unique per (knowledge base, language). */
|
|
78
|
+
slug?: string;
|
|
79
|
+
/** Set the first time the article is published; never cleared. */
|
|
80
|
+
publishedAt?: number;
|
|
81
|
+
/** Short summary for the collection listing and the meta description. */
|
|
82
|
+
excerpt?: string;
|
|
28
83
|
/**
|
|
29
84
|
* Framework-generated (never declared in the server entitySchema, which would
|
|
30
85
|
* type it `never`). It has always been on the wire; it just was not on this
|
|
@@ -33,3 +88,11 @@ export interface KbArticle {
|
|
|
33
88
|
createdAt?: number;
|
|
34
89
|
updatedAt?: number;
|
|
35
90
|
}
|
|
91
|
+
/** Last resort when a base names no language at all. */
|
|
92
|
+
export declare const KB_FALLBACK_LOCALE: KbLocale;
|
|
93
|
+
/** The language a base defaults to, whichever generation of the row this is. */
|
|
94
|
+
export declare function defaultLocaleOf(kb: Pick<KnowledgeBase, "defaultLocale" | "locale">): KbLocale;
|
|
95
|
+
/** The languages a base publishes in, with the default guaranteed first. */
|
|
96
|
+
export declare function localesOf(kb: Pick<KnowledgeBase, "defaultLocale" | "locale" | "locales">): KbLocale[];
|
|
97
|
+
/** The label for a collection in one language, falling back to the base's default. */
|
|
98
|
+
export declare function categoryLabel(category: Pick<KbCategory, "translations" | "name">, locale: KbLocale, defaultLocale?: KbLocale): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=10,_=10,T=10,b=5,Pe=new Set(["header","section","context","divider","image","list","actions","attachments"]);function O(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 Ke(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const a of e){if(n.length>=k){t("more than "+k+" blocks; the rest was dropped");break}if(!a||typeof a!="object")continue;const i=a;if(!Pe.has(i.type)){t("unknown block type "+String(i.type));continue}switch(i.type){case"header":if(!O(i.text)){t("a header without text");continue}break;case"context":if(!O(i.text)){t("a context block without text");continue}break;case"image":if(!i.url||!i.alt){t("an image without url or alt");continue}break;case"section":Array.isArray(i.fields)&&i.fields.length>_&&(t("more than "+_+" fields in a section"),i.fields=i.fields.slice(0,_));break;case"list":if(!Array.isArray(i.items)||i.items.length===0){t("a list without items");continue}i.items.length>T&&(t("more than "+T+" list items"),i.items=i.items.slice(0,T));break;case"actions":{const r=Array.isArray(i.elements)?i.elements:[],o=r.filter(s=>s&&s.action_id&&s.invoke&&O(s.text));if(o.length!==r.length&&t("an action without action_id, invoke or text"),o.length===0)continue;o.length>b&&t("more than "+b+" actions"),i.elements=o.slice(0,b);break}}n.push(i)}return n}function oe(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 E(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 H(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function v(e){return e?.split("@")?.[0]||e||""}function y(e){return e.map(t=>t.name).join(", ")}function j(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const f={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${v(e.payload.from)}`:`Outbound call started — ${v(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?` (${E(e.payload.duration)})`:""}`,timeline:e=>`Call ended${H(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${v(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?` (${E(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:X},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:X},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=>`${y(e.payload.members)} toegevoegd`,timeline:e=>{const t=y(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=>`${y(e.payload.members)} verlaten`,timeline:e=>{const t=y(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=>`${j(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?` (${E(e.payload.duration)})`:""}`,timeline:e=>`${j(e.payload.callType)} ended${H(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?` (${E(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 X(e){const t=e.payload,n=t.bodySnippet?.trim()||oe(t.body??"");return t.subject?`${t.subject} — ${n}`:n}function u(e){return f[e]}function Ge(e){return u(e)?.icon??"circle"}function Be(e){return u(e)?.channelKind}function Fe(e){const t=u(e)?.shape;return t==="message"||t==="note"}function Ve(e){return u(e)?.replyable===!0}function He(e){return u(e)?.carriesText===!0}function je(e){return u(e)?.countsAs}function Xe(e){return u(e)?.playbookAuthored===!0}function se(e){const t=u(e.type)?.snippet;return t?t(e):""}function We(e,t){const n=u(e.type)?.timeline;return n?n(e,t):e.type.replace(/_/g," ").toLowerCase()}function Ye(e){const t=u(e.type)?.joinUrl;return t?t(e):void 0}function M(e,t){let n=e;for(const a of t.split(".")){if(n==null||typeof n!="object")return"";n=n[a]}return n==null?"":typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):""}function N(e,t,n){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return M(t,e.value)||null;const a={};for(const[r,o]of Object.entries(e.params??{}))a[r]=M(t,o);const i=n(e.key,a);return i===e.key?null:i}function le(e,t){if(!e||typeof e=="string"||"value"in e)return null;const n={};for(const[a,i]of Object.entries(e.params??{}))n[a]=M(t,i);return{key:e.key,params:n}}const ze=e=>e;function W(e){const t=f[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 Y(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 ce{constructor(t=[],n=ze){this.translate=n;for(const a of t)a?.type&&(a.type in f||this.declared.has(a.type)||this.declared.set(a.type,a))}declared=new Map;get(t){if(t in f)return W(t);const n=this.declared.get(t);return n?Y(n):void 0}triggerable(){const t=Object.keys(f).filter(a=>f[a].triggerable).map(W),n=[...this.declared.values()].map(Y).filter(a=>a.triggerable);return[...t,...n]}timelineText(t,n){const a=f[t.type];if(a?.timeline)return a.timeline(t,n);const i=this.declared.get(t.type);return N(i?.text,t,this.translate)??t.type.replace(/_/g," ").toLowerCase()}snippet(t){const n=f[t.type];if(n?.snippet)return n.snippet(t);const a=this.declared.get(t.type);return N(a?.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 qe=new ce,z=140;function Je(e){const t=e.trim();return t.length<=z?t:t.slice(0,z-1).trimEnd()+"…"}function Qe(e,t){const n=le(t?.text,e),a=t?N(t.text,e,i=>i):null;return{activityId:e.id,type:e.type,snippet:Je(a??se(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...n?{snippetKey:n.key,snippetParams:n.params}:{}}}function Ze(e,t,n=[]){const a=e.createdAt;if(!a)return[];const i=new Set(n);return e.author.type==="user"&&e.author.id&&i.add(e.author.id),Object.entries(t).filter(([r,o])=>o>=a&&!i.has(r)).map(([r])=>r)}function et(e){return e.createdAt??0}const tt=[{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 nt(e){const t=[];for(const n of Object.keys(e))for(const a of Object.keys(e[n]))t.push({lang:n,key:a,value:e[n][a]});return t}function L(e){return e<10?`0${e}`:`${e}`}function ue(e,t){const n=new Date(e),a=`${n.getUTCFullYear()}-${L(n.getUTCMonth()+1)}-${L(n.getUTCDate())}`;return t==="day"?a:`${a}T${L(n.getUTCHours())}`}function pe(e,t){const n=new Date(e);return n.setUTCMinutes(0,0,0),t==="day"&&n.setUTCHours(0),n.getTime()}const it=36e5,at=864e5;function rt(e,t,n){const a=n==="hour"?it:at,i=[];for(let r=pe(e,n);r<=t;r+=a)i.push(ue(r,n));return i}const de=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],me=de.map(e=>e.id);function fe(e,t){return`${e}.usage.${t}`}function ot(e,t){return t.map(n=>({id:fe(e,n.unit),label:n.label,category:"Verbruik",valueType:n.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...me,...n.extraDimensions??[],"time"]}))}const ge=new Set(["info","success","warning","destructive"]),x=200,D=100,$=200,U=12,w=4,K=4e3,I=500,st=256*1024,lt=new Set(["heading","paragraph","list","quote","code","divider","table","kpi","callout"]),he=["http:","https:","mailto:","tel:"],ct=/^[a-z][a-z0-9+.-]*:/i;function Ae(e){const t=e.trim().replace(/^<|>$/g,"");if(!t)return!1;const n=ct.exec(t)?.[0];return n?he.includes(n.toLowerCase()):!t.startsWith("//")}const ut=/^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;function pt(e){let t="",n=0;for(;n<e.length;){const a=e[n]==="!"&&e[n+1]==="[";if(e[n]!=="["&&!a){t+=e[n],n+=1;continue}const i=n+(a?2:1),r=q(e,i,"[","]");if(r<0||e[r+1]!=="("){t+=e[n],n+=1;continue}const o=q(e,r+2,"(",")");if(o<0){t+=e[n],n+=1;continue}const s=e.slice(i,r),m=e.slice(r+2,o).trim().split(/\s+/)[0]??"";t+=a||!Ae(m)?s:e.slice(n,o+1),n=o+1}return t}function q(e,t,n,a){let i=1;for(let r=t;r<e.length;r+=1){if(e[r]==="\\"){r+=1;continue}if(e[r]===n)i+=1;else if(e[r]===a&&(i-=1,i===0))return r}return-1}function Ee(e){return pt(e).replace(ut,(t,n,a)=>Ae(a)?t:"")}function c(e,t=K){return typeof e=="string"?Ee(e).slice(0,t):""}function dt(e,t=K){return typeof e=="string"?e.slice(0,t):""}function mt(e,t="info"){return typeof e=="string"&&ge.has(e)?e:t}function ft(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const a of e){if(n.length>=x){t("more than "+x+" blocks; the rest was dropped");break}if(!a||typeof a!="object")continue;const i=a;if(!lt.has(i.type)){t("unknown block type "+String(i.type));continue}const r=typeof i.block_id=="string"?{block_id:i.block_id}:{};switch(i.type){case"heading":{const o=c(i.text);if(!o){t("a heading without text");continue}const s=i.level===2||i.level===3?i.level:1;n.push({...r,type:"heading",level:s,text:o});break}case"paragraph":{const o=c(i.text);if(!o){t("a paragraph without text");continue}n.push({...r,type:"paragraph",text:o});break}case"quote":{const o=c(i.text);if(!o){t("a quote without text");continue}n.push({...r,type:"quote",text:o});break}case"code":{const o=dt(i.text);if(!o){t("a code block without text");continue}const s=typeof i.lang=="string"?{lang:i.lang.slice(0,32)}:{};n.push({...r,type:"code",...s,text:o});break}case"divider":n.push({...r,type:"divider"});break;case"list":{const o=Array.isArray(i.items)?i.items:[],s=[];for(const p of o){if(s.length>=D){t("more than "+D+" list items");break}const d=c(p?.text);if(!d)continue;const l=c(p?.lead,200);s.push(l?{lead:l,text:d}:{text:d})}if(s.length===0){t("a list without usable items");continue}const m=i.style==="numbered"?"numbered":"bulleted";n.push({...r,type:"list",style:m,items:s});break}case"table":{const o=Array.isArray(i.columns)?i.columns:[],s=[];for(const l of o){if(s.length>=U){t("more than "+U+" table columns");break}const A=c(l?.label,I),R=l?.align==="right"?"right":void 0;s.push(R?{label:A,align:R}:{label:A})}if(s.length===0){t("a table without columns");continue}const m=Array.isArray(i.rows)?i.rows:[],p=[];for(const l of m){if(p.length>=$){t("more than "+$+" table rows");break}const A=Array.isArray(l)?l:[];p.push(s.map((R,we)=>c(A[we],I)))}const d=c(i.caption,I);n.push({...r,type:"table",columns:s,rows:p,...d?{caption:d}:{}});break}case"kpi":{const o=Array.isArray(i.items)?i.items:[],s=[];for(const m of o){if(s.length>=w){t("more than "+w+" kpi items");break}const p=c(m?.value,40),d=c(m?.label,80);if(!p||!d)continue;const l=m?.tone;s.push(typeof l=="string"&&ge.has(l)?{value:p,label:d,tone:l}:{value:p,label:d})}if(s.length===0){t("a kpi block without usable items");continue}n.push({...r,type:"kpi",items:s});break}case"callout":{const o=c(i.text);if(!o){t("a callout without text");continue}const s=c(i.title,200);n.push({...r,type:"callout",tone:mt(i.tone),...s?{title:s}:{},text:o});break}}}return n}function gt(e){return JSON.stringify(e).length}function ht(e){return{blocks:e.length,types:e.map(t=>t.type),headings:e.flatMap(t=>t.type==="heading"?[t.text]:[])}}function J(e){return e.replace(/\|/g,"\\|").replace(/\r?\n/g," ").trim()}function Q(e,t,n){const a=e.map((i,r)=>n?.[r]==="right"?"---:":"---");return[`| ${e.map(J).join(" | ")} |`,`| ${a.join(" | ")} |`,...t.map(i=>`| ${i.map(J).join(" | ")} |`)]}function At(e){switch(e.type){case"heading":return[`${"#".repeat(e.level)} ${e.text}`];case"paragraph":return[e.text];case"quote":return e.text.split(/\r?\n/).map(t=>`> ${t}`);case"code":return[`\`\`\`${e.lang??""}`,e.text,"```"];case"divider":return["---"];case"list":return e.items.map((t,n)=>{const a=e.style==="numbered"?`${n+1}.`:"-";return t.lead?`${a} **${t.lead}** ${t.text}`:`${a} ${t.text}`});case"table":{const t=Q(e.columns.map(n=>n.label),e.rows,e.columns.map(n=>n.align??"left"));return e.caption?[...t,"",`*${e.caption}*`]:t}case"kpi":return Q(e.items.map(t=>t.value),[e.items.map(t=>t.label)]);case"callout":return(e.title?`**${e.title}** ${e.text}`:e.text).split(/\r?\n/).map(n=>`> ${n}`)}}function Et(e,t){const n=[],a=e.some(i=>i.type==="heading"&&i.level===1);t&&!a&&n.push(`# ${t}`);for(const i of e){const r=At(i);r.length>0&&n.push(r.join(`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=10,_=10,T=10,b=5,We=new Set(["header","section","context","divider","image","list","actions","attachments"]);function L(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 Xe(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const a of e){if(n.length>=x){t("more than "+x+" blocks; the rest was dropped");break}if(!a||typeof a!="object")continue;const i=a;if(!We.has(i.type)){t("unknown block type "+String(i.type));continue}switch(i.type){case"header":if(!L(i.text)){t("a header without text");continue}break;case"context":if(!L(i.text)){t("a context block without text");continue}break;case"image":if(!i.url||!i.alt){t("an image without url or alt");continue}break;case"section":Array.isArray(i.fields)&&i.fields.length>_&&(t("more than "+_+" fields in a section"),i.fields=i.fields.slice(0,_));break;case"list":if(!Array.isArray(i.items)||i.items.length===0){t("a list without items");continue}i.items.length>T&&(t("more than "+T+" list items"),i.items=i.items.slice(0,T));break;case"actions":{const r=Array.isArray(i.elements)?i.elements:[],o=r.filter(s=>s&&s.action_id&&s.invoke&&L(s.text));if(o.length!==r.length&&t("an action without action_id, invoke or text"),o.length===0)continue;o.length>b&&t("more than "+b+" actions"),i.elements=o.slice(0,b);break}}n.push(i)}return n}function oe(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 E(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 H(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function O(e){return e?.split("@")?.[0]||e||""}function y(e){return e.map(t=>t.name).join(", ")}function j(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const m={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${O(e.payload.from)}`:`Outbound call started — ${O(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?` (${E(e.payload.duration)})`:""}`,timeline:e=>`Call ended${H(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${O(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?` (${E(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:W},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:W},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=>`${y(e.payload.members)} toegevoegd`,timeline:e=>{const t=y(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=>`${y(e.payload.members)} verlaten`,timeline:e=>{const t=y(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=>`${j(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?` (${E(e.payload.duration)})`:""}`,timeline:e=>`${j(e.payload.callType)} ended${H(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?` (${E(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 W(e){const t=e.payload,n=t.bodySnippet?.trim()||oe(t.body??"");return t.subject?`${t.subject} — ${n}`:n}function p(e){return m[e]}function Ye(e){return p(e)?.icon??"circle"}function ze(e){return p(e)?.channelKind}function qe(e){const t=p(e)?.shape;return t==="message"||t==="note"}function Je(e){return p(e)?.replyable===!0}function Qe(e){return p(e)?.carriesText===!0}function Ze(e){return p(e)?.countsAs}function et(e){return p(e)?.playbookAuthored===!0}function se(e){const t=p(e.type)?.snippet;return t?t(e):""}function tt(e,t){const n=p(e.type)?.timeline;return n?n(e,t):e.type.replace(/_/g," ").toLowerCase()}function nt(e){const t=p(e.type)?.joinUrl;return t?t(e):void 0}function M(e,t){let n=e;for(const a of t.split(".")){if(n==null||typeof n!="object")return"";n=n[a]}return n==null?"":typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):""}function N(e,t,n){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return M(t,e.value)||null;const a={};for(const[r,o]of Object.entries(e.params??{}))a[r]=M(t,o);const i=n(e.key,a);return i===e.key?null:i}function le(e,t){if(!e||typeof e=="string"||"value"in e)return null;const n={};for(const[a,i]of Object.entries(e.params??{}))n[a]=M(t,i);return{key:e.key,params:n}}const it=e=>e;function X(e){const t=m[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 Y(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 ce{constructor(t=[],n=it){this.translate=n;for(const a of t)a?.type&&(a.type in m||this.declared.has(a.type)||this.declared.set(a.type,a))}declared=new Map;get(t){if(t in m)return X(t);const n=this.declared.get(t);return n?Y(n):void 0}triggerable(){const t=Object.keys(m).filter(a=>m[a].triggerable).map(X),n=[...this.declared.values()].map(Y).filter(a=>a.triggerable);return[...t,...n]}timelineText(t,n){const a=m[t.type];if(a?.timeline)return a.timeline(t,n);const i=this.declared.get(t.type);return N(i?.text,t,this.translate)??t.type.replace(/_/g," ").toLowerCase()}snippet(t){const n=m[t.type];if(n?.snippet)return n.snippet(t);const a=this.declared.get(t.type);return N(a?.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 at=new ce,z=140;function rt(e){const t=e.trim();return t.length<=z?t:t.slice(0,z-1).trimEnd()+"…"}function ot(e,t){const n=le(t?.text,e),a=t?N(t.text,e,i=>i):null;return{activityId:e.id,type:e.type,snippet:rt(a??se(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...n?{snippetKey:n.key,snippetParams:n.params}:{}}}function st(e,t,n=[]){const a=e.createdAt;if(!a)return[];const i=new Set(n);return e.author.type==="user"&&e.author.id&&i.add(e.author.id),Object.entries(t).filter(([r,o])=>o>=a&&!i.has(r)).map(([r])=>r)}function lt(e){return e.createdAt??0}const ct=[{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 ut(e){const t=[];for(const n of Object.keys(e))for(const a of Object.keys(e[n]))t.push({lang:n,key:a,value:e[n][a]});return t}function v(e){return e<10?`0${e}`:`${e}`}function ue(e,t){const n=new Date(e),a=`${n.getUTCFullYear()}-${v(n.getUTCMonth()+1)}-${v(n.getUTCDate())}`;return t==="day"?a:`${a}T${v(n.getUTCHours())}`}function pe(e,t){const n=new Date(e);return n.setUTCMinutes(0,0,0),t==="day"&&n.setUTCHours(0),n.getTime()}const pt=36e5,dt=864e5;function ft(e,t,n){const a=n==="hour"?pt:dt,i=[];for(let r=pe(e,n);r<=t;r+=a)i.push(ue(r,n));return i}const de=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],fe=de.map(e=>e.id);function me(e,t){return`${e}.usage.${t}`}function mt(e,t){return t.map(n=>({id:me(e,n.unit),label:n.label,category:"Verbruik",valueType:n.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...fe,...n.extraDimensions??[],"time"]}))}const ge=new Set(["info","success","warning","destructive"]),k=200,$=100,D=200,U=12,P=4,K=4e3,I=500,gt=256*1024,ht=new Set(["heading","paragraph","list","quote","code","divider","table","kpi","callout"]),he=["http:","https:","mailto:","tel:"],At=/^[a-z][a-z0-9+.-]*:/i;function Ae(e){const t=e.trim().replace(/^<|>$/g,"");if(!t)return!1;const n=At.exec(t)?.[0];return n?he.includes(n.toLowerCase()):!t.startsWith("//")}const Et=/^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;function yt(e){let t="",n=0;for(;n<e.length;){const a=e[n]==="!"&&e[n+1]==="[";if(e[n]!=="["&&!a){t+=e[n],n+=1;continue}const i=n+(a?2:1),r=q(e,i,"[","]");if(r<0||e[r+1]!=="("){t+=e[n],n+=1;continue}const o=q(e,r+2,"(",")");if(o<0){t+=e[n],n+=1;continue}const s=e.slice(i,r),l=e.slice(r+2,o).trim().split(/\s+/)[0]??"";t+=a||!Ae(l)?s:e.slice(n,o+1),n=o+1}return t}function q(e,t,n,a){let i=1;for(let r=t;r<e.length;r+=1){if(e[r]==="\\"){r+=1;continue}if(e[r]===n)i+=1;else if(e[r]===a&&(i-=1,i===0))return r}return-1}function Ee(e){return yt(e).replace(Et,(t,n,a)=>Ae(a)?t:"")}function u(e,t=K){return typeof e=="string"?Ee(e).slice(0,t):""}function _t(e,t=K){return typeof e=="string"?e.slice(0,t):""}function Tt(e,t="info"){return typeof e=="string"&&ge.has(e)?e:t}function bt(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const a of e){if(n.length>=k){t("more than "+k+" blocks; the rest was dropped");break}if(!a||typeof a!="object")continue;const i=a;if(!ht.has(i.type)){t("unknown block type "+String(i.type));continue}const r=typeof i.block_id=="string"?{block_id:i.block_id}:{};switch(i.type){case"heading":{const o=u(i.text);if(!o){t("a heading without text");continue}const s=i.level===2||i.level===3?i.level:1;n.push({...r,type:"heading",level:s,text:o});break}case"paragraph":{const o=u(i.text);if(!o){t("a paragraph without text");continue}n.push({...r,type:"paragraph",text:o});break}case"quote":{const o=u(i.text);if(!o){t("a quote without text");continue}n.push({...r,type:"quote",text:o});break}case"code":{const o=_t(i.text);if(!o){t("a code block without text");continue}const s=typeof i.lang=="string"?{lang:i.lang.slice(0,32)}:{};n.push({...r,type:"code",...s,text:o});break}case"divider":n.push({...r,type:"divider"});break;case"list":{const o=Array.isArray(i.items)?i.items:[],s=[];for(const d of o){if(s.length>=$){t("more than "+$+" list items");break}const f=u(d?.text);if(!f)continue;const c=u(d?.lead,200);s.push(c?{lead:c,text:f}:{text:f})}if(s.length===0){t("a list without usable items");continue}const l=i.style==="numbered"?"numbered":"bulleted";n.push({...r,type:"list",style:l,items:s});break}case"table":{const o=Array.isArray(i.columns)?i.columns:[],s=[];for(const c of o){if(s.length>=U){t("more than "+U+" table columns");break}const A=u(c?.label,I),R=c?.align==="right"?"right":void 0;s.push(R?{label:A,align:R}:{label:A})}if(s.length===0){t("a table without columns");continue}const l=Array.isArray(i.rows)?i.rows:[],d=[];for(const c of l){if(d.length>=D){t("more than "+D+" table rows");break}const A=Array.isArray(c)?c:[];d.push(s.map((R,je)=>u(A[je],I)))}const f=u(i.caption,I);n.push({...r,type:"table",columns:s,rows:d,...f?{caption:f}:{}});break}case"kpi":{const o=Array.isArray(i.items)?i.items:[],s=[];for(const l of o){if(s.length>=P){t("more than "+P+" kpi items");break}const d=u(l?.value,40),f=u(l?.label,80);if(!d||!f)continue;const c=l?.tone;s.push(typeof c=="string"&&ge.has(c)?{value:d,label:f,tone:c}:{value:d,label:f})}if(s.length===0){t("a kpi block without usable items");continue}n.push({...r,type:"kpi",items:s});break}case"callout":{const o=u(i.text);if(!o){t("a callout without text");continue}const s=u(i.title,200);n.push({...r,type:"callout",tone:Tt(i.tone),...s?{title:s}:{},text:o});break}}}return n}function It(e){return JSON.stringify(e).length}function St(e){return{blocks:e.length,types:e.map(t=>t.type),headings:e.flatMap(t=>t.type==="heading"?[t.text]:[])}}function J(e){return e.replace(/\|/g,"\\|").replace(/\r?\n/g," ").trim()}function Q(e,t,n){const a=e.map((i,r)=>n?.[r]==="right"?"---:":"---");return[`| ${e.map(J).join(" | ")} |`,`| ${a.join(" | ")} |`,...t.map(i=>`| ${i.map(J).join(" | ")} |`)]}function Mt(e){switch(e.type){case"heading":return[`${"#".repeat(e.level)} ${e.text}`];case"paragraph":return[e.text];case"quote":return e.text.split(/\r?\n/).map(t=>`> ${t}`);case"code":return[`\`\`\`${e.lang??""}`,e.text,"```"];case"divider":return["---"];case"list":return e.items.map((t,n)=>{const a=e.style==="numbered"?`${n+1}.`:"-";return t.lead?`${a} **${t.lead}** ${t.text}`:`${a} ${t.text}`});case"table":{const t=Q(e.columns.map(n=>n.label),e.rows,e.columns.map(n=>n.align??"left"));return e.caption?[...t,"",`*${e.caption}*`]:t}case"kpi":return Q(e.items.map(t=>t.value),[e.items.map(t=>t.label)]);case"callout":return(e.title?`**${e.title}** ${e.text}`:e.text).split(/\r?\n/).map(n=>`> ${n}`)}}function Nt(e,t){const n=[],a=e.some(i=>i.type==="heading"&&i.level===1);t&&!a&&n.push(`# ${t}`);for(const i of e){const r=Mt(i);r.length>0&&n.push(r.join(`
|
|
2
2
|
`))}return`${n.join(`
|
|
3
3
|
|
|
4
4
|
`)}
|
|
5
|
-
`}const
|
|
5
|
+
`}const B=e=>`user:${e}`,G=e=>`team:${e}`;function Ct(e){const t=new Set;for(const n of e??[])n?.id&&(n.kind==="user"&&t.add(B(n.id)),n.kind==="team"&&t.add(G(n.id)));return[...t].sort()}function Rt(e,t){return[B(e),...t.map(G)]}function Lt(e){const t=new Set;for(const n of e??[])n?.kind&&t.add(n.kind);return[...t]}function Ot(e){return(e.startsWith("tool:")?e.slice(5):e).replace(/__/g," · ").replace(/\./g," · ").replace(/_/g," ")}const vt=[{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"}],xt={topics:[{name:"topic",type:"string"},{name:"confidence",type:"number"}],question:[{name:"answer",type:"boolean"},{name:"confidence",type:"number"}],extract:[]};function ye(e){switch(e.kind){case"user":return`user:${e.userId}`;case"team":return`team:${e.teamId}`;case"org":return"org"}}function kt(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 a=t.slice(0,n),i=t.slice(n+1).trim();if(i){if(a==="user")return{kind:"user",userId:i};if(a==="team")return{kind:"team",teamId:i}}}function _e(e){return ye(e)}function $t(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 Dt(e){return _e(e)}const Te=["done","escalated","failed","timed_out","stopped"],be=["awaiting_approval","awaiting_reply"];function Ie(e){return Te.includes(e)}function Ut(e){return Ie(e)}function Pt(e){return be.includes(e)}function wt(e,t){const n=e.labels??[];return n.find(a=>a.locale===t)?.label??n[0]?.label??e.url}function Kt(e,t,n){const a=e.translations??[];return a.find(i=>i.locale===t)??(n?a.find(i=>i.locale===n):void 0)??{locale:t}}const Se="en";function Me(e){return e.defaultLocale||e.locale||Se}function Bt(e){const t=new Set,n=[];for(const a of[Me(e),...e.locales??[]])!a||t.has(a)||(t.add(a),n.push(a));return n}function Gt(e,t,n){const a=e.translations??[];return a.find(i=>i.locale===t)?.name??(n?a.find(i=>i.locale===n)?.name:void 0)??e.name}const F=[{id:"openai",attachmentKinds:["image","pdf"],label:"OpenAI",capabilities:["chat","transcription","embedding"],defaultModel:"gpt-5-mini",baseUrl:"https://api.openai.com/v1"},{id:"gemini",attachmentKinds:["image","pdf"],label:"Google Gemini",capabilities:["chat","transcription","embedding"],defaultModel:"gemini-3.5-flash",baseUrl:"https://generativelanguage.googleapis.com/v1beta"},{id:"anthropic",attachmentKinds:["image","pdf"],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 h(e){return F.find(t=>t.id===e)}function Ft(e){return h(e)?.label??e}function Vt(e,t="gpt-5-mini"){return h(e)?.defaultModel??t}function Ht(e){return F.filter(t=>t.capabilities.includes(e))}function jt(e){const t=h(e);return!!t&&!t.baseUrl}function Wt(e,t){return t==="text"?!0:h(e)?.attachmentKinds?.includes(t)===!0}const Xt=new Set(["mail","message"]);function Ne(e,t){const n=e.settings?.signatures?.[t];return!n||!n.enabled||!n.body||n.body.trim()===""?null:n}function Yt(e,t,n,a="html"){if(!e)return n;const i=Ne(e,t);return i?`${n}${a==="text"?`
|
|
6
6
|
|
|
7
|
-
`:t==="mail"?"<br><br>-- <br>":"<br><br>"}${i.body}`:n}function
|
|
7
|
+
`:t==="mail"?"<br><br>-- <br>":"<br><br>"}${i.body}`:n}function zt(e){return e.endpoints??[]}const qt=e=>!!e.assignedUserId||!!e.assignedInboxId,Jt=e=>e.status==="closed",Qt=e=>({urgent:10,high:5,normal:2,low:1})[e.priority]||0,Zt=(e,t=30)=>e.title?.length<=t?e.title:`${e.title.substring(0,t)}...`;function en(e,t){return e.lastActivityAt?!(e.seenBy??[]).includes(t):!1}const tn=2e3,nn=500,an=12e3,rn=4e3,Ce=["contact","company"];function on(e){if(!e)return!1;const t=e.slice(0,e.indexOf(":"));return Ce.includes(t)}const C={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}},Re="NL",sn=15,ln=8,cn=Array.from(new Set(Object.values(C).map(e=>e.callingCode))).sort((e,t)=>t.length-e.length);function Z(e){if(e)return C[e.trim().toUpperCase()]}function S(e,t){return e.length>=t.nsnMin&&e.length<=t.nsnMax}function ee(e){if(e.length>sn)return null;for(const t of cn){if(!e.startsWith(t))continue;const n=e.slice(t.length);for(const a of Object.values(C)){if(a.callingCode!==t)continue;const i=a.trunkPrefix,r=i&&n.startsWith(i)?n.slice(i.length):n;if(S(r,a))return`+${t}${r}`}return null}return e.length<ln?null:`+${e}`}function un(e){let t=e.trim();const n=t.match(/^(sips?|tel|whatsapp):/i);n&&(t=t.slice(n[0].length));const a=t.indexOf("@");return a>=0&&(t=t.slice(0,a)),t.trim()}function pn(e){if(!e)return!1;const t=e.indexOf("@");if(t<=0)return!1;const n=e.slice(0,t).trim();return!/^[+\d\s().-]+$/.test(n)}function w(e,t){if(!e)return null;const n=un(e);if(!n)return null;const a=n.startsWith("+"),i=n.replace(/\D/g,"");if(!i)return null;if(a)return ee(i);if(i.startsWith("00"))return ee(i.slice(2));const r=Z(t)??Z(Re);if(!r)return null;const o=r.trunkPrefix;if(o&&i.startsWith(o)){const s=i.slice(o.length);return S(s,r)?`+${r.callingCode}${s}`:null}if(i.startsWith(r.callingCode)){const s=i.slice(r.callingCode.length);if(S(s,r))return`+${r.callingCode}${s}`}return!o&&S(i,r)?`+${r.callingCode}${i}`:null}function dn(e,t=9){const n=(e??"").replace(/\D/g,"");return n.length<t?null:n.slice(-t)}function V(e){if(!e)return null;const t=e.trim().toLowerCase(),n=t.lastIndexOf("@");if(n<=0||n===t.length-1)return null;const a=t.slice(0,n).split("+")[0],i=t.slice(n+1);return!a||!i.includes(".")?null:`${a}@${i}`}function fn(e){const t=V(e);return t?t.slice(t.lastIndexOf("@")+1):null}const mn=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","co.nz","com.br","co.za"]);function Le(e){if(!e)return null;const t=e.trim().toLowerCase().replace(/\.$/,"").split(".").filter(Boolean);if(t.length<2)return null;const n=t.slice(-2).join(".");return mn.has(n)&&t.length>=3?t.slice(-3).join("."):n}const Oe=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 gn(e){const t=Le(e);return t?Oe.has(t):!1}function hn(e){if(!e)return!1;const t=e.trim().toLowerCase();return t==="tel"||t==="sms"||t==="whatsapp"||t==="fax"}function An(e,t,n){if(!e||!t)return null;const a=e.trim().toLowerCase();if(a==="tel"||a==="sms"||a==="whatsapp"){const r=w(t,n);return r?`tel:${r}`:null}if(a==="fax"){const r=w(t,n);return r?`fax:${r}`:null}if(a==="mailto"||a==="email"){const r=V(t);return r?`mailto:${r}`:null}const i=t.trim().toLowerCase();return i?`${a}:${i}`:null}const En=/(\*\*|__)(?=\S)([\s\S]*?\S)\1/g,yn=/(\*|_)(?=\S)([^*_\n]*?\S)\1/g;function _n(e){if(typeof e!="string"||!e)return"";let t=e;return t=t.replace(/```[a-z]*\n?/gi,"").replace(/~~~[a-z]*\n?/gi,""),t=t.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1"),t=t.replace(/\[([^\]]*)\]\([^)]*\)/g,"$1"),t=t.replace(/\[([^\]]*)\]\[[^\]]*\]/g,"$1"),t=t.replace(/<((?:https?|mailto):[^>\s]+)>/gi,"$1"),t=t.split(`
|
|
8
8
|
`).map(n=>n.replace(/^\s{0,3}#{1,6}\s+/,"").replace(/^\s{0,3}>\s?/,"").replace(/^\s*[-*+]\s+/,"").replace(/^\s*\d+[.)]\s+/,"").replace(/^\s*(?:[-*_]\s*){3,}$/,"")).join(`
|
|
9
|
-
`),t=t.replace(
|
|
10
|
-
`);for(let n=0;n<t.length;n++)if(
|
|
9
|
+
`),t=t.replace(En,"$2"),t=t.replace(yn,"$2"),t=t.replace(/~~(?=\S)([\s\S]*?\S)~~/g,"$1"),t=t.replace(/`([^`\n]+)`/g,"$1"),t.replace(/\s+/g," ").trim()}const Tn=[/<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],te=/^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i,bn=/^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;function In(e){const t=e.split(`
|
|
10
|
+
`);for(let n=0;n<t.length;n++)if(bn.test(t[n])||te.test(t[n])&&t.slice(n+1,n+4).some(a=>te.test(a)))return t.slice(0,n).join(`
|
|
11
11
|
`).trim();return e}function ne(e){let t=e;return t=t.replace(/<(script|style)[\s\S]*?<\/\1>/gi,""),t=t.replace(/<br\s*\/?>/gi,`
|
|
12
12
|
`),t=t.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi,`
|
|
13
13
|
|
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
`),t=t.replace(/<\/(td|th)>/gi," "),t=t.replace(/<[^>]+>/g,""),t=t.replace(/<[^>]*$/,""),t}function ie(e){return!Number.isInteger(e)||e<0||e>1114111?null:String.fromCodePoint(e)}function ae(e){return e.replace(/ /gi," ").replace(/</gi,"<").replace(/>/gi,">").replace(/"/gi,'"').replace(/&#(\d+);/g,(t,n)=>ie(Number(n))??t).replace(/&#x([0-9a-f]+);/gi,(t,n)=>ie(parseInt(n,16))??t).replace(/&/gi,"&")}function re(e){return e.replace(/\r/g,"").replace(/[ \t]+/g," ").replace(/ *\n */g,`
|
|
16
16
|
`).replace(/\n{3,}/g,`
|
|
17
17
|
|
|
18
|
-
`).trim()}function
|
|
18
|
+
`).trim()}function Sn(e){if(typeof e!="string"||!e)return"";let t=e.length;for(const r of Tn){const o=e.search(r);o>=0&&o<t&&(t=o)}const n=e.slice(0,t);let a=re(ae(ne(n)));return a||(a=re(ae(ne(e)))),In(a)||a}const Mn=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i,Nn=/\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;function Cn(e,t){return!!(e&&Mn.test(e)||t&&Nn.test(t))}const ve=3,xe=600;function Rn(e,t){return e>=ve||t>=xe}const Ln=new Set(["image/png","image/jpeg","image/jpg","image/gif","image/webp"]),On=new Set(["text/plain","text/markdown","text/csv","application/json","text/html","application/xml","text/xml"]);function ke(e){const t=(e??"").trim().toLowerCase().split(";")[0];return t?Ln.has(t)?"image":t==="application/pdf"?"pdf":On.has(t)?"text":t.startsWith("audio/")?"audio":"unsupported":"unsupported"}const g=1024*1024,$e={image:5*g,pdf:20*g,text:1*g,audio:20*g},vn=25*g,xn=5;function kn(e,t){const n=ke(e);return n==="unsupported"?"unsupported":t>$e[n]?"too-large":null}function De(e,t){const n=new Set(e.disabledIntents??[]),a=e.intentOverrides??{},i=t.intents.filter(o=>!n.has(o.intent)).map(o=>Dn(o,a[o.intent]));if(!e.extraIntents||e.extraIntents.length===0)return i;const r=new Set(i.map(o=>o.intent));for(const o of e.extraIntents)r.has(o.intent)||(i.push(o),r.add(o.intent));return i}function Ue(e,t){const n={};for(const a of e.intents){if(!a.togglable)continue;const i=t?.[a.intent];n[a.intent]=i??a.defaultEnabled??!0}return n}function $n(e,t){const n=Ue(e,t);return Object.entries(n).filter(([,a])=>!a).map(([a])=>a)}function Dn(e,t){return t?{intent:t.intent??e.intent,targetSchemes:t.targetSchemes??e.targetSchemes,transport:t.transport??e.transport}:e}function Un(e,t){const n=[];for(const a of e){if(!a.enabled)continue;const i=t[a.providerId];if(i)for(const r of De(a,i))n.push({channel:a,description:i,capability:r})}return n}function Pn(e,t){return t.filter(n=>n.capability.intent===e)}function Pe(e,t){return t.filter(n=>n.capability.targetSchemes.includes(e))}function wn(e,t){return Pe(e.scheme,t)}function Kn(e,t,n){const a=[];for(const i of e)for(const r of n)r.capability.intent===t&&r.capability.targetSchemes.includes(i.scheme)&&a.push({channelIntent:r,endpoint:i});return a}var we=(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))(we||{});const Bn={mailto:"mail",sip:"tel",tel:"tel",fax:"tel",sms:"chat",teams:"chat",telegram:"chat",messenger:"chat",instagram:"chat",viber:"chat",whatsapp:"wa",webhook:"note",url:"note",calendar:"note",username:"note",id:"note",custom:"note"};function Gn(e){return e?Bn[e]??"note":"note"}const Fn="message_window",Vn="message_templates",Hn={FROM:"from",TO:"to",CC:"cc",BCC:"bcc",ORGANIZER:"organizer",PRESENTER:"presenter",ATTENDEE:"attendee",OWNER:"owner",MEMBER:"member",GUEST:"guest",HOST:"host",PARTICIPANT:"participant"},jn=(e,t)=>({intent:e,...t}),Wn="folder_management",Xn="remote_search",Yn={ok:!1,code:"UNSUPPORTED",message:"Provider does not support this op"},Ke="auth";function Be(e){const t=typeof e=="string"?e.match(/apps\/([^/?#]+)/):null;return t?t[1]:null}function zn(e){const t=Be(e);return t?t!==Ke:typeof e=="string"&&e.startsWith("/wake")}function qn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ge(e){const n=e.split("/").filter(Boolean).map(a=>a.startsWith(":")?a.endsWith("?")?"(?:/[^/]+)?":"/[^/]+":"/"+qn(a)).join("");return new RegExp(`^${n}\\/?$`)}function Fe(e,t){const n=e.split("/").filter(Boolean),a=t.split("/").filter(Boolean),i={};return n.forEach((r,o)=>{if(r.startsWith(":")){const s=r.endsWith("?")?r.slice(1,-1):r.slice(1),l=a[o];l&&(i[s]=l)}}),i}function Ve(e){return e.publicBasePath??`/apps/${e.name}`}function Jn(e){const t=[];for(const n of e){if(!n?.name)continue;const a=Ve(n);for(const i of n.routes??[]){if(!i.public)continue;const r=i.path==="/"?"":i.path;t.push({appName:n.name,resource:i.resource,pattern:`${a}${r}`})}}return t}function Qn(e,t){const n=e.split("/").filter(Boolean),a=t.split("/").filter(Boolean);for(let i=0;i<Math.min(n.length,a.length);i++){const r=n[i].startsWith(":"),o=a[i].startsWith(":");if(r!==o)return o}return n.length>a.length}function He(e,t){if(typeof e!="string")return null;let n=null;for(const a of t)Ge(a.pattern).test(e)&&(!n||Qn(a.pattern,n.pattern))&&(n=a);return n?{...n,params:Fe(n.pattern,e)}:null}function Zn(e,t){return He(e,t)!==null}const ei=9e4,ti="installation-id";exports.ACTIVITY_CATALOG=m;exports.AI_ATTACHMENT_LIMITS=$e;exports.AI_ATTACHMENT_MAX_PER_TURN=xn;exports.AI_ATTACHMENT_TURN_BUDGET=vn;exports.AI_VENDORS=F;exports.ALLOWED_LINK_SCHEMES=he;exports.ARTIFACT_MAX_BLOCKS=k;exports.ARTIFACT_MAX_BODY_BYTES=gt;exports.ARTIFACT_MAX_CELL_LEN=I;exports.ARTIFACT_MAX_KPI_ITEMS=P;exports.ARTIFACT_MAX_LIST_ITEMS=$;exports.ARTIFACT_MAX_TABLE_COLUMNS=U;exports.ARTIFACT_MAX_TABLE_ROWS=D;exports.ARTIFACT_MAX_TEXT_LEN=K;exports.AUTH_APP_NAME=Ke;exports.ActivityTypeRegistry=ce;exports.BUILT_IN_ONLY=at;exports.CLASSIFY_VARS=xt;exports.CORE_DIMENSIONS=ct;exports.CommunicationScheme=we;exports.DEFAULT_MEMORY_BUDGET=rn;exports.DEFAULT_PHONE_REGION=Re;exports.FEATURE_FOLDER_MANAGEMENT=Wn;exports.FEATURE_REMOTE_SEARCH=Xn;exports.INSTALLATION_HEADER=ti;exports.InteractionParticipantRole=Hn;exports.KB_FALLBACK_LOCALE=Se;exports.MAX_ACTIONS=b;exports.MAX_BLOCKS=x;exports.MAX_FIELDS=_;exports.MAX_LIST_ITEMS=T;exports.MAX_MEMORY_BUDGET=an;exports.MAX_MEMORY_CHARS=tn;exports.MIN_MEMORY_BUDGET=nn;exports.PAUSED_RUN_STATUSES=be;exports.PHONE_REGIONS=C;exports.PRESENCE_ONLINE_WINDOW_MS=ei;exports.PROVIDER_FEATURE_MESSAGE_TEMPLATES=Vn;exports.PROVIDER_FEATURE_MESSAGE_WINDOW=Fn;exports.PUBLIC_EMAIL_DOMAINS=Oe;exports.RELATED_SUBJECT_KINDS=Ce;exports.SIGNATURE_INTENTS=Xt;exports.SUMMARY_MIN_LAST_CHARS=xe;exports.SUMMARY_MIN_MESSAGES=ve;exports.TERMINAL_RUN_STATUSES=Te;exports.TRIGGER_VARS=vt;exports.UNSUPPORTED=Yn;exports.USAGE_DIMENSIONS=de;exports.USAGE_DIMENSION_IDS=fe;exports.actingIdentityKey=_e;exports.activityIconOf=Ye;exports.activityJoinUrl=nt;exports.activitySnippet=se;exports.activityTextParams=le;exports.activityTimelineText=tt;exports.activityTimestamp=lt;exports.activityTypeInfo=p;exports.actorKey=Dt;exports.aiAttachmentKind=ke;exports.aiAttachmentRejection=kn;exports.aiVendorAcceptsAttachment=Wt;exports.aiVendorDefaultModel=Vt;exports.aiVendorLabel=Ft;exports.aiVendorNeedsBaseUrl=jt;exports.aiVendorsWith=Ht;exports.appNameFromPath=Be;exports.applySignature=Yt;exports.artifactBodyBytes=It;exports.artifactOutline=St;exports.artifactToMarkdown=Nt;exports.buildActivityPreview=ot;exports.buildChannelIntents=Un;exports.buildShareKeys=Ct;exports.carriesText=Qe;exports.categoryLabel=Gt;exports.channelKindForScheme=Gn;exports.channelKindOf=ze;exports.cleanMessageText=Sn;exports.defaultLocaleOf=Me;exports.defineIntent=jn;exports.disabledIntentsFromCapabilities=$n;exports.emailDomain=fn;exports.endpointKey=An;exports.extractParams=Fe;exports.filterByEndpoint=wn;exports.filterByIntent=Pn;exports.filterByTargetScheme=Pe;exports.findAiVendor=h;exports.flattenLocales=ut;exports.floorToPeriod=pe;exports.formatActingIdentity=ye;exports.formatPeriod=ue;exports.getActivitySeenUserIds=st;exports.getContactEndpoints=zt;exports.getShortTitle=Zt;exports.getUrgencyScore=Qt;exports.helpCenterText=Kt;exports.humanizeAction=Ot;exports.isAssigned=qt;exports.isClosed=Jt;exports.isDeepLink=zn;exports.isInteractionUnseen=en;exports.isLikelyBulk=Cn;exports.isMessageType=qe;exports.isPaused=Pt;exports.isPlaybookAuthoredType=et;exports.isPublicEmailDomain=gn;exports.isPublicPath=Zn;exports.isReplyableType=Je;exports.isRetryable=Ut;exports.isTerminal=Ie;exports.isThreadLongEnough=Rn;exports.linkLabel=wt;exports.localesOf=Bt;exports.looksLikeEmail=pn;exports.matchContactToIntents=Kn;exports.matchPublicRoute=He;exports.messageCountsAs=Ze;exports.needsPhoneRegion=hn;exports.normalizeArtifactBlocks=bt;exports.normalizeBlocks=Xe;exports.normalizeEmail=V;exports.parseActingIdentity=kt;exports.pathToRegex=Ge;exports.periodsInRange=ft;exports.phoneSuffix=dn;exports.plainTextFromMarkdown=_n;exports.playbookActor=$t;exports.publicBasePathFor=Ve;exports.publicRoutePatterns=Jn;exports.readPath=M;exports.registrableDomain=Le;exports.relatedByDefault=on;exports.resolveAccountCapabilities=Ue;exports.resolveActivityText=N;exports.resolveChannelIntents=De;exports.resolveSignature=Ne;exports.sanitizeInline=Ee;exports.shareKeyForTeam=G;exports.shareKeyForUser=B;exports.shareKeysForViewer=Rt;exports.stripHtml=oe;exports.toE164=w;exports.toolSourceKinds=Lt;exports.usageMetricId=me;exports.usageMetrics=mt;
|