@acorex-platform/module-conversation-client 0.0.46 → 0.0.48

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.
Files changed (32) hide show
  1. package/fesm2022/{acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DUR2oyfP.mjs → acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DcdPViNy.mjs} +1677 -515
  2. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DcdPViNy.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-qTWATpgC.mjs → acorex-platform-module-conversation-client-after-message-sent.command-Cf1zPn3u.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-qTWATpgC.mjs.map → acorex-platform-module-conversation-client-after-message-sent.command-Cf1zPn3u.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-DQWhOmBE.mjs → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-R40vR1C3.mjs} +5 -5
  6. package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-DQWhOmBE.mjs.map → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-R40vR1C3.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-conversation-client-assist-message-renderer.component-DyVepuaW.mjs → acorex-platform-module-conversation-client-assist-message-renderer.component-CUlLCsF6.mjs} +6 -6
  8. package/fesm2022/{acorex-platform-module-conversation-client-assist-message-renderer.component-DyVepuaW.mjs.map → acorex-platform-module-conversation-client-assist-message-renderer.component-CUlLCsF6.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-conversation-client-assist-tool-detail-popup.component-D8na_1QJ.mjs → acorex-platform-module-conversation-client-assist-tool-detail-popup.component-B7LW5ie9.mjs} +3 -3
  10. package/fesm2022/{acorex-platform-module-conversation-client-assist-tool-detail-popup.component-D8na_1QJ.mjs.map → acorex-platform-module-conversation-client-assist-tool-detail-popup.component-B7LW5ie9.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-BeS4Duip.mjs → acorex-platform-module-conversation-client-chat-call-session-page.component-DiA01mpJ.mjs} +3 -3
  12. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-BeS4Duip.mjs.map → acorex-platform-module-conversation-client-chat-call-session-page.component-DiA01mpJ.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-BbEhkLLh.mjs → acorex-platform-module-conversation-client-chat-call-start-popup.component-nLVRg9HK.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-BbEhkLLh.mjs.map → acorex-platform-module-conversation-client-chat-call-start-popup.component-nLVRg9HK.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-BxUz9jTX.mjs → acorex-platform-module-conversation-client-comments-page.component-C0JLE_oX.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-BxUz9jTX.mjs.map → acorex-platform-module-conversation-client-comments-page.component-C0JLE_oX.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs +15 -1
  18. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs.map +1 -1
  19. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-juoWxu7I.mjs → acorex-platform-module-conversation-client-mark-conversation-unread.command-CIT6UHfK.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-juoWxu7I.mjs.map → acorex-platform-module-conversation-client-mark-conversation-unread.command-CIT6UHfK.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-ridcdmj7.mjs → acorex-platform-module-conversation-client-open-chat.command-kTWhndd2.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-ridcdmj7.mjs.map → acorex-platform-module-conversation-client-open-chat.command-kTWhndd2.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BsYxaH3g.mjs → acorex-platform-module-conversation-client-retry-assist-response.command-pKO5UqyB.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BsYxaH3g.mjs.map → acorex-platform-module-conversation-client-retry-assist-response.command-pKO5UqyB.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-DsCyIdEk.mjs → acorex-platform-module-conversation-client-sync-read-state.command-BbQHG28M.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-DsCyIdEk.mjs.map → acorex-platform-module-conversation-client-sync-read-state.command-BbQHG28M.mjs.map} +1 -1
  27. package/fesm2022/acorex-platform-module-conversation-client.mjs +2 -1
  28. package/fesm2022/acorex-platform-module-conversation-client.mjs.map +1 -1
  29. package/package.json +2 -2
  30. package/types/acorex-platform-module-conversation-client-contracts.d.ts +21 -2
  31. package/types/acorex-platform-module-conversation-client.d.ts +356 -184
  32. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DUR2oyfP.mjs.map +0 -1
@@ -1,19 +1,20 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Provider, InjectionToken, Type, Signal, OnInit, ElementRef, DestroyRef, OnDestroy } from '@angular/core';
2
+ import { Provider, ElementRef, InjectionToken, Type, Signal, OnInit, DestroyRef, OnDestroy } from '@angular/core';
3
3
  import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
4
4
  import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
5
5
  import { AXPBackgroundOperationHandler, AXPBackgroundOperation, AXPFileStorageService } from '@acorex-platform/framework-client/common';
6
6
  import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
7
7
  import { AXPExecuteCommand, AXPFilterDefinition, AXPFilterQuery, AXPActionMenuItem, AXPMultiLanguageString, AXPWidgetNode, AXPUserReference, AXPEntityReference } from '@acorex-platform/framework-shared/core';
8
8
  import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
9
- import { AXMChannelFeedItem, AXMConversationRoom, AXMConversationMessage, AXMCommentEntityData, AXReaction, AXMessagePayload, AXMReactionType } from '@acorex-platform/module-conversation-client/contracts';
9
+ import { AXMChannelFeedItem, AXMConversationRoom, AXMConversationMessage, AXMCommentEntityData as AXMCommentEntityData$1, AXReaction, AXMessagePayload, AXMReactionType } from '@acorex-platform/module-conversation-client/contracts';
10
10
  import { Routes } from '@angular/router';
11
- import { AXClickEvent, AXStyleLookType, AXPlacement } from '@acorex/cdk/common';
11
+ import { AXClickEvent, AXPlacement, AXStyleLookType } from '@acorex/cdk/common';
12
12
  import { AXPDeviceService } from '@acorex-platform/framework-client/core';
13
13
  import * as _acorex_components_conversation from '@acorex/components/conversation';
14
14
  import { AXConversationApi, AXConversation, AXConversationMessageApi, AXConversationMessage, AXConversationRealtimeApi, AXConversationUserApi, AXConversationPagination, AXConversationPaginatedResult, AXConversationCreateData, AXConversationFilters, AXConversationUpdateData, AXConversationParticipant, AXConversationParticipantUpdate, AXConversationSendMessageCommand, AXConversationMessagePayload, AXConversationMessageSearchFilters, AXConversationReadReceipt, AXConversationMessageForwardData, AXConversationPinnedMessage, AXConversationTypingIndicator, AXConversationUser, AXConversationUserProfileUpdate, AXConversationUserSearchFilters, AXConversationPresenceUpdate, AXConversationPresenceStatus, AXConversationBlockReportReason, AXConversationRoomPreferencesMap, AXConversationRoomPreferences, AXConversationTab, AXConversationConnectionStatus, AXConversationService } from '@acorex/components/conversation';
15
+ import { AXMCommentEntityData, AXMContextualAssistContext } from '@acorex-platform/module-conversation-client/contracts';
16
+ export { AXMContextualAssistContext, AXM_CONTEXTUAL_ASSIST_KIND_ENTITY_RECORD } from '@acorex-platform/module-conversation-client/contracts';
15
17
  import { Observable } from 'rxjs';
16
- import { AXMContextualAssistContext, AXMCommentEntityData as AXMCommentEntityData$1 } from '@acorex-platform/module-conversation-client/contracts';
17
18
  import { AXPEntityDefinitionRegistryService, AXPEntityActionPlugin } from '@acorex-platform/framework-client/layout/entity';
18
19
  import { AXPopupRef, AXPopupComponentBase } from '@acorex/components/popup';
19
20
  import { AXPAiChatResponse, AXPAiChatMessage, AXPAiChatFollowUpItem } from '@acorex-platform/module-ai-management-client';
@@ -230,6 +231,232 @@ declare function persistChatAttachment(fileStorage: AXPFileStorageService, file:
230
231
  fileId: string;
231
232
  }>;
232
233
 
