@aikaara/chat-sdk 0.7.8 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/headless.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./MountTenant-CCzIgtae.cjs");class r extends i.EventEmitter{registration=null;pendingEdits=[];constructor(e){super(),this.setupListeners(e)}registerForm(e){this.registration=e;const t=this.pendingEdits.filter(s=>s.entity_type===e.entityType&&String(s.entity_id)===String(e.entityId));if(t.length>0){for(const s of t)e.onFieldUpdate(s.fields),this.emit("edit:applied",{entityType:s.entity_type,entityId:s.entity_id,fields:s.fields});this.pendingEdits=this.pendingEdits.filter(s=>!(s.entity_type===e.entityType&&String(s.entity_id)===String(e.entityId)))}}unregisterForm(e,t){this.registration?.entityType===e&&String(this.registration?.entityId)===String(t)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(e,t,s){this.registration&&this.registration.entityType===e&&String(this.registration.entityId)===String(t)?(this.registration.onFieldUpdate(s),this.emit("edit:applied",{entityType:e,entityId:t,fields:s})):(this.pendingEdits.push({action:"edit_entity",entity_type:e,entity_id:t,fields:s}),this.emit("edit:pending",{entityType:e,entityId:t,fields:s}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(e){const t=e instanceof Error?e.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:t}),{success:!1,error:t}}}async requestTest(e){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(e),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Test failed"}}}setupListeners(e){e.on("action:edit_entity",t=>{this.pushFieldUpdates(t.entity_type,t.entity_id,t.fields)}),e.on("action:save_entity",t=>{this.requestSave()}),e.on("action:test_tool",t=>{this.emit("test:triggered",{toolId:t.tool_id,parameters:t.parameters}),this.requestTest(t.parameters)})}}exports.ActionCableClient=i.ActionCableClient;exports.AikaaraChatClient=i.AikaaraChatClient;exports.ApiClient=i.ApiClient;exports.ChannelSubscription=i.ChannelSubscription;exports.ConnectionManager=i.ConnectionManager;exports.ConversationManager=i.ConversationManager;exports.EventEmitter=i.EventEmitter;exports.MessageStore=i.MessageStore;exports.SessionAuthAdapter=i.SessionAuthAdapter;exports.SsoExchangeAdapter=i.SsoExchangeAdapter;exports.TiledeskTransport=i.TiledeskTransport;exports.clearPersistedConversationId=i.clearPersistedConversationId;exports.collectSsoCredentials=i.collectSsoCredentials;exports.createFetchUploadAdapter=i.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=i.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=i.createTiledeskHistoryAdapter;exports.extractTiledeskFileEnvelope=i.extractTiledeskFileEnvelope;exports.inferTiledeskRole=i.inferTiledeskRole;exports.isTiledeskSelfEcho=i.isTiledeskSelfEcho;exports.mountFromSlug=i.mountFromSlug;exports.mountTenantWidget=i.mount;exports.parseTiledeskTemplate=i.parseTiledeskTemplate;exports.FormBridge=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./MountTenant-BrBxPpjb.cjs");class r extends i.EventEmitter{registration=null;pendingEdits=[];constructor(e){super(),this.setupListeners(e)}registerForm(e){this.registration=e;const t=this.pendingEdits.filter(s=>s.entity_type===e.entityType&&String(s.entity_id)===String(e.entityId));if(t.length>0){for(const s of t)e.onFieldUpdate(s.fields),this.emit("edit:applied",{entityType:s.entity_type,entityId:s.entity_id,fields:s.fields});this.pendingEdits=this.pendingEdits.filter(s=>!(s.entity_type===e.entityType&&String(s.entity_id)===String(e.entityId)))}}unregisterForm(e,t){this.registration?.entityType===e&&String(this.registration?.entityId)===String(t)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(e,t,s){this.registration&&this.registration.entityType===e&&String(this.registration.entityId)===String(t)?(this.registration.onFieldUpdate(s),this.emit("edit:applied",{entityType:e,entityId:t,fields:s})):(this.pendingEdits.push({action:"edit_entity",entity_type:e,entity_id:t,fields:s}),this.emit("edit:pending",{entityType:e,entityId:t,fields:s}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(e){const t=e instanceof Error?e.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:t}),{success:!1,error:t}}}async requestTest(e){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(e),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Test failed"}}}setupListeners(e){e.on("action:edit_entity",t=>{this.pushFieldUpdates(t.entity_type,t.entity_id,t.fields)}),e.on("action:save_entity",t=>{this.requestSave()}),e.on("action:test_tool",t=>{this.emit("test:triggered",{toolId:t.tool_id,parameters:t.parameters}),this.requestTest(t.parameters)})}}exports.ActionCableClient=i.ActionCableClient;exports.AikaaraChatClient=i.AikaaraChatClient;exports.ApiClient=i.ApiClient;exports.ChannelSubscription=i.ChannelSubscription;exports.ConnectionManager=i.ConnectionManager;exports.ConversationManager=i.ConversationManager;exports.EventEmitter=i.EventEmitter;exports.MessageStore=i.MessageStore;exports.SessionAuthAdapter=i.SessionAuthAdapter;exports.SsoExchangeAdapter=i.SsoExchangeAdapter;exports.TiledeskTransport=i.TiledeskTransport;exports.clearPersistedConversationId=i.clearPersistedConversationId;exports.collectSsoCredentials=i.collectSsoCredentials;exports.createFetchUploadAdapter=i.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=i.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=i.createTiledeskHistoryAdapter;exports.extractTiledeskFileEnvelope=i.extractTiledeskFileEnvelope;exports.inferTiledeskRole=i.inferTiledeskRole;exports.isTiledeskSelfEcho=i.isTiledeskSelfEcho;exports.mountFromSlug=i.mountFromSlug;exports.mountTenantWidget=i.mount;exports.parseTiledeskTemplate=i.parseTiledeskTemplate;exports.FormBridge=r;
@@ -1678,6 +1678,14 @@ export declare interface WidgetConfig extends ChatClientConfig {
1678
1678
  placeholder?: string;
1679
1679
  showTimestamps?: boolean;
1680
1680
  persistConversation?: boolean;
1681
+ showHeader?: boolean;
1682
+ hideSystemMessages?: string[];
1683
+ timestampFormat?: 'time' | 'datetime' | 'date' | 'none';
1684
+ input?: {
1685
+ attachPosition?: 'left' | 'right';
1686
+ sendButtonShape?: 'circle' | 'square';
1687
+ };
1688
+ templateLayout?: 'inside' | 'outside';
1681
1689
  showBubble?: boolean;
1682
1690
  bubbleText?: string;
1683
1691
  bubbleIcon?: string;
@@ -1708,6 +1716,47 @@ export declare interface WidgetConfigDescriptor {
1708
1716
  placeholder?: string;
1709
1717
  showTimestamps?: boolean;
1710
1718
  persistConversation?: boolean;
1719
+ /**
1720
+ * When false, suppress the SDK-rendered `<aikaara-chat-header>` (title +
1721
+ * subtitle bar). Useful for embed mounts where the host page already shows
1722
+ * the conversation title in its own toolbar (e.g. bandhan's
1723
+ * "File ITR with Tax Expert" top bar). Defaults to true.
1724
+ */
1725
+ showHeader?: boolean;
1726
+ /**
1727
+ * Strings (case-insensitive) that should NOT render as visible system
1728
+ * pills / messages. Lets tenants hide infrastructure chatter like
1729
+ * `CHAT_INITIATED` (pre-existing user-side filter) or `Group created`
1730
+ * (Tiledesk's auto-emitted notification when a support-group is minted).
1731
+ * Matches both `system` role and assistant content. Defaults to none.
1732
+ */
1733
+ hideSystemMessages?: string[];
1734
+ /**
1735
+ * Timestamp display under each bubble.
1736
+ * - `time` (default): locale time, e.g. "11:26 AM" / "23:14".
1737
+ * - `datetime`: short month/day + time, e.g. "May 08, 11:26 AM".
1738
+ * - `date`: short month/day only.
1739
+ * - `none`: equivalent to `showTimestamps: false`.
1740
+ */
1741
+ timestampFormat?: 'time' | 'datetime' | 'date' | 'none';
1742
+ /** Composer styling — attach button position and send button shape. */
1743
+ input?: {
1744
+ /** Where the paperclip button sits relative to the textarea. Default `left`. */
1745
+ attachPosition?: 'left' | 'right';
1746
+ /** Round (default) or filled square send button. */
1747
+ sendButtonShape?: 'circle' | 'square';
1748
+ };
1749
+ /**
1750
+ * Where contentType=300 templates render relative to the bubble carrying
1751
+ * the message text.
1752
+ * - `inside` (default): template UI nested inside the bot bubble — the
1753
+ * option chips share the bubble's background colour. Matches the
1754
+ * pre-bandhan look.
1755
+ * - `outside`: template UI is a sibling below the bubble (UAT bandhan
1756
+ * style). Lets option chips inherit the chat surface background and
1757
+ * wrap freely, no max-width clamp.
1758
+ */
1759
+ templateLayout?: 'inside' | 'outside';
1711
1760
  /**
1712
1761
  * Full theme token set. Mirrored as CSS variables (`--aikaara-*`) on the
1713
1762
  * widget root so any inner web-component can style itself by referencing
package/dist/headless.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { E as s } from "./MountTenant-B3tAZZRN.mjs";
2
- import { A as p, b as l, k as g, C as h, l as c, m as y, M as u, S as m, n as f, T as S, o as T, p as _, q as E, s as v, t as C, u as F, v as A, w as k, x as I, y as x, z as U } from "./MountTenant-B3tAZZRN.mjs";
1
+ import { E as s } from "./MountTenant-BVimPLfY.mjs";
2
+ import { A as p, b as l, k as g, C as h, l as c, m as y, M as u, S as m, n as f, T as S, o as T, p as _, q as E, s as v, t as C, u as F, v as A, w as k, x as I, y as x, z as U } from "./MountTenant-BVimPLfY.mjs";
3
3
  class a extends s {
4
4
  registration = null;
5
5
  pendingEdits = [];
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-CCzIgtae.cjs"),s=require("./headless.cjs");function l(a){e.registerComponents();const t=document.createElement("aikaara-chat-widget"),i={baseUrl:"base-url",userToken:"user-token",apiKey:"api-key",title:"title",subtitle:"subtitle",theme:"theme",primaryColor:"primary-color",position:"position",width:"width",height:"height",placeholder:"placeholder",welcomeMessage:"welcome-message",avatarUrl:"avatar-url"};for(const[n,o]of Object.entries(i)){const r=a[n];r!=null&&t.setAttribute(o,String(r))}return t.configure(a),document.body.appendChild(t),t}function d(){const a=document.querySelector("aikaara-chat-widget");a&&a.remove()}exports.ActionCableClient=e.ActionCableClient;exports.AikaaraChatBubble=e.AikaaraChatBubble;exports.AikaaraChatClient=e.AikaaraChatClient;exports.AikaaraChatHeader=e.AikaaraChatHeader;exports.AikaaraChatInput=e.AikaaraChatInput;exports.AikaaraChatWidget=e.AikaaraChatWidget;exports.AikaaraErrorBanner=e.AikaaraErrorBanner;exports.AikaaraMessageBubble=e.AikaaraMessageBubble;exports.AikaaraMessageList=e.AikaaraMessageList;exports.AikaaraStreamingMessage=e.AikaaraStreamingMessage;exports.AikaaraTypingIndicator=e.AikaaraTypingIndicator;exports.ApiClient=e.ApiClient;exports.ChannelSubscription=e.ChannelSubscription;exports.ConnectionManager=e.ConnectionManager;exports.ConversationManager=e.ConversationManager;exports.EventEmitter=e.EventEmitter;exports.MessageStore=e.MessageStore;exports.SessionAuthAdapter=e.SessionAuthAdapter;exports.SsoExchangeAdapter=e.SsoExchangeAdapter;exports.TiledeskTransport=e.TiledeskTransport;exports.clearPersistedConversationId=e.clearPersistedConversationId;exports.collectSsoCredentials=e.collectSsoCredentials;exports.createFetchUploadAdapter=e.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=e.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=e.createTiledeskHistoryAdapter;exports.extractTiledeskFileEnvelope=e.extractTiledeskFileEnvelope;exports.inferTiledeskRole=e.inferTiledeskRole;exports.isTiledeskSelfEcho=e.isTiledeskSelfEcho;exports.mountFromSlug=e.mountFromSlug;exports.mountTenantWidget=e.mount;exports.parseTiledeskTemplate=e.parseTiledeskTemplate;exports.registerComponents=e.registerComponents;exports.FormBridge=s.FormBridge;exports.mount=l;exports.unmount=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-BrBxPpjb.cjs"),s=require("./headless.cjs");function l(a){e.registerComponents();const t=document.createElement("aikaara-chat-widget"),i={baseUrl:"base-url",userToken:"user-token",apiKey:"api-key",title:"title",subtitle:"subtitle",theme:"theme",primaryColor:"primary-color",position:"position",width:"width",height:"height",placeholder:"placeholder",welcomeMessage:"welcome-message",avatarUrl:"avatar-url"};for(const[n,o]of Object.entries(i)){const r=a[n];r!=null&&t.setAttribute(o,String(r))}return t.configure(a),document.body.appendChild(t),t}function d(){const a=document.querySelector("aikaara-chat-widget");a&&a.remove()}exports.ActionCableClient=e.ActionCableClient;exports.AikaaraChatBubble=e.AikaaraChatBubble;exports.AikaaraChatClient=e.AikaaraChatClient;exports.AikaaraChatHeader=e.AikaaraChatHeader;exports.AikaaraChatInput=e.AikaaraChatInput;exports.AikaaraChatWidget=e.AikaaraChatWidget;exports.AikaaraErrorBanner=e.AikaaraErrorBanner;exports.AikaaraMessageBubble=e.AikaaraMessageBubble;exports.AikaaraMessageList=e.AikaaraMessageList;exports.AikaaraStreamingMessage=e.AikaaraStreamingMessage;exports.AikaaraTypingIndicator=e.AikaaraTypingIndicator;exports.ApiClient=e.ApiClient;exports.ChannelSubscription=e.ChannelSubscription;exports.ConnectionManager=e.ConnectionManager;exports.ConversationManager=e.ConversationManager;exports.EventEmitter=e.EventEmitter;exports.MessageStore=e.MessageStore;exports.SessionAuthAdapter=e.SessionAuthAdapter;exports.SsoExchangeAdapter=e.SsoExchangeAdapter;exports.TiledeskTransport=e.TiledeskTransport;exports.clearPersistedConversationId=e.clearPersistedConversationId;exports.collectSsoCredentials=e.collectSsoCredentials;exports.createFetchUploadAdapter=e.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=e.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=e.createTiledeskHistoryAdapter;exports.extractTiledeskFileEnvelope=e.extractTiledeskFileEnvelope;exports.inferTiledeskRole=e.inferTiledeskRole;exports.isTiledeskSelfEcho=e.isTiledeskSelfEcho;exports.mountFromSlug=e.mountFromSlug;exports.mountTenantWidget=e.mount;exports.parseTiledeskTemplate=e.parseTiledeskTemplate;exports.registerComponents=e.registerComponents;exports.FormBridge=s.FormBridge;exports.mount=l;exports.unmount=d;
package/dist/index.d.ts CHANGED
@@ -228,8 +228,18 @@ export declare class AikaaraMessageList extends HTMLElement {
228
228
  private container;
229
229
  private welcomeMessage;
230
230
  private showTimestamps;
231
+ private timestampFormat;
232
+ private hideSystemMessages;
231
233
  private linkHandlers;
232
234
  private getLinkBearer;
235
+ setHideSystemMessages(items: string[]): void;
236
+ setTimestampFormat(fmt: 'time' | 'datetime' | 'date' | 'none'): void;
237
+ private templateLayout;
238
+ setTemplateLayout(layout: 'inside' | 'outside'): void;
239
+ /** Returns true when a message should be hidden by the descriptor's
240
+ * `hideSystemMessages` filter. Matches the trimmed content
241
+ * case-insensitively against any configured needle (substring match). */
242
+ private shouldHideMessage;
233
243
  setLinkConfig(handlers: LinkHandler[], bearer?: (source: 'session' | 'chat' | 'none') => Promise<string | null>): void;
234
244
  constructor();
235
245
  connectedCallback(): void;
@@ -1430,6 +1440,14 @@ export declare interface WidgetConfig extends ChatClientConfig {
1430
1440
  placeholder?: string;
1431
1441
  showTimestamps?: boolean;
1432
1442
  persistConversation?: boolean;
1443
+ showHeader?: boolean;
1444
+ hideSystemMessages?: string[];
1445
+ timestampFormat?: 'time' | 'datetime' | 'date' | 'none';
1446
+ input?: {
1447
+ attachPosition?: 'left' | 'right';
1448
+ sendButtonShape?: 'circle' | 'square';
1449
+ };
1450
+ templateLayout?: 'inside' | 'outside';
1433
1451
  showBubble?: boolean;
1434
1452
  bubbleText?: string;
1435
1453
  bubbleIcon?: string;
@@ -1460,6 +1478,47 @@ export declare interface WidgetConfigDescriptor {
1460
1478
  placeholder?: string;
1461
1479
  showTimestamps?: boolean;
1462
1480
  persistConversation?: boolean;
1481
+ /**
1482
+ * When false, suppress the SDK-rendered `<aikaara-chat-header>` (title +
1483
+ * subtitle bar). Useful for embed mounts where the host page already shows
1484
+ * the conversation title in its own toolbar (e.g. bandhan's
1485
+ * "File ITR with Tax Expert" top bar). Defaults to true.
1486
+ */
1487
+ showHeader?: boolean;
1488
+ /**
1489
+ * Strings (case-insensitive) that should NOT render as visible system
1490
+ * pills / messages. Lets tenants hide infrastructure chatter like
1491
+ * `CHAT_INITIATED` (pre-existing user-side filter) or `Group created`
1492
+ * (Tiledesk's auto-emitted notification when a support-group is minted).
1493
+ * Matches both `system` role and assistant content. Defaults to none.
1494
+ */
1495
+ hideSystemMessages?: string[];
1496
+ /**
1497
+ * Timestamp display under each bubble.
1498
+ * - `time` (default): locale time, e.g. "11:26 AM" / "23:14".
1499
+ * - `datetime`: short month/day + time, e.g. "May 08, 11:26 AM".
1500
+ * - `date`: short month/day only.
1501
+ * - `none`: equivalent to `showTimestamps: false`.
1502
+ */
1503
+ timestampFormat?: 'time' | 'datetime' | 'date' | 'none';
1504
+ /** Composer styling — attach button position and send button shape. */
1505
+ input?: {
1506
+ /** Where the paperclip button sits relative to the textarea. Default `left`. */
1507
+ attachPosition?: 'left' | 'right';
1508
+ /** Round (default) or filled square send button. */
1509
+ sendButtonShape?: 'circle' | 'square';
1510
+ };
1511
+ /**
1512
+ * Where contentType=300 templates render relative to the bubble carrying
1513
+ * the message text.
1514
+ * - `inside` (default): template UI nested inside the bot bubble — the
1515
+ * option chips share the bubble's background colour. Matches the
1516
+ * pre-bandhan look.
1517
+ * - `outside`: template UI is a sibling below the bubble (UAT bandhan
1518
+ * style). Lets option chips inherit the chat surface background and
1519
+ * wrap freely, no max-width clamp.
1520
+ */
1521
+ templateLayout?: 'inside' | 'outside';
1463
1522
  /**
1464
1523
  * Full theme token set. Mirrored as CSS variables (`--aikaara-*`) on the
1465
1524
  * widget root so any inner web-component can style itself by referencing
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { r as o } from "./MountTenant-B3tAZZRN.mjs";
2
- import { A as u, a as m, b as g, c as h, d as k, e as A, f as C, g as b, h as f, i as S, j as T, k as v, C as y, l as w, m as M, E, M as x, S as B, n as F, T as U, o as I, p as j, q, s as H, t as P, u as W, v as z, w as K, x as L, y as O, z as R } from "./MountTenant-B3tAZZRN.mjs";
1
+ import { r as o } from "./MountTenant-BVimPLfY.mjs";
2
+ import { A as u, a as m, b as g, c as h, d as k, e as A, f as C, g as b, h as f, i as S, j as T, k as v, C as y, l as w, m as M, E, M as x, S as B, n as F, T as U, o as I, p as j, q, s as H, t as P, u as W, v as z, w as K, x as L, y as O, z as R } from "./MountTenant-BVimPLfY.mjs";
3
3
  import { FormBridge as G } from "./headless.mjs";
4
4
  function l(e) {
5
5
  o();
package/dist/ui.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./MountTenant-CCzIgtae.cjs");exports.AikaaraChat=a.AikaaraChat;exports.AikaaraChatBubble=a.AikaaraChatBubble;exports.AikaaraChatHeader=a.AikaaraChatHeader;exports.AikaaraChatInput=a.AikaaraChatInput;exports.AikaaraChatWidget=a.AikaaraChatWidget;exports.AikaaraComparePlans=a.AikaaraComparePlans;exports.AikaaraErrorBanner=a.AikaaraErrorBanner;exports.AikaaraLinkModal=a.AikaaraLinkModal;exports.AikaaraMessageBubble=a.AikaaraMessageBubble;exports.AikaaraMessageList=a.AikaaraMessageList;exports.AikaaraModalAction=a.AikaaraModalAction;exports.AikaaraOptionList=a.AikaaraOptionList;exports.AikaaraStreamingMessage=a.AikaaraStreamingMessage;exports.AikaaraSubmitAction=a.AikaaraSubmitAction;exports.AikaaraSystemPill=a.AikaaraSystemPill;exports.AikaaraTemplateRenderer=a.AikaaraTemplateRenderer;exports.AikaaraTypingIndicator=a.AikaaraTypingIndicator;exports.registerComponents=a.registerComponents;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./MountTenant-BrBxPpjb.cjs");exports.AikaaraChat=a.AikaaraChat;exports.AikaaraChatBubble=a.AikaaraChatBubble;exports.AikaaraChatHeader=a.AikaaraChatHeader;exports.AikaaraChatInput=a.AikaaraChatInput;exports.AikaaraChatWidget=a.AikaaraChatWidget;exports.AikaaraComparePlans=a.AikaaraComparePlans;exports.AikaaraErrorBanner=a.AikaaraErrorBanner;exports.AikaaraLinkModal=a.AikaaraLinkModal;exports.AikaaraMessageBubble=a.AikaaraMessageBubble;exports.AikaaraMessageList=a.AikaaraMessageList;exports.AikaaraModalAction=a.AikaaraModalAction;exports.AikaaraOptionList=a.AikaaraOptionList;exports.AikaaraStreamingMessage=a.AikaaraStreamingMessage;exports.AikaaraSubmitAction=a.AikaaraSubmitAction;exports.AikaaraSystemPill=a.AikaaraSystemPill;exports.AikaaraTemplateRenderer=a.AikaaraTemplateRenderer;exports.AikaaraTypingIndicator=a.AikaaraTypingIndicator;exports.registerComponents=a.registerComponents;
package/dist/ui.d.ts CHANGED
@@ -286,8 +286,18 @@ export declare class AikaaraMessageList extends HTMLElement {
286
286
  private container;
287
287
  private welcomeMessage;
288
288
  private showTimestamps;
289
+ private timestampFormat;
290
+ private hideSystemMessages;
289
291
  private linkHandlers;
290
292
  private getLinkBearer;
293
+ setHideSystemMessages(items: string[]): void;
294
+ setTimestampFormat(fmt: 'time' | 'datetime' | 'date' | 'none'): void;
295
+ private templateLayout;
296
+ setTemplateLayout(layout: 'inside' | 'outside'): void;
297
+ /** Returns true when a message should be hidden by the descriptor's
298
+ * `hideSystemMessages` filter. Matches the trimmed content
299
+ * case-insensitively against any configured needle (substring match). */
300
+ private shouldHideMessage;
291
301
  setLinkConfig(handlers: LinkHandler[], bearer?: (source: 'session' | 'chat' | 'none') => Promise<string | null>): void;
292
302
  constructor();
293
303
  connectedCallback(): void;
@@ -1155,6 +1165,14 @@ declare interface WidgetConfig extends ChatClientConfig {
1155
1165
  placeholder?: string;
1156
1166
  showTimestamps?: boolean;
1157
1167
  persistConversation?: boolean;
1168
+ showHeader?: boolean;
1169
+ hideSystemMessages?: string[];
1170
+ timestampFormat?: 'time' | 'datetime' | 'date' | 'none';
1171
+ input?: {
1172
+ attachPosition?: 'left' | 'right';
1173
+ sendButtonShape?: 'circle' | 'square';
1174
+ };
1175
+ templateLayout?: 'inside' | 'outside';
1158
1176
  showBubble?: boolean;
1159
1177
  bubbleText?: string;
1160
1178
  bubbleIcon?: string;
package/dist/ui.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { B as i, a as s, c as e, d as t, e as A, D as k, f as n, F as o, g, h as l, G as d, H as m, i as p, I as C, J as h, K as b, j as M, r as c } from "./MountTenant-B3tAZZRN.mjs";
1
+ import { B as i, a as s, c as e, d as t, e as A, D as k, f as n, F as o, g, h as l, G as d, H as m, i as p, I as C, J as h, K as b, j as M, r as c } from "./MountTenant-BVimPLfY.mjs";
2
2
  export {
3
3
  i as AikaaraChat,
4
4
  s as AikaaraChatBubble,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aikaara/chat-sdk",
3
- "version": "0.7.8",
3
+ "version": "0.8.1",
4
4
  "type": "module",
5
5
  "description": "Aikaara Chat SDK — embeddable chat widget and headless client",
6
6
  "license": "MIT",