234
+ /** Entity reference an entity-scoped chat is bound to (stored in conversation metadata). */
235
+ interface AXMEntityChatRef {
236
+ entityId: string;
237
+ entityType: string;
238
+ }
239
+ /** Room fields used to decide whether a chat belongs on the main inbox. */
240
+ interface AXMEntityChatRoomRef {
241
+ metadata?: Record<string, unknown>;
242
+ entityRef?: Pick<AXMCommentEntityData, 'entityId' | 'entityTypeId'> | null;
243
+ }
244
+ /** Room metadata flag: entity mini-chats stay off `/chat/`; header inbox chats omit this. */
245
+ declare const AXM_MINI_CHAT_SCOPE_METADATA_KEY = "miniChatScope";
246
+ declare const AXM_MINI_CHAT_SCOPE_ENTITY = "entity";
247
+ /**
248
+ * Synthetic record id for Ask AI on an entity **list** (no row id).
249
+ * Keeps list history on that page and out of the main chat sidebar.
250
+ */
251
+ declare const AXM_ENTITY_LIST_CHAT_ID = "__entity-list__";
252
+ /**
253
+ * Conversation metadata for an entity-scoped assist chat.
254
+ * Keeps `assistId` so the existing assist reply pipeline still answers in entity chats.
255
+ */
256
+ declare function axmBuildEntityChatConversationMetadata(args: {
257
+ entityId: string;
258
+ entityType: string;
259
+ assistId: string;
260
+ }): Record<string, unknown>;
261
+ /**
262
+ * `AXConversationService.createConversation` stores the whole UI options object as
263
+ * `room.metadata`, nesting real keys under `metadata.metadata`. Flatten so entity
264
+ * flags sit at the top level for inbox filters and `entityRef`.
265
+ */
266
+ declare function axmFlattenConversationCreateMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
267
+ /**
268
+ * Resolves the entity reference from conversation metadata.
269
+ * `AXConversationService.createConversation` may nest the UI object, so values
270
+ * are also probed at `metadata.metadata.*`.
271
+ */
272
+ declare function axmExtractEntityRefFromMetadata(metadata: Record<string, unknown> | undefined): AXMEntityChatRef | undefined;
273
+ /** Entity id/type from a contextual-assist launch payload (entity row / details). */
274
+ declare function axmEntityRefFromLaunchContext(launch: AXMContextualAssistContext | undefined): AXMEntityChatRef | undefined;
275
+ /** True when the conversation is bound to an entity page (not the site-header inbox). */
276
+ declare function axmConversationIsEntityChat(metadata: Record<string, unknown> | undefined): boolean;
277
+ /** True when conversation metadata targets the given entity reference. */
278
+ declare function axmConversationMatchesEntity(metadata: Record<string, unknown> | undefined, ref: AXMEntityChatRef): boolean;
279
+ /**
280
+ * True when a persisted room is an entity-scoped chat (metadata and/or `entityRef`).
281
+ * Header / inbox AI chats have neither; they belong on `/chat/`.
282
+ */
283
+ declare function axmRoomIsEntityChat(room: AXMEntityChatRoomRef | null | undefined): boolean;
284
+ /** True when a room is bound to the given entity via metadata or `entityRef`. */
285
+ declare function axmRoomMatchesEntity(room: AXMEntityChatRoomRef | null | undefined, ref: AXMEntityChatRef): boolean;
286
+ /**
287
+ * Persisted `entityRef` for an entity-scoped chat room so history can query by record
288
+ * and the main inbox can exclude the room (comment threads use `kind: 'comment'`).
289
+ */
290
+ declare function axmBuildEntityChatRoomEntityRef(metadata: Record<string, unknown> | undefined): AXMCommentEntityData | undefined;
291
+ /** Launch context stored on a chat room, including the nested metadata shape. */
292
+ declare function axmRoomLaunchContext(room: AXMEntityChatRoomRef | null | undefined): AXMContextualAssistContext | undefined;
293
+
294
+ type AXMMiniChatContextChipKind = 'entity' | 'view' | 'record';
295
+ interface AXMMiniChatContextChip {
296
+ id: string;
297
+ kind: AXMMiniChatContextChipKind;
298
+ label: string;
299
+ }
300
+ interface AXMMiniChatPageContextDraft {
301
+ moduleName: string;
302
+ entityName: string;
303
+ entityTitle: string;
304
+ entityKey: string;
305
+ viewName?: string;
306
+ viewTitle?: string;
307
+ viewKey: string;
308
+ includeView: boolean;
309
+ records: Array<{
310
+ id: string;
311
+ title: string;
312
+ }>;
313
+ selectionKey: string;
314
+ }
315
+
316
+ /** Anchor element for overlay positioning. */
317
+ type AXMMiniChatPanelAnchor = Element | ElementRef<HTMLElement>;
318
+ /**
319
+ * Common placement aliases mapped to {@link AXPlacement}.
320
+ * Examples: `top-right` → `top-end`, `bottom-left` → `bottom-start`.
321
+ */
322
+ type AXMMiniChatPanelSide = AXPlacement | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
323
+ /** Fixed viewport coordinates (px). Ignored when `anchor` is set. */
324
+ interface AXMMiniChatPanelPosition {
325
+ x: number;
326
+ y: number;
327
+ }
328
+ /** Mini chat panel scope: entity-bound threads or main inbox (non-entity chats). */
329
+ type AXMMiniChatPanelScope = 'entity' | 'inbox';
330
+ /**
331
+ * Who picks the assist on a new mini-chat thread.
332
+ * `ask` prompts before the first message (header inbox).
333
+ * `locked` keeps the caller assist and hides the picker (form designer).
334
+ * `optional` preselects the tenant default and still allows a change.
335
+ */
336
+ type AXMMiniChatAssistSelection = 'ask' | 'locked' | 'optional';
337
+ /**
338
+ * How the shared panel is hosted.
339
+ * `overlay` is the floating window (header / entity pages).
340
+ * `embedded` fills the host (entity record details, later).
341
+ */
342
+ type AXMMiniChatPanelPresentation = 'overlay' | 'embedded';
343
+ /** Session key used for the global inbox mini chat (non-entity conversations). */
344
+ declare const AXM_MINI_CHAT_INBOX_SESSION_KEY = "__inbox__";
345
+ /** Popup dock name for minimized mini-chat tabs in the root footer. */
346
+ declare const AXM_MINI_CHAT_POPUP_DOCK = "mini-chat";
347
+ /** Persisted panel state for a mini chat session. */
348
+ interface AXMMiniChatPanelSessionState {
349
+ view: 'thread' | 'history';
350
+ selectedChatId?: string;
351
+ hasOpened: boolean;
352
+ /** Page the thread belongs to (`Module.Entity:id`, `Module.Entity:list`, or `global`). */
353
+ pageKey?: string;
354
+ }
355
+ /** Options passed to {@link AXMMiniChatPanelService.open}. */
356
+ interface AXMMiniChatPanelOpenOptions {
357
+ /** Default: `entity`. Use `inbox` for regular (non-entity) chats shown in the main chat sidebar. */
358
+ scope?: AXMMiniChatPanelScope;
359
+ entityId?: string;
360
+ entityType?: string;
361
+ assistId?: string;
362
+ /** Default: `optional`. Header inbox uses `ask`; form designer uses `locked`. */
363
+ assistSelection?: AXMMiniChatAssistSelection;
364
+ title?: string;
365
+ showInfoBar?: boolean;
366
+ showComposer?: boolean;
367
+ /** Default: `overlay`. Use `embedded` when the panel is inlined in a page. */
368
+ presentation?: AXMMiniChatPanelPresentation;
369
+ /** Fixed viewport position (px). Ignored when `anchor` is set. */
370
+ position?: AXMMiniChatPanelPosition;
371
+ /** Anchor element for popover placement. */
372
+ anchor?: AXMMiniChatPanelAnchor;
373
+ /** Placement relative to anchor. Default: `top-end` when anchored. */
374
+ placement?: AXMMiniChatPanelSide;
375
+ offsetX?: number;
376
+ offsetY?: number;
377
+ autoFlip?: boolean;
378
+ /** When true, always opens a fresh conversation thread. */
379
+ forceNewChat?: boolean;
380
+ /** Default: true. Form-designer assist hides this control. */
381
+ minimizable?: boolean;
382
+ /**
383
+ * When true, the close button hides the live window instead of destroying it.
384
+ * The next open for the same session shows that same instance.
385
+ */
386
+ retainOnClose?: boolean;
387
+ /**
388
+ * Record/surface context for a new assist thread (entity-row assist).
389
+ * Stored on the room and used to generate contextual starter chips.
390
+ */
391
+ launchContext?: AXMContextualAssistContext;
392
+ }
393
+ /** Window controls exposed by the mini-chat popup host to {@link AXMMiniChatPanelService}. */
394
+ interface AXMMiniChatPopupWindowApi {
395
+ close(): void;
396
+ restore(): void;
397
+ minimize(): void;
398
+ maximize(): void;
399
+ hide(): void;
400
+ show(): void;
401
+ isMinimized(): boolean;
402
+ isMaximized(): boolean;
403
+ isHidden(): boolean;
404
+ }
405
+ /** Assigned onto {@link AXMMiniChatPopupWindowComponent} via popup `data`. */
406
+ interface AXMMiniChatPopupWindowData {
407
+ scope: AXMMiniChatPanelScope;
408
+ entityId?: string;
409
+ entityType?: string;
410
+ assistId?: string;
411
+ assistSelection: AXMMiniChatAssistSelection;
412
+ panelTitle?: string;
413
+ showInfoBar: boolean;
414
+ showComposer: boolean;
415
+ initialView: 'thread' | 'history';
416
+ initialConversationId?: string;
417
+ startWithNewChat: boolean;
418
+ launchContext?: AXMContextualAssistContext;
419
+ minimizable: boolean;
420
+ retainOnClose: boolean;
421
+ onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
422
+ onVisibilityChange?: (visible: boolean) => void;
423
+ registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
424
+ }
425
+
426
+ /** Whose chats a mini-chat history list is allowed to show. */
427
+ type AXMMiniChatHistoryScope = {
428
+ mode: 'global';
429
+ } | {
430
+ mode: 'entity';
431
+ entityType: string;
432
+ entityIds: string[];
433
+ } | {
434
+ mode: 'launch';
435
+ kind: string;
436
+ actionName: string;
437
+ recordId: string;
438
+ };
439
+ /** Header chips: a record chip binds that record, an entity chip binds the list, neither is global. */
440
+ declare function axmMiniChatHistoryScopeFromDraft(draft: AXMMiniChatPageContextDraft | null, chips: readonly AXMMiniChatContextChip[]): AXMMiniChatHistoryScope;
441
+ /**
442
+ * Fixed surfaces (form designer, entity window).
443
+ * Plain header inbox returns null so the live chips decide.
444
+ */
445
+ declare function axmMiniChatHistoryScopeFromOpen(options: {
446
+ scope: AXMMiniChatPanelScope;
447
+ entityId?: string;
448
+ entityType?: string;
449
+ launchContext?: AXMContextualAssistContext;
450
+ }): AXMMiniChatHistoryScope | null;
451
+ /** Entity binding stamped on a new header chat so it stays out of global history. */
452
+ declare function axmEntityRefForMiniChatPageContext(launch: AXMContextualAssistContext | undefined): AXMEntityChatRef | undefined;
453
+ declare function axmMiniChatHistoryScopeKey(scope: AXMMiniChatHistoryScope): string;
454
+ /** Chats with no entity and no surface context. These are the only rooms on `/chat/`. */
455
+ declare function axmConversationIsGlobalChat(room: AXMEntityChatRoomRef | null | undefined): boolean;
456
+ declare function axmConversationMatchesHistoryScope(room: AXMEntityChatRoomRef | null | undefined, scope: AXMMiniChatHistoryScope): boolean;
457
+ /** True when this open window still belongs to the route the user is on. Header inbox follows every route. */
458
+ declare function axmMiniChatWindowOwnsRoute(options: Pick<AXMMiniChatPanelOpenOptions, 'scope' | 'entityId' | 'entityType' | 'launchContext'>, params: Record<string, string>): boolean;
459
+
233
460
  /** User profile, discovery, and presence for conversation chat. */
234
461
  declare abstract class AXMChatUserApi extends AXConversationUserApi {
235
462
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatUserApi, never>;
@@ -244,6 +471,8 @@ declare abstract class AXMChatConversationApi extends AXConversationApi {
244
471
  * Bypasses the regular inbox filtering so entity chats remain discoverable per entity.
245
472
  */
246
473
  abstract findEntityConversations(entityType: string, entityId: string): Promise<AXConversation[]>;
474
+ /** Chat rooms that belong to one mini-chat history scope (global, entity, or a surface such as form designer). */
475
+ abstract findHistoryConversations(scope: AXMMiniChatHistoryScope): Promise<AXConversation[]>;
247
476
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatConversationApi, never>;
248
477
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatConversationApi>;
249
478
  }
@@ -335,6 +564,7 @@ declare class AXMChatEntityConversationApi extends AXMChatConversationApi {
335
564
  searchConversations(query: string): Promise<AXConversation[]>;
336
565
  filterConversations(filters: AXConversationFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversation>>;
337
566
  findEntityConversations(entityType: string, entityId: string): Promise<AXConversation[]>;
567
+ findHistoryConversations(scope: AXMMiniChatHistoryScope): Promise<AXConversation[]>;
338
568
  getParticipants(conversationId: string): Promise<AXConversationParticipant[]>;
339
569
  addParticipants(conversationId: string, userIds: string[]): Promise<AXConversation>;
340
570
  /**
@@ -396,6 +626,8 @@ declare class AXMChatEntityConversationRoomQueryService {
396
626
  private readonly roomData;
397
627
  private readonly messageData;
398
628
  loadChatRooms(): Promise<AXMConversationRoom[]>;
629
+ /** Every chat room the current user can open, including entity and surface mini chats. */
630
+ loadAccessibleChatRooms(): Promise<AXMConversationRoom[]>;
399
631
  enrichRoom(room: AXMConversationRoom, options?: {
400
632
  probeLastMessage?: boolean;
401
633
  currentUserId?: string;
@@ -584,9 +816,9 @@ declare const AXM_CHAT_SIDEBAR_ACTION_PROVIDER: InjectionToken<AXMChatSidebarAct
584
816
 
585
817
  /** True when the conversation is an assist / AI bot chat. */
586
818
  declare function axmIsAssistBotConversation(conversation: AXConversation): boolean;
587
- /** Inbox (`/chat/`) must not list entity-record mini chats. */
819
+ /** Inbox (`/chat/`) lists only global chats: no entity, record, or surface such as form designer. */
588
820
  declare function axmExcludeEntityChatConversations(conversations: AXConversation[]): AXConversation[];
589
- /** Wraps a sidebar tab so entity-scoped chats stay off the main chat list. */
821
+ /** Wraps a sidebar tab so only global chats stay on the main chat list. */
590
822
  declare function axmInboxConversationTab(tab: AXConversationTab): AXConversationTab;
591
823
  /** Sidebar tab for AI assist conversations (`type: 'bot'` or assist metadata). */
592
824
  declare const AXM_CONVERSATION_TAB_BOT: AXConversationTab;
@@ -666,6 +898,7 @@ interface AXMChatEmptyAssistSessionBind {
666
898
  entityId?: string;
667
899
  entityType?: string;
668
900
  launchContext?: AXMContextualAssistContext;
901
+ assistSelection?: AXMMiniChatAssistSelection;
669
902
  }
670
903
  /**
671
904
  * Shared new-chat assist selection for the empty-state welcome UI and the real
@@ -687,6 +920,7 @@ declare class AXMChatEmptyAssistSessionService {
687
920
  readonly entityId: _angular_core.WritableSignal<string | undefined>;
688
921
  readonly entityType: _angular_core.WritableSignal<string | undefined>;
689
922
  readonly launchContext: _angular_core.WritableSignal<AXMContextualAssistContext | undefined>;
923
+ readonly assistSelection: _angular_core.WritableSignal<AXMMiniChatAssistSelection>;
690
924
  readonly assistPickerOpen: _angular_core.WritableSignal<boolean>;
691
925
  private ensurePromise;
692
926
  bind(input: AXMChatEmptyAssistSessionBind): void;
@@ -1288,14 +1522,14 @@ declare class AXMCommentManagementService {
1288
1522
  private formatComment;
1289
1523
  private buildCommentTree;
1290
1524
  private formatThread;
1291
- createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;
1292
- getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;
1293
- countCommentsForEntity(entityRef: AXMCommentEntityData): Promise<number>;
1294
- listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]>;
1295
- updateThread(entityRef: AXMCommentEntityData, topic: string, data: Partial<{
1525
+ createThread(entityRef: AXMCommentEntityData$1, topic: string, title?: string): Promise<AXMCommentThread>;
1526
+ getThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMCommentThread | null>;
1527
+ countCommentsForEntity(entityRef: AXMCommentEntityData$1): Promise<number>;
1528
+ listThreads(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMCommentThread[]>;
1529
+ updateThread(entityRef: AXMCommentEntityData$1, topic: string, data: Partial<{
1296
1530
  title: string;
1297
1531
  }>): Promise<AXMCommentThread>;
1298
- deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean>;
1532
+ deleteThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<boolean>;
1299
1533
  addComment(threadId: string, content: string, parentCommentId?: string, contentType?: string, userId?: string): Promise<AXMComment>;
1300
1534
  getComments(threadId: string, nested: boolean): Promise<AXMComment[]>;
1301
1535
  getComment(commentId: string): Promise<AXMComment>;
@@ -1417,13 +1651,13 @@ declare class AXMCommentComponent implements OnInit {
1417
1651
  declare function axmExtractTextFromPayload(payload: AXMessagePayload | undefined): string;
1418
1652
 
1419
1653
  declare abstract class AXMCommentService {
1420
- abstract createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;
1421
- abstract getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;
1422
- abstract listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]>;
1423
- abstract updateThread(entityRef: AXMCommentEntityData, topic: string, data: Partial<{
1654
+ abstract createThread(entityRef: AXMCommentEntityData$1, topic: string, title?: string): Promise<AXMCommentThread>;
1655
+ abstract getThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMCommentThread | null>;
1656
+ abstract listThreads(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMCommentThread[]>;
1657
+ abstract updateThread(entityRef: AXMCommentEntityData$1, topic: string, data: Partial<{
1424
1658
  title: string;
1425
1659
  }>): Promise<AXMCommentThread>;
1426
- abstract deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean>;
1660
+ abstract deleteThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<boolean>;
1427
1661
  abstract addComment(threadId: string, content: string, parentCommentId?: string, contentType?: string, userId?: string): Promise<AXMComment>;
1428
1662
  abstract getComments(threadId: string, nested: boolean): Promise<AXMComment[]>;
1429
1663
  abstract getComment(commentId: string): Promise<AXMComment>;
@@ -1443,10 +1677,10 @@ declare class AXMCommentServiceImpl {
1443
1677
  private readonly messageService;
1444
1678
  private readonly filterService;
1445
1679
  private readonly translationService;
1446
- createThread(creatorUser: AXPUserReference, entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMConversationRoom>;
1447
- getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom | null>;
1448
- listRoomsForEntity(entityRef: AXMCommentEntityData): Promise<AXMConversationRoom[]>;
1449
- listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom[]>;
1680
+ createThread(creatorUser: AXPUserReference, entityRef: AXMCommentEntityData$1, topic: string, title?: string): Promise<AXMConversationRoom>;
1681
+ getThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMConversationRoom | null>;
1682
+ listRoomsForEntity(entityRef: AXMCommentEntityData$1): Promise<AXMConversationRoom[]>;
1683
+ listThreads(entityRef: AXMCommentEntityData$1, topic: string): Promise<AXMConversationRoom[]>;
1450
1684
  updateThread(threadId: string, data: Partial<{
1451
1685
  title: string;
1452
1686
  }>): Promise<AXMConversationRoom>;
@@ -1561,64 +1795,6 @@ declare class AXMCommentWidgetViewComponent extends AXPValueWidgetComponent<AXPE
1561
1795
 
1562
1796
  declare const AXPCommentWidget: AXPWidgetConfig;
1563
1797
 
1564
- /** Entity reference an entity-scoped chat is bound to (stored in conversation metadata). */
1565
- interface AXMEntityChatRef {
1566
- entityId: string;
1567
- entityType: string;
1568
- }
1569
- /** Room fields used to decide whether a chat belongs on the main inbox. */
1570
- interface AXMEntityChatRoomRef {
1571
- metadata?: Record<string, unknown>;
1572
- entityRef?: Pick<AXMCommentEntityData$1, 'entityId' | 'entityTypeId'> | null;
1573
- }
1574
- /** Room metadata flag: entity mini-chats stay off `/chat/`; header inbox chats omit this. */
1575
- declare const AXM_MINI_CHAT_SCOPE_METADATA_KEY = "miniChatScope";
1576
- declare const AXM_MINI_CHAT_SCOPE_ENTITY = "entity";
1577
- /**
1578
- * Synthetic record id for Ask AI on an entity **list** (no row id).
1579
- * Keeps list history on that page and out of the main chat sidebar.
1580
- */
1581
- declare const AXM_ENTITY_LIST_CHAT_ID = "__entity-list__";
1582
- /**
1583
- * Conversation metadata for an entity-scoped assist chat.
1584
- * Keeps `assistId` so the existing assist reply pipeline still answers in entity chats.
1585
- */
1586
- declare function axmBuildEntityChatConversationMetadata(args: {
1587
- entityId: string;
1588
- entityType: string;
1589
- assistId: string;
1590
- }): Record<string, unknown>;
1591
- /**
1592
- * `AXConversationService.createConversation` stores the whole UI options object as
1593
- * `room.metadata`, nesting real keys under `metadata.metadata`. Flatten so entity
1594
- * flags sit at the top level for inbox filters and `entityRef`.
1595
- */
1596
- declare function axmFlattenConversationCreateMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
1597
- /**
1598
- * Resolves the entity reference from conversation metadata.
1599
- * `AXConversationService.createConversation` may nest the UI object, so values
1600
- * are also probed at `metadata.metadata.*`.
1601
- */
1602
- declare function axmExtractEntityRefFromMetadata(metadata: Record<string, unknown> | undefined): AXMEntityChatRef | undefined;
1603
- /** Entity id/type from a contextual-assist launch payload (entity row / details). */
1604
- declare function axmEntityRefFromLaunchContext(launch: AXMContextualAssistContext | undefined): AXMEntityChatRef | undefined;
1605
- /** True when the conversation is bound to an entity page (not the site-header inbox). */
1606
- declare function axmConversationIsEntityChat(metadata: Record<string, unknown> | undefined): boolean;
1607
- /** True when conversation metadata targets the given entity reference. */
1608
- declare function axmConversationMatchesEntity(metadata: Record<string, unknown> | undefined, ref: AXMEntityChatRef): boolean;
1609
- /**
1610
- * True when a persisted room is an entity-scoped chat (metadata and/or `entityRef`).
1611
- * Header / inbox AI chats have neither; they belong on `/chat/`.
1612
- */
1613
- declare function axmRoomIsEntityChat(room: AXMEntityChatRoomRef | null | undefined): boolean;
1614
- /** True when a room is bound to the given entity via metadata or `entityRef`. */
1615
- declare function axmRoomMatchesEntity(room: AXMEntityChatRoomRef | null | undefined, ref: AXMEntityChatRef): boolean;
1616
- /**
1617
- * Persisted `entityRef` for an entity-scoped chat room so history can query by record
1618
- * and the main inbox can exclude the room (comment threads use `kind: 'comment'`).
1619
- */
1620
- declare function axmBuildEntityChatRoomEntityRef(metadata: Record<string, unknown> | undefined): AXMCommentEntityData$1 | undefined;
1621
-
1622
1798
  /** Arguments accepted by `AXConversationService.createConversation`, prebuilt for an entity chat. */
1623
1799
  interface AXMEntityChatCreateData {
1624
1800
  participantIds: string[];
@@ -1651,6 +1827,8 @@ declare class AXMEntityChatService {
1651
1827
  private get conversationApi();
1652
1828
  /** Returns every conversation bound to the given entity reference. */
1653
1829
  findEntityConversations(ref: AXMEntityChatRef): Promise<AXConversation[]>;
1830
+ /** History for one mini-chat surface: global, an entity or record, or a launch such as form designer. */
1831
+ findHistoryConversations(scope: AXMMiniChatHistoryScope): Promise<AXConversation[]>;
1654
1832
  /**
1655
1833
  * Creates a new entity-scoped assist conversation and selects it.
1656
1834
  * Must go through {@link AXConversationService.createConversation} so the open mini-chat
@@ -1674,19 +1852,23 @@ declare class AXMEntityChatService {
1674
1852
  * Compact scrollable list of inbox AI-assist chats (non-entity bot / assist conversations).
1675
1853
  */
1676
1854
  declare class AXMMiniChatInboxHistoryComponent implements OnInit {
1677
- private readonly conversationApi;
1855
+ private readonly entityChatService;
1678
1856
  private readonly conversationFilter;
1679
1857
  private readonly realtimeBus;
1680
1858
  private readonly destroyRef;
1859
+ /** Which chats to list. Defaults to global (no entity and no surface). */
1860
+ readonly scope: _angular_core.InputSignal<AXMMiniChatHistoryScope>;
1681
1861
  /** Emits when the user picks a conversation from the list. */
1682
1862
  readonly conversationSelected: _angular_core.OutputEmitterRef<string>;
1683
1863
  /** Emits whether the loaded history contains at least one conversation. */
1684
1864
  readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
1685
1865
  readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
1686
1866
  readonly loading: _angular_core.WritableSignal<boolean>;
1867
+ private refreshGeneration;
1868
+ constructor();
1687
1869
  ngOnInit(): void;
1688
- /** Reloads AI-assist inbox conversations. */
1689
- refresh(): Promise<void>;
1870
+ /** Reloads conversations for the current history scope. */
1871
+ refresh(scope?: AXMMiniChatHistoryScope): Promise<void>;
1690
1872
  private bindRealtimeHistory;
1691
1873
  private matchesInbox;
1692
1874
  protected resolveListAvatar(conversation: AXConversation): {
@@ -1696,7 +1878,7 @@ declare class AXMMiniChatInboxHistoryComponent implements OnInit {
1696
1878
  };
1697
1879
  protected onSelect(conversationId: string): void;
1698
1880
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatInboxHistoryComponent, never>;
1699
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxHistoryComponent, "axm-mini-chat-inbox-history", never, {}, { "conversationSelected": "conversationSelected"; "hasConversationsChange": "hasConversationsChange"; }, never, never, true, never>;
1881
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxHistoryComponent, "axm-mini-chat-inbox-history", never, { "scope": { "alias": "scope"; "required": false; "isSignal": true; }; }, { "conversationSelected": "conversationSelected"; "hasConversationsChange": "hasConversationsChange"; }, never, never, true, never>;
1700
1882
  }
1701
1883
 
1702
1884
  type AXMMiniChatInboxConversationFilter = (conversation: AXConversation) => boolean;
@@ -1826,9 +2008,11 @@ declare class AXMMiniChatHistoryComponent implements OnInit {
1826
2008
  readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
1827
2009
  readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
1828
2010
  readonly loading: _angular_core.WritableSignal<boolean>;
2011
+ private refreshGeneration;
2012
+ constructor();
1829
2013
  ngOnInit(): void;
1830
2014
  /** Reloads the entity conversation list (call when the history panel becomes visible). */
1831
- refresh(): Promise<void>;
2015
+ refresh(entityId?: string, entityType?: string): Promise<void>;
1832
2016
  private bindRealtimeHistory;
1833
2017
  protected resolveListAvatar(conversation: AXConversation): {
1834
2018
  title: string;
@@ -1845,118 +2029,52 @@ declare function axmUpsertMiniChatHistoryItem(items: AXConversation[], next: AXC
1845
2029
  /** Removes a conversation from a mini-chat history list. */
1846
2030
  declare function axmRemoveMiniChatHistoryItem(items: AXConversation[], conversationId: string): AXConversation[];
1847
2031
 
1848
- /** Anchor element for overlay positioning. */
1849
- type AXMMiniChatPanelAnchor = Element | ElementRef<HTMLElement>;
1850
- /**
1851
- * Common placement aliases mapped to {@link AXPlacement}.
1852
- * Examples: `top-right` → `top-end`, `bottom-left` → `bottom-start`.
1853
- */
1854
- type AXMMiniChatPanelSide = AXPlacement | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
1855
- /** Fixed viewport coordinates (px). Ignored when `anchor` is set. */
1856
- interface AXMMiniChatPanelPosition {
1857
- x: number;
1858
- y: number;
1859
- }
1860
- /** Mini chat panel scope: entity-bound threads or main inbox (non-entity chats). */
1861
- type AXMMiniChatPanelScope = 'entity' | 'inbox';
1862
- /**
1863
- * How the shared panel is hosted.
1864
- * `overlay` is the floating window (header / entity pages).
1865
- * `embedded` fills the host (entity record details, later).
1866
- */
1867
- type AXMMiniChatPanelPresentation = 'overlay' | 'embedded';
1868
- /** Session key used for the global inbox mini chat (non-entity conversations). */
1869
- declare const AXM_MINI_CHAT_INBOX_SESSION_KEY = "__inbox__";
1870
- /** Popup dock name for minimized mini-chat tabs in the root footer. */
1871
- declare const AXM_MINI_CHAT_POPUP_DOCK = "mini-chat";
1872
- /** Persisted panel state for a mini chat session. */
1873
- interface AXMMiniChatPanelSessionState {
1874
- view: 'thread' | 'history';
1875
- selectedChatId?: string;
1876
- hasOpened: boolean;
1877
- }
1878
- /** Options passed to {@link AXMMiniChatPanelService.open}. */
1879
- interface AXMMiniChatPanelOpenOptions {
1880
- /** Default: `entity`. Use `inbox` for regular (non-entity) chats shown in the main chat sidebar. */
1881
- scope?: AXMMiniChatPanelScope;
1882
- entityId?: string;
1883
- entityType?: string;
1884
- assistId?: string;
1885
- title?: string;
1886
- showInfoBar?: boolean;
1887
- showComposer?: boolean;
1888
- /** Default: `overlay`. Use `embedded` when the panel is inlined in a page. */
1889
- presentation?: AXMMiniChatPanelPresentation;
1890
- /** Fixed viewport position (px). Ignored when `anchor` is set. */
1891
- position?: AXMMiniChatPanelPosition;
1892
- /** Anchor element for popover placement. */
1893
- anchor?: AXMMiniChatPanelAnchor;
1894
- /** Placement relative to anchor. Default: `top-end` when anchored. */
1895
- placement?: AXMMiniChatPanelSide;
1896
- offsetX?: number;
1897
- offsetY?: number;
1898
- autoFlip?: boolean;
1899
- /** When true, always opens a fresh conversation thread. */
1900
- forceNewChat?: boolean;
1901
- /**
1902
- * Record/surface context for a new assist thread (entity-row assist).
1903
- * Stored on the room and used to generate contextual starter chips.
1904
- */
1905
- launchContext?: AXMContextualAssistContext;
1906
- }
1907
- /** Window controls exposed by the mini-chat popup host to {@link AXMMiniChatPanelService}. */
1908
- interface AXMMiniChatPopupWindowApi {
1909
- close(): void;
1910
- restore(): void;
1911
- minimize(): void;
1912
- maximize(): void;
1913
- isMinimized(): boolean;
1914
- isMaximized(): boolean;
1915
- }
1916
- /** Assigned onto {@link AXMMiniChatPopupWindowComponent} via popup `data`. */
1917
- interface AXMMiniChatPopupWindowData {
1918
- scope: AXMMiniChatPanelScope;
1919
- entityId?: string;
1920
- entityType?: string;
1921
- assistId?: string;
1922
- panelTitle?: string;
1923
- showInfoBar: boolean;
1924
- showComposer: boolean;
1925
- initialView: 'thread' | 'history';
1926
- initialConversationId?: string;
1927
- startWithNewChat: boolean;
1928
- launchContext?: AXMContextualAssistContext;
1929
- onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
1930
- registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
1931
- }
1932
-
1933
2032
  /**
1934
2033
  * Opens the shared mini chat window via {@link AXPopupService} (header inbox, entity FAB, contextual assist).
1935
2034
  * Uses the module {@link AXConversationService} so assist SSE patches stream live.
1936
- * Stays mounted across route changes; minimize hides the overlay and docks a tab in the footer.
2035
+ * Stays mounted across route changes and returns to that page's home thread.
2036
+ * Minimize hides the overlay and docks a tab in the footer.
1937
2037
  * Restores the last conversation per session on reopen; use {@link forceNewChat} for an explicit new thread.
1938
2038
  */
1939
2039
  declare class AXMMiniChatPanelService {
1940
2040
  private readonly popupService;
2041
+ private readonly settingsService;
2042
+ private readonly document;
1941
2043
  private readonly translation;
1942
2044
  private readonly conversationService;
1943
2045
  private readonly conversationApi;
1944
2046
  private readonly focusService;
2047
+ private readonly router;
2048
+ private readonly routeHome;
1945
2049
  private windowApi;
1946
2050
  private closePromise;
1947
2051
  private windowGeneration;
2052
+ private anchorPlacementCleanup;
1948
2053
  /** Active conversation before the panel took over selection (entity scope; restored on close). */
1949
2054
  private savedActiveConversationId;
1950
2055
  /** Root focus id before the panel opened (restored so assist/realtime keep the right thread). */
1951
2056
  private savedFocusedConversationId;
1952
2057
  /** Per-entity session (view, selected conversation) restored when the panel reopens. */
1953
2058
  private readonly sessions;
1954
- /** Reactive open state for launcher UI (true while the window exists, including minimized). */
2059
+ private retainOnClose;
2060
+ private retainedHidden;
2061
+ private retainedSessionKey;
2062
+ private activeOpenOptions;
2063
+ private boundRouteKey;
2064
+ private activePageKey;
2065
+ private retargeting;
2066
+ private popupFrameReady;
2067
+ /** Reactive open state for launcher UI (true while the window exists, including minimized or hidden). */
1955
2068
  readonly panelOpen: _angular_core.WritableSignal<boolean>;
1956
- /** True while the mini chat window is mounted (visible or minimized). */
2069
+ constructor();
2070
+ /** True while the mini chat window is mounted (visible, minimized, or retained-hidden). */
1957
2071
  isOpen(): boolean;
2072
+ /** True while the window is on screen. */
2073
+ isVisible(): boolean;
1958
2074
  /** Closes the window when it is open. */
1959
2075
  close(): void;
2076
+ /** Hides a retained window. Destroys the window when retention is off. */
2077
+ dismiss(): void;
1960
2078
  /** Toggles the inbox mini chat window (regular non-entity conversations). */
1961
2079
  toggleInbox(options?: Omit<AXMMiniChatPanelOpenOptions, 'scope' | 'entityId' | 'entityType'>): void;
1962
2080
  /**
@@ -1971,8 +2089,17 @@ declare class AXMMiniChatPanelService {
1971
2089
  private resolveWindowTitle;
1972
2090
  private buildSessionKey;
1973
2091
  private buildEntityKey;
2092
+ /** List and record of the same entity are different chats. */
2093
+ private currentPageChatKey;
1974
2094
  private abandonOpenWindow;
2095
+ private onNavigation;
1975
2096
  private finishWindowClose;
2097
+ /** Pins the popup beside its opener, or restores the last header-drag position. */
2098
+ private watchAnchorPlacement;
2099
+ private ensurePopupFrameLoaded;
2100
+ private loadPopupFrame;
2101
+ private persistPopupFrame;
2102
+ private clearAnchorPlacement;
1976
2103
  private captureActiveConversation;
1977
2104
  private captureFocusedConversation;
1978
2105
  private restoreFocusedConversation;
@@ -2002,13 +2129,6 @@ declare class AXMMiniChatLauncherComponent {
2002
2129
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatLauncherComponent, "axm-mini-chat-launcher", never, { "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": true; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offsetX": { "alias": "offsetX"; "required": false; "isSignal": true; }; "offsetY": { "alias": "offsetY"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2003
2130
  }
2004
2131
 
2005
- type AXMMiniChatContextChipKind = 'entity' | 'view' | 'record';
2006
- interface AXMMiniChatContextChip {
2007
- id: string;
2008
- kind: AXMMiniChatContextChipKind;
2009
- label: string;
2010
- }
2011
-
2012
2132
  /**
2013
2133
  * Live entity/view/record chips for the header mini chat.
2014
2134
  * Chips stay editable until the first message pins them on the conversation.
@@ -2021,6 +2141,7 @@ declare class AXMMiniChatPageContextChipsService {
2021
2141
  private readonly translation;
2022
2142
  readonly chips: _angular_core.WritableSignal<AXMMiniChatContextChip[]>;
2023
2143
  readonly locked: _angular_core.WritableSignal<boolean>;
2144
+ readonly historyScope: _angular_core.WritableSignal<AXMMiniChatHistoryScope>;
2024
2145
  private capturing;
2025
2146
  private pinnedId;
2026
2147
  private readonly dismissed;
@@ -2052,6 +2173,7 @@ declare class AXMMiniChatPageContextChipsService {
2052
2173
  private ensureDetailDraft;
2053
2174
  private fetchDetail;
2054
2175
  private applyDraft;
2176
+ private publishHistoryScope;
2055
2177
  private readDetailRoute;
2056
2178
  private readRecordTitle;
2057
2179
  private resolveText;
@@ -2065,18 +2187,23 @@ declare class AXMMiniChatPageContextChipsService {
2065
2187
  */
2066
2188
  declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
2067
2189
  private readonly conversationService;
2190
+ private readonly composerService;
2191
+ private readonly fileDrop;
2192
+ private fileDragDepth;
2068
2193
  private readonly conversationApi;
2069
2194
  private readonly pageContext;
2070
2195
  private readonly localeService;
2071
2196
  private readonly device;
2072
2197
  private readonly destroyRef;
2073
2198
  protected readonly pageContextChips: AXMMiniChatPageContextChipsService;
2199
+ private readonly routeHome;
2074
2200
  private readonly localeProfile;
2075
2201
  readonly scope: _angular_core.InputSignal<AXMMiniChatPanelScope>;
2076
2202
  readonly presentation: _angular_core.InputSignal<AXMMiniChatPanelPresentation>;
2077
2203
  readonly entityId: _angular_core.InputSignal<string | undefined>;
2078
2204
  readonly entityType: _angular_core.InputSignal<string | undefined>;
2079
2205
  readonly assistId: _angular_core.InputSignal<string | undefined>;
2206
+ readonly assistSelection: _angular_core.InputSignal<AXMMiniChatAssistSelection>;
2080
2207
  readonly title: _angular_core.InputSignal<string | undefined>;
2081
2208
  readonly showInfoBar: _angular_core.InputSignal<boolean>;
2082
2209
  readonly showComposer: _angular_core.InputSignal<boolean>;
@@ -2092,13 +2219,16 @@ declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
2092
2219
  readonly onSessionChange: _angular_core.InputSignal<((state: Pick<AXMMiniChatPanelSessionState, "view" | "selectedChatId">) => void) | undefined>;
2093
2220
  protected readonly view: _angular_core.WritableSignal<"thread" | "history">;
2094
2221
  protected readonly selectedChatId: _angular_core.WritableSignal<string | undefined>;
2095
- protected readonly isInboxScope: _angular_core.Signal<boolean>;
2222
+ protected readonly fileDragOver: _angular_core.WritableSignal<boolean>;
2223
+ protected readonly historyScope: _angular_core.Signal<AXMMiniChatHistoryScope>;
2096
2224
  protected readonly isEmbedded: _angular_core.Signal<boolean>;
2097
2225
  protected readonly isRtl: _angular_core.Signal<boolean>;
2098
2226
  protected readonly canDragWindow: _angular_core.Signal<boolean>;
2099
2227
  protected readonly canMinimize: _angular_core.Signal<boolean>;
2100
2228
  protected readonly canMaximize: _angular_core.Signal<boolean>;
2101
2229
  protected readonly canClose: _angular_core.Signal<boolean>;
2230
+ /** Home is already a new chat; the plus action is for history and open threads. */
2231
+ protected readonly showNewChatAction: _angular_core.Signal<boolean>;
2102
2232
  protected readonly isRecordAssist: _angular_core.Signal<boolean>;
2103
2233
  protected readonly workingInEntityTitle: _angular_core.Signal<string | null>;
2104
2234
  protected readonly workingInViewTitle: _angular_core.Signal<string | null>;
@@ -2111,6 +2241,11 @@ declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
2111
2241
  protected closePanel(): void;
2112
2242
  protected minimizePanel(): void;
2113
2243
  protected toggleMaximizePanel(): void;
2244
+ protected onFileDragEnter(event: DragEvent): void;
2245
+ protected onFileDragOver(event: DragEvent): void;
2246
+ protected onFileDragLeave(event: DragEvent): void;
2247
+ protected onFileDragEnd(): void;
2248
+ protected onFileDrop(event: DragEvent): Promise<void>;
2114
2249
  protected backToThread(): void;
2115
2250
  protected openHistory(): void;
2116
2251
  protected selectChat(conversationId: string): void;
@@ -2121,9 +2256,12 @@ declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
2121
2256
  private bindPageContextChips;
2122
2257
  private pinPageContextConversation;
2123
2258
  private readRecordTitle;
2259
+ private canAcceptFileDrop;
2260
+ private isFileDrag;
2261
+ private resetFileDrag;
2124
2262
  private syncSession;
2125
2263
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPanelComponent, never>;
2126
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPanelComponent, "axm-mini-chat-panel", never, { "scope": { "alias": "scope"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": true; "isSignal": true; }; "requestMinimize": { "alias": "requestMinimize"; "required": false; "isSignal": true; }; "requestMaximize": { "alias": "requestMaximize"; "required": false; "isSignal": true; }; "requestRestore": { "alias": "requestRestore"; "required": false; "isSignal": true; }; "isMaximized": { "alias": "isMaximized"; "required": false; "isSignal": true; }; "initialView": { "alias": "initialView"; "required": false; "isSignal": true; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; "isSignal": true; }; "startWithNewChat": { "alias": "startWithNewChat"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "onSessionChange": { "alias": "onSessionChange"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2264
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPanelComponent, "axm-mini-chat-panel", never, { "scope": { "alias": "scope"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "assistSelection": { "alias": "assistSelection"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": true; "isSignal": true; }; "requestMinimize": { "alias": "requestMinimize"; "required": false; "isSignal": true; }; "requestMaximize": { "alias": "requestMaximize"; "required": false; "isSignal": true; }; "requestRestore": { "alias": "requestRestore"; "required": false; "isSignal": true; }; "isMaximized": { "alias": "isMaximized"; "required": false; "isSignal": true; }; "initialView": { "alias": "initialView"; "required": false; "isSignal": true; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; "isSignal": true; }; "startWithNewChat": { "alias": "startWithNewChat"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "onSessionChange": { "alias": "onSessionChange"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2127
2265
  }
2128
2266
 
2129
2267
  /**
@@ -2132,18 +2270,23 @@ declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
2132
2270
  */
2133
2271
  declare class AXMMiniChatPopupWindowComponent extends AXPopupComponentBase {
2134
2272
  private readonly destroyRef;
2273
+ private readonly hostElement;
2135
2274
  scope: AXMMiniChatPanelScope;
2136
2275
  entityId?: string;
2137
2276
  entityType?: string;
2138
2277
  assistId?: string;
2278
+ assistSelection: AXMMiniChatAssistSelection;
2139
2279
  panelTitle?: string;
2140
2280
  showInfoBar: boolean;
2141
2281
  showComposer: boolean;
2282
+ minimizable: boolean;
2283
+ retainOnClose: boolean;
2142
2284
  initialView: 'thread' | 'history';
2143
2285
  initialConversationId?: string;
2144
2286
  startWithNewChat: boolean;
2145
2287
  launchContext?: AXMContextualAssistContext;
2146
2288
  onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
2289
+ onVisibilityChange?: (visible: boolean) => void;
2147
2290
  registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
2148
2291
  protected readonly closeFn: () => void;
2149
2292
  protected readonly minimizeFn: () => void;
@@ -2151,10 +2294,37 @@ declare class AXMMiniChatPopupWindowComponent extends AXPopupComponentBase {
2151
2294
  protected readonly restoreFn: () => void;
2152
2295
  private readonly windowApi;
2153
2296
  constructor();
2297
+ /**
2298
+ * Escape uses the popup close path. A retained window stays mounted and only hides.
2299
+ */
2300
+ onClosing(event: {
2301
+ cancel: boolean;
2302
+ }): void;
2303
+ private hideRetained;
2304
+ private showRetained;
2305
+ private overlayElement;
2154
2306
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPopupWindowComponent, never>;
2155
2307
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPopupWindowComponent, "axm-mini-chat-popup-window", never, {}, {}, never, never, true, never>;
2156
2308
  }
2157
2309
 
2310
+ /**
2311
+ * Lets the mini-chat window add files to the empty-state composer
2312
+ * the same way its attachment button does.
2313
+ */
2314
+ declare class AXMMiniChatFileDropService {
2315
+ private emptyDraftAdder;
2316
+ private pendingEmptyDraft;
2317
+ /** Compact empty composer registers while it is the visible new-chat surface. */
2318
+ registerEmptyDraftAdder(add: (files: File[]) => void): () => void;
2319
+ /**
2320
+ * Adds files to the empty composer when it is mounted.
2321
+ * Queues them when the thread is about to show that composer.
2322
+ */
2323
+ addEmptyDraftFiles(files: File[]): void;
2324
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatFileDropService, never>;
2325
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMiniChatFileDropService>;
2326
+ }
2327
+
2158
2328
  /**
2159
2329
  * Root-footer dock for minimized mini-chat windows (`mini-chat` dock name).
2160
2330
  */
@@ -2188,6 +2358,8 @@ declare class AXMMiniChatComponent {
2188
2358
  readonly entityType: _angular_core.InputSignal<string | undefined>;
2189
2359
  /** Assist used as the bot peer when creating a new entity chat (falls back to the tenant default). */
2190
2360
  readonly assistId: _angular_core.InputSignal<string | undefined>;
2361
+ /** `ask` prompts in the header inbox. `locked` hides the picker (form designer). */
2362
+ readonly assistSelection: _angular_core.InputSignal<AXMMiniChatAssistSelection>;
2191
2363
  /** Surface context for a new assist thread (entity-row assist chips and room metadata). */
2192
2364
  readonly launchContext: _angular_core.InputSignal<AXMContextualAssistContext | undefined>;
2193
2365
  readonly showInfoBar: _angular_core.InputSignal<boolean>;
@@ -2204,7 +2376,7 @@ declare class AXMMiniChatComponent {
2204
2376
  /** Composer Stop — abort the in-flight assist stream for the active conversation. */
2205
2377
  onComposerGenerationCancelled(): void;
2206
2378
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatComponent, never>;
2207
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatComponent, "axm-mini-chat", never, { "chatId": { "alias": "chatId"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; }, { "conversationOpened": "conversationOpened"; }, never, never, true, never>;
2379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatComponent, "axm-mini-chat", never, { "chatId": { "alias": "chatId"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "assistSelection": { "alias": "assistSelection"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; }, { "conversationOpened": "conversationOpened"; }, never, never, true, never>;
2208
2380
  }
2209
2381
 
2210
2382
  /** Fired after a user message is persisted — triggers assist, auto-reply, and realtime side effects. */
@@ -2226,5 +2398,5 @@ declare const CONVERSATION_START_DIRECT_CHAT_COMMAND = "Conversation:StartDirect
2226
2398
  /** Opens an existing conversation in the chat app. */
2227
2399
  declare const CONVERSATION_OPEN_CHAT_COMMAND = "Conversation:OpenChat";
2228
2400
 
2229
- export { AXMAddReactionCommand, AXMAssistSuggestionChipsComponent, AXMChannelFeedItemComponent, AXMChannelFeedPage, AXMChatAnnouncementChannelService, AXMChatComponent, AXMChatComposerAssistPickerComponent, AXMChatComposerEnsureAssistConversationDirective, AXMChatConversationApi, AXMChatEmptyAssistSessionService, AXMChatEntityConversationApi, AXMChatEntityConversationFocusHandler, AXMChatEntityConversationRoomQueryService, AXMChatEntityMessageApi, AXMChatEntityRealtimeApi, AXMChatEntityUserApi, AXMChatMessageApi, AXMChatRealtimeApi, AXMChatUserApi, AXMCommentComponent, AXMCommentManagementService, AXMCommentPopupComponent, AXMCommentRealtimeService, AXMCommentRealtimeServiceImpl, AXMCommentService, AXMCommentServiceImpl, AXMCommentWidgetViewComponent, AXMConversationAssistBackgroundOperationHandler, AXMConversationEntityStoreService, AXMConversationFocusService, AXMConversationModule, AXMConversationRealtimeBus, AXMEntityChatService, AXMMiniChatComponent, AXMMiniChatFooterDockComponent, AXMMiniChatHeaderSlotComponent, AXMMiniChatHistoryComponent, AXMMiniChatInboxHistoryComponent, AXMMiniChatLauncherComponent, AXMMiniChatPageActionComponent, AXMMiniChatPanelComponent, AXMMiniChatPanelService, AXMMiniChatPopupWindowComponent, AXMShowCommentPopupCommand, AXM_AI_MANAGEMENT_AGENT_ENTITY_NAME, AXM_AI_MANAGEMENT_ASSIST_ENTITY_NAME, AXM_AI_MANAGEMENT_MODULE_NAME, AXM_ASSIST_DEFAULT_RESOLVER_PORT, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE, AXM_CHAT_ASSIST_CATALOG_PORT, AXM_CHAT_EMPTY_STATE_COMPONENT, AXM_CHAT_SIDEBAR_ACTION_PROVIDER, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY, AXM_CONVERSATION_ASSIST_RESPONSE_PORT, AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY, AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE, AXM_CONVERSATION_REGULAR_AUTO_REPLY_PORT, AXM_CONVERSATION_TAB_BOT, AXM_ENTITY_LIST_CHAT_ID, AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER, AXM_MINI_CHAT_INBOX_SESSION_KEY, AXM_MINI_CHAT_POPUP_DOCK, AXM_MINI_CHAT_SCOPE_ENTITY, AXM_MINI_CHAT_SCOPE_METADATA_KEY, AXPCommentWidget, COMMENTS_PAGE_COMPONENT_KEY, CONVERSATION_AFTER_MESSAGE_SENT_COMMAND, CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND, CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND, CONVERSATION_OPEN_CHAT_COMMAND, CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND, CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND, CONVERSATION_START_ASSIST_CHAT_COMMAND, CONVERSATION_START_DIRECT_CHAT_COMMAND, CONVERSATION_SYNC_READ_STATE_COMMAND, axmApplyAnswerTextToAssistPayloadLine, axmAssistFollowUpItemsFromUnknown, axmAssistHasFinalizeMetadata, axmAssistLastTranscriptLine, axmAssistNormalizeFollowUpItemForConversation, axmAssistNormalizeFollowUpItemsForConversation, axmAssistPersistedMessageLooksComplete, axmAssistResolveFollowUpCommandName, axmAssistStarterPromptChipItems, axmAssistSuggestionIconForLabel, axmAssistUserFacingPayloadLine, axmAssistUserVisibleItemsForLine, axmAssistWidgetNodeDedupeKey, axmAssistWidgetNodeFromUnknown, axmBuildAiChatConversationMetadata, axmBuildAssistPeerParticipantFromCreateData, axmBuildAssistPeerParticipantFromId, axmBuildAssistTranscriptLinePayload, axmBuildAutoTitleFromUserText, axmBuildEntityChatConversationMetadata, axmBuildEntityChatRoomEntityRef, axmChatAiPeerParticipantId, axmChatAiTargetAvatarUrl, axmChatAiTargetDisplayDescription, axmChatAiTargetDisplayName, axmChatAiTargetShortcutDescriptionKey, axmChatRenderableAssistWidgetNode, axmCoerceDate, axmCoerceTimestampMs, axmComputeConversationUnreadCount, axmConversationHasAiChat, axmConversationIsEntityChat, axmConversationMatchesEntity, axmEntityRefFromLaunchContext, axmExcludeEntityChatConversations, axmExtractAssistIdFromMetadata, axmExtractAssistSnapshotFromMetadata, axmExtractDirectAgentIdFromMetadata, axmExtractEntityRefFromMetadata, axmExtractModelEntityIdFromMetadata, axmExtractTextFromPayload, axmFilterChatAiTargets, axmFlattenConversationCreateMetadata, axmHydrateRealtimeConversationMessage, axmInboxConversationTab, axmIsAssistBotConversation, axmIsAssistPeerParticipant, axmIsAssistResponseMessage, axmIsAssistRetryableStatus, axmIsAssistStreamingMessage, axmIsAssistStreamingStatus, axmIsAssistTerminalStatus, axmIsUnsupportedLegacyAgentAssistConversation, axmLoadChatAiTargets, axmMessageCountsTowardUnread, axmMessageEntityToMessage, axmNormalizeAssistTranscriptForChatUi, axmNormalizeAssistTranscriptLineResponses, axmParseAssistTranscriptLinePayload, axmParseAssistTranscriptTextEnvelope, axmPartitionAssistAnswerText, axmPreferLocalUnreadCount, axmReadAssistAiTranscript, axmReadAssistAiTranscriptRaw, axmReadAssistFollowUpStatus, axmReadAssistResponseError, axmReadAssistResponseStatus, axmReadPlainTextMessagePayload, axmReadReplyToUserMessageId, axmRemoveMiniChatHistoryItem, axmResolveAssistFinalAnswerText, axmResolveChatAiTargetText, axmRoomEntityToConversation, axmRoomIsEntityChat, axmRoomMatchesEntity, axmRoomWithAssistPeerDisplayName, axmSanitizeAssistUserAnswerText, axmShouldPreferPersistedAssistOverLiveCache, axmShowCommentPopupCommandDefinition, axmSortMessagesNewestFirst, axmSyncAssistPeerDisplayName, axmSyntheticEmbedMessage, axmUpsertMiniChatHistoryItem, axmUserRowToParticipant, channelFeedPageRoutes, commentsPlugin, createConversationServiceSessionAdapter, persistChatAttachment };
2230
- export type { AXMAddReactionCommandInput, AXMAssistConversationSnapshotLite, AXMAssistDefaultResolverPort, AXMAssistStarterPromptChipOptions, AXMChatAiTargetRow, AXMChatAssistCatalogPort, AXMChatEmptyAssistContinue, AXMChatEmptyAssistCreatedHandler, AXMChatEmptyAssistSessionBind, AXMChatSidebarAction, AXMComment, AXMCommentEvent, AXMCommentEventType, AXMCommentThread, AXMConversationAssistResponsePort, AXMConversationRegularAutoReplyPort, AXMConversationServiceSessionAdapter, AXMEntityChatCreateData, AXMEntityChatRef, AXMEntityChatRoomRef, AXMMiniChatInboxConversationFilter, AXMMiniChatPanelAnchor, AXMMiniChatPanelOpenOptions, AXMMiniChatPanelPosition, AXMMiniChatPanelPresentation, AXMMiniChatPanelScope, AXMMiniChatPanelSessionState, AXMMiniChatPanelSide, AXMMiniChatPopupWindowApi, AXMMiniChatPopupWindowData, AXMSendAssistChatMessageOptions, AXMShowCommentPopupCommandInput, AXMThreadEvent, AXMThreadEventType, AXPAiChatFollowUpCommandLite, AXPAiChatFollowUpItemLite, AXPAiChatMessageLite, AXPAiChatNodeOrFollowUpResponseLite, AXPAiChatTextResponseLite, AXPAiEffectiveAssistRowLite, AxmAssistFollowUpStatus, AxmAssistPartitionedAnswerText, AxmAssistResponseStatus, AxmAssistTranscriptLinePayload, AxmAssistUserVisibleItem, CommentsDisplayMode, CommentsPluginOptions };
2401
+ export { AXMAddReactionCommand, AXMAssistSuggestionChipsComponent, AXMChannelFeedItemComponent, AXMChannelFeedPage, AXMChatAnnouncementChannelService, AXMChatComponent, AXMChatComposerAssistPickerComponent, AXMChatComposerEnsureAssistConversationDirective, AXMChatConversationApi, AXMChatEmptyAssistSessionService, AXMChatEntityConversationApi, AXMChatEntityConversationFocusHandler, AXMChatEntityConversationRoomQueryService, AXMChatEntityMessageApi, AXMChatEntityRealtimeApi, AXMChatEntityUserApi, AXMChatMessageApi, AXMChatRealtimeApi, AXMChatUserApi, AXMCommentComponent, AXMCommentManagementService, AXMCommentPopupComponent, AXMCommentRealtimeService, AXMCommentRealtimeServiceImpl, AXMCommentService, AXMCommentServiceImpl, AXMCommentWidgetViewComponent, AXMConversationAssistBackgroundOperationHandler, AXMConversationEntityStoreService, AXMConversationFocusService, AXMConversationModule, AXMConversationRealtimeBus, AXMEntityChatService, AXMMiniChatComponent, AXMMiniChatFileDropService, AXMMiniChatFooterDockComponent, AXMMiniChatHeaderSlotComponent, AXMMiniChatHistoryComponent, AXMMiniChatInboxHistoryComponent, AXMMiniChatLauncherComponent, AXMMiniChatPageActionComponent, AXMMiniChatPanelComponent, AXMMiniChatPanelService, AXMMiniChatPopupWindowComponent, AXMShowCommentPopupCommand, AXM_AI_MANAGEMENT_AGENT_ENTITY_NAME, AXM_AI_MANAGEMENT_ASSIST_ENTITY_NAME, AXM_AI_MANAGEMENT_MODULE_NAME, AXM_ASSIST_DEFAULT_RESOLVER_PORT, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE, AXM_CHAT_ASSIST_CATALOG_PORT, AXM_CHAT_EMPTY_STATE_COMPONENT, AXM_CHAT_SIDEBAR_ACTION_PROVIDER, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY, AXM_CONVERSATION_ASSIST_RESPONSE_PORT, AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY, AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE, AXM_CONVERSATION_REGULAR_AUTO_REPLY_PORT, AXM_CONVERSATION_TAB_BOT, AXM_ENTITY_LIST_CHAT_ID, AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER, AXM_MINI_CHAT_INBOX_SESSION_KEY, AXM_MINI_CHAT_POPUP_DOCK, AXM_MINI_CHAT_SCOPE_ENTITY, AXM_MINI_CHAT_SCOPE_METADATA_KEY, AXPCommentWidget, COMMENTS_PAGE_COMPONENT_KEY, CONVERSATION_AFTER_MESSAGE_SENT_COMMAND, CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND, CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND, CONVERSATION_OPEN_CHAT_COMMAND, CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND, CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND, CONVERSATION_START_ASSIST_CHAT_COMMAND, CONVERSATION_START_DIRECT_CHAT_COMMAND, CONVERSATION_SYNC_READ_STATE_COMMAND, axmApplyAnswerTextToAssistPayloadLine, axmAssistFollowUpItemsFromUnknown, axmAssistHasFinalizeMetadata, axmAssistLastTranscriptLine, axmAssistNormalizeFollowUpItemForConversation, axmAssistNormalizeFollowUpItemsForConversation, axmAssistPersistedMessageLooksComplete, axmAssistResolveFollowUpCommandName, axmAssistStarterPromptChipItems, axmAssistSuggestionIconForLabel, axmAssistUserFacingPayloadLine, axmAssistUserVisibleItemsForLine, axmAssistWidgetNodeDedupeKey, axmAssistWidgetNodeFromUnknown, axmBuildAiChatConversationMetadata, axmBuildAssistPeerParticipantFromCreateData, axmBuildAssistPeerParticipantFromId, axmBuildAssistTranscriptLinePayload, axmBuildAutoTitleFromUserText, axmBuildEntityChatConversationMetadata, axmBuildEntityChatRoomEntityRef, axmChatAiPeerParticipantId, axmChatAiTargetAvatarUrl, axmChatAiTargetDisplayDescription, axmChatAiTargetDisplayName, axmChatAiTargetShortcutDescriptionKey, axmChatRenderableAssistWidgetNode, axmCoerceDate, axmCoerceTimestampMs, axmComputeConversationUnreadCount, axmConversationHasAiChat, axmConversationIsEntityChat, axmConversationIsGlobalChat, axmConversationMatchesEntity, axmConversationMatchesHistoryScope, axmEntityRefForMiniChatPageContext, axmEntityRefFromLaunchContext, axmExcludeEntityChatConversations, axmExtractAssistIdFromMetadata, axmExtractAssistSnapshotFromMetadata, axmExtractDirectAgentIdFromMetadata, axmExtractEntityRefFromMetadata, axmExtractModelEntityIdFromMetadata, axmExtractTextFromPayload, axmFilterChatAiTargets, axmFlattenConversationCreateMetadata, axmHydrateRealtimeConversationMessage, axmInboxConversationTab, axmIsAssistBotConversation, axmIsAssistPeerParticipant, axmIsAssistResponseMessage, axmIsAssistRetryableStatus, axmIsAssistStreamingMessage, axmIsAssistStreamingStatus, axmIsAssistTerminalStatus, axmIsUnsupportedLegacyAgentAssistConversation, axmLoadChatAiTargets, axmMessageCountsTowardUnread, axmMessageEntityToMessage, axmMiniChatHistoryScopeFromDraft, axmMiniChatHistoryScopeFromOpen, axmMiniChatHistoryScopeKey, axmMiniChatWindowOwnsRoute, axmNormalizeAssistTranscriptForChatUi, axmNormalizeAssistTranscriptLineResponses, axmParseAssistTranscriptLinePayload, axmParseAssistTranscriptTextEnvelope, axmPartitionAssistAnswerText, axmPreferLocalUnreadCount, axmReadAssistAiTranscript, axmReadAssistAiTranscriptRaw, axmReadAssistFollowUpStatus, axmReadAssistResponseError, axmReadAssistResponseStatus, axmReadPlainTextMessagePayload, axmReadReplyToUserMessageId, axmRemoveMiniChatHistoryItem, axmResolveAssistFinalAnswerText, axmResolveChatAiTargetText, axmRoomEntityToConversation, axmRoomIsEntityChat, axmRoomLaunchContext, axmRoomMatchesEntity, axmRoomWithAssistPeerDisplayName, axmSanitizeAssistUserAnswerText, axmShouldPreferPersistedAssistOverLiveCache, axmShowCommentPopupCommandDefinition, axmSortMessagesNewestFirst, axmSyncAssistPeerDisplayName, axmSyntheticEmbedMessage, axmUpsertMiniChatHistoryItem, axmUserRowToParticipant, channelFeedPageRoutes, commentsPlugin, createConversationServiceSessionAdapter, persistChatAttachment };
2402
+ export type { AXMAddReactionCommandInput, AXMAssistConversationSnapshotLite, AXMAssistDefaultResolverPort, AXMAssistStarterPromptChipOptions, AXMChatAiTargetRow, AXMChatAssistCatalogPort, AXMChatEmptyAssistContinue, AXMChatEmptyAssistCreatedHandler, AXMChatEmptyAssistSessionBind, AXMChatSidebarAction, AXMComment, AXMCommentEvent, AXMCommentEventType, AXMCommentThread, AXMConversationAssistResponsePort, AXMConversationRegularAutoReplyPort, AXMConversationServiceSessionAdapter, AXMEntityChatCreateData, AXMEntityChatRef, AXMEntityChatRoomRef, AXMMiniChatAssistSelection, AXMMiniChatHistoryScope, AXMMiniChatInboxConversationFilter, AXMMiniChatPanelAnchor, AXMMiniChatPanelOpenOptions, AXMMiniChatPanelPosition, AXMMiniChatPanelPresentation, AXMMiniChatPanelScope, AXMMiniChatPanelSessionState, AXMMiniChatPanelSide, AXMMiniChatPopupWindowApi, AXMMiniChatPopupWindowData, AXMSendAssistChatMessageOptions, AXMShowCommentPopupCommandInput, AXMThreadEvent, AXMThreadEventType, AXPAiChatFollowUpCommandLite, AXPAiChatFollowUpItemLite, AXPAiChatMessageLite, AXPAiChatNodeOrFollowUpResponseLite, AXPAiChatTextResponseLite, AXPAiEffectiveAssistRowLite, AxmAssistFollowUpStatus, AxmAssistPartitionedAnswerText, AxmAssistResponseStatus, AxmAssistTranscriptLinePayload, AxmAssistUserVisibleItem, CommentsDisplayMode, CommentsPluginOptions };