@acorex-platform/module-conversation-client 0.0.38 → 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.
- package/fesm2022/{acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-XTzQQhii.mjs → acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DcdPViNy.mjs} +11480 -8695
- package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DcdPViNy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-BMGagKtP.mjs → acorex-platform-module-conversation-client-after-message-sent.command-Cf1zPn3u.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-BMGagKtP.mjs.map → acorex-platform-module-conversation-client-after-message-sent.command-Cf1zPn3u.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-D1SDsHvl.mjs → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-R40vR1C3.mjs} +8 -7
- package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-D1SDsHvl.mjs.map → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-R40vR1C3.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-CUlLCsF6.mjs +1756 -0
- package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-CUlLCsF6.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-assist-tool-detail-popup.component-B7LW5ie9.mjs +120 -0
- package/fesm2022/{acorex-platform-module-conversation-client-assist-tool-detail-popup.component-BV1YH96m.mjs.map → acorex-platform-module-conversation-client-assist-tool-detail-popup.component-B7LW5ie9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-nE7xP4bF.mjs → acorex-platform-module-conversation-client-chat-call-session-page.component-DiA01mpJ.mjs} +747 -25
- package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-DiA01mpJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-DXkqkS50.mjs → acorex-platform-module-conversation-client-chat-call-start-popup.component-nLVRg9HK.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-DXkqkS50.mjs.map → acorex-platform-module-conversation-client-chat-call-start-popup.component-nLVRg9HK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-SYCtAqcV.mjs → acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-Bnbj0e6M.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-SYCtAqcV.mjs.map → acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-Bnbj0e6M.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-bwT1-lAn.mjs +497 -0
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-bwT1-lAn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-Dv_x3ztZ.mjs → acorex-platform-module-conversation-client-comments-page.component-C0JLE_oX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-Dv_x3ztZ.mjs.map → acorex-platform-module-conversation-client-comments-page.component-C0JLE_oX.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-audience.mjs +277 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-audience.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-post.mjs +530 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-post.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-receipt.mjs +206 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-channel-receipt.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-message.mjs +65 -17
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-message.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-room.mjs +231 -59
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entities-room.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-acorex-platform-module-conversation-client-contracts-entity-catalog-CV_sCYGf.mjs +87 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-acorex-platform-module-conversation-client-contracts-entity-catalog-CV_sCYGf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-audience.entity-DyaUcESJ.mjs +213 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-audience.entity-DyaUcESJ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-post.entity-CbBcChEt.mjs +466 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-post.entity-CbBcChEt.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-receipt.entity-DtRFj8zV.mjs +142 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-channel-receipt.entity-DtRFj8zV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-contracts-entity-catalog-message.entity-Dz7cO1P4.mjs → acorex-platform-module-conversation-client-contracts-entity-catalog-message.entity-CJk1wEvA.mjs} +35 -19
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-message.entity-CJk1wEvA.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-room.entity-Ctt7qzfF.mjs +403 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-room.entity-Ctt7qzfF.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs +860 -4
- package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-local-entities.mjs +3 -0
- package/fesm2022/acorex-platform-module-conversation-client-local-entities.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-8NoSuUwe.mjs → acorex-platform-module-conversation-client-mark-conversation-unread.command-CIT6UHfK.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-8NoSuUwe.mjs.map → acorex-platform-module-conversation-client-mark-conversation-unread.command-CIT6UHfK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-BgJ0Z36e.mjs → acorex-platform-module-conversation-client-open-chat.command-kTWhndd2.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-BgJ0Z36e.mjs.map → acorex-platform-module-conversation-client-open-chat.command-kTWhndd2.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-lcNz4Hpu.mjs → acorex-platform-module-conversation-client-retry-assist-response.command-pKO5UqyB.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-lcNz4Hpu.mjs.map → acorex-platform-module-conversation-client-retry-assist-response.command-pKO5UqyB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-DxccFsD9.mjs → acorex-platform-module-conversation-client-sync-read-state.command-BbQHG28M.mjs} +7 -2
- package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-BbQHG28M.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client.mjs +2 -1
- package/fesm2022/acorex-platform-module-conversation-client.mjs.map +1 -1
- package/package.json +14 -2
- package/types/acorex-platform-module-conversation-client-contracts-entities-channel-audience.d.ts +5 -0
- package/types/acorex-platform-module-conversation-client-contracts-entities-channel-post.d.ts +5 -0
- package/types/acorex-platform-module-conversation-client-contracts-entities-channel-receipt.d.ts +5 -0
- package/types/acorex-platform-module-conversation-client-contracts.d.ts +451 -2
- package/types/acorex-platform-module-conversation-client.d.ts +889 -202
- package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-XTzQQhii.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-assist-tool-detail-popup.component-BV1YH96m.mjs +0 -120
- package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-nE7xP4bF.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-51PtojIM.mjs +0 -482
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-51PtojIM.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-acorex-platform-module-conversation-client-contracts-entity-catalog-Cy3LwYMZ.mjs +0 -52
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-acorex-platform-module-conversation-client-contracts-entity-catalog-Cy3LwYMZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-message.entity-Dz7cO1P4.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-room.entity-B9txvc3y.mjs +0 -263
- package/fesm2022/acorex-platform-module-conversation-client-contracts-entity-catalog-room.entity-B9txvc3y.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-DxccFsD9.mjs.map +0 -1
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Provider, InjectionToken, Type, Signal, OnInit,
|
|
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
|
-
import { AXPExecuteCommand, AXPMultiLanguageString, AXPWidgetNode, AXPUserReference, AXPEntityReference } from '@acorex-platform/framework-shared/core';
|
|
8
|
-
import { AXPDeviceService } from '@acorex-platform/framework-client/core';
|
|
7
|
+
import { AXPExecuteCommand, AXPFilterDefinition, AXPFilterQuery, AXPActionMenuItem, AXPMultiLanguageString, AXPWidgetNode, AXPUserReference, AXPEntityReference } from '@acorex-platform/framework-shared/core';
|
|
9
8
|
import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
|
|
9
|
+
import { AXMChannelFeedItem, AXMConversationRoom, AXMConversationMessage, AXMCommentEntityData as AXMCommentEntityData$1, AXReaction, AXMessagePayload, AXMReactionType } from '@acorex-platform/module-conversation-client/contracts';
|
|
10
|
+
import { Routes } from '@angular/router';
|
|
11
|
+
import { AXClickEvent, AXPlacement, AXStyleLookType } from '@acorex/cdk/common';
|
|
12
|
+
import { AXPDeviceService } from '@acorex-platform/framework-client/core';
|
|
10
13
|
import * as _acorex_components_conversation from '@acorex/components/conversation';
|
|
11
|
-
import { AXConversationApi, AXConversation, AXConversationMessageApi, AXConversationMessage, AXConversationRealtimeApi, AXConversationUserApi,
|
|
12
|
-
import {
|
|
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';
|
|
13
17
|
import { Observable } from 'rxjs';
|
|
14
|
-
import { AXClickEvent, AXStyleLookType, AXPlacement } from '@acorex/cdk/common';
|
|
15
|
-
import { AXPAiChatResponse, AXPAiChatMessage, AXPAiChatFollowUpItem } from '@acorex-platform/module-ai-management-client';
|
|
16
18
|
import { AXPEntityDefinitionRegistryService, AXPEntityActionPlugin } from '@acorex-platform/framework-client/layout/entity';
|
|
19
|
+
import { AXPopupRef, AXPopupComponentBase } from '@acorex/components/popup';
|
|
20
|
+
import { AXPAiChatResponse, AXPAiChatMessage, AXPAiChatFollowUpItem } from '@acorex-platform/module-ai-management-client';
|
|
17
21
|
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
18
22
|
import { AXWysiwygContainerComponent } from '@acorex/components/wysiwyg';
|
|
19
23
|
import { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';
|
|
@@ -42,11 +46,129 @@ declare class AXMConversationAssistBackgroundOperationHandler extends AXPBackgro
|
|
|
42
46
|
}
|
|
43
47
|
declare const AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS: Provider[];
|
|
44
48
|
|
|
49
|
+
declare class AXMChannelFeedPage extends AXPPageLayoutBaseComponent {
|
|
50
|
+
private readonly queryService;
|
|
51
|
+
private readonly commandService;
|
|
52
|
+
private readonly tagService;
|
|
53
|
+
private readonly unreadBadge;
|
|
54
|
+
protected readonly loading: _angular_core.WritableSignal<boolean>;
|
|
55
|
+
protected readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
56
|
+
protected readonly loadFailed: _angular_core.WritableSignal<boolean>;
|
|
57
|
+
protected readonly items: _angular_core.WritableSignal<readonly AXMChannelFeedItem[]>;
|
|
58
|
+
protected readonly hasMore: _angular_core.WritableSignal<boolean>;
|
|
59
|
+
protected readonly filterDefinitions: _angular_core.WritableSignal<AXPFilterDefinition[]>;
|
|
60
|
+
protected readonly panelInitialFilters: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
61
|
+
protected readonly queryFiltersKey: _angular_core.WritableSignal<number>;
|
|
62
|
+
private readonly activeFilters;
|
|
63
|
+
private skip;
|
|
64
|
+
protected readonly skeletonPlaceholders: number[];
|
|
65
|
+
readonly hasActiveFilters: _angular_core.Signal<boolean>;
|
|
66
|
+
protected readonly visible: _angular_core.Signal<AXMChannelFeedItem[]>;
|
|
67
|
+
private readonly searchText;
|
|
68
|
+
private readonly isUnreadFilterActive;
|
|
69
|
+
private readonly isPinnedFilterActive;
|
|
70
|
+
private readonly tagFilter;
|
|
71
|
+
ngOnInit(): Promise<void>;
|
|
72
|
+
getPageTitle(): string;
|
|
73
|
+
getPageIcon(): string | null;
|
|
74
|
+
getPageDescription(): string;
|
|
75
|
+
getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
76
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
77
|
+
protected handleFiltersChanged(filters: AXPFilterQuery[]): void;
|
|
78
|
+
protected clearFilters(): void;
|
|
79
|
+
protected onItemSeen(id: string): void;
|
|
80
|
+
protected retry(): void;
|
|
81
|
+
protected onInfiniteScrollReached(): void;
|
|
82
|
+
protected emptyTitle(): string;
|
|
83
|
+
protected emptyDescription(): string;
|
|
84
|
+
private loadMore;
|
|
85
|
+
private loadFeed;
|
|
86
|
+
private markRead;
|
|
87
|
+
private loadFilterDefinitions;
|
|
88
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChannelFeedPage, never>;
|
|
89
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChannelFeedPage, "axm-channel-feed-page", never, {}, {}, never, never, true, never>;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
declare const channelFeedPageRoutes: Routes;
|
|
93
|
+
|
|
94
|
+
type ChannelFeedItemChrome = 'card' | 'bubble';
|
|
95
|
+
type ChannelFeedTagView = {
|
|
96
|
+
title: AXPMultiLanguageString;
|
|
97
|
+
color: string;
|
|
98
|
+
trackKey: string;
|
|
99
|
+
};
|
|
100
|
+
declare class AXMChannelFeedItemComponent {
|
|
101
|
+
private readonly userAvatarService;
|
|
102
|
+
private readonly tagService;
|
|
103
|
+
private readonly commandService;
|
|
104
|
+
private readonly commentManagement;
|
|
105
|
+
private readonly translation;
|
|
106
|
+
private readonly host;
|
|
107
|
+
private readonly destroyRef;
|
|
108
|
+
private readonly injector;
|
|
109
|
+
item: _angular_core.InputSignal<AXMChannelFeedItem>;
|
|
110
|
+
/** `card` is the announcements page. `bubble` sits inside a conversation bubble. */
|
|
111
|
+
chrome: _angular_core.InputSignal<ChannelFeedItemChrome>;
|
|
112
|
+
itemSeen: _angular_core.OutputEmitterRef<string>;
|
|
113
|
+
private readonly bodyEl;
|
|
114
|
+
protected readonly expanded: _angular_core.WritableSignal<boolean>;
|
|
115
|
+
protected readonly authorName: _angular_core.WritableSignal<string>;
|
|
116
|
+
protected readonly canExpand: _angular_core.WritableSignal<boolean>;
|
|
117
|
+
protected readonly commentsBusy: _angular_core.WritableSignal<boolean>;
|
|
118
|
+
private readonly availableTags;
|
|
119
|
+
private readonly commentCountOverride;
|
|
120
|
+
private lastCommentPostId;
|
|
121
|
+
protected readonly isUnread: _angular_core.Signal<boolean>;
|
|
122
|
+
protected readonly gallery: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFileListItem[]>;
|
|
123
|
+
protected readonly attachments: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFileListItem[]>;
|
|
124
|
+
protected readonly publishedAt: _angular_core.Signal<Date | null>;
|
|
125
|
+
protected readonly eventStartsAt: _angular_core.Signal<Date | null>;
|
|
126
|
+
protected readonly hasEventLocation: _angular_core.Signal<boolean>;
|
|
127
|
+
protected readonly commentCount: _angular_core.Signal<number>;
|
|
128
|
+
protected readonly tags: _angular_core.Signal<ChannelFeedTagView[]>;
|
|
129
|
+
constructor();
|
|
130
|
+
protected toggleBody(event: Event): void;
|
|
131
|
+
protected openComments(event: AXClickEvent): void;
|
|
132
|
+
private showCommentsPopup;
|
|
133
|
+
private refreshCommentCount;
|
|
134
|
+
private updateCanExpand;
|
|
135
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChannelFeedItemComponent, never>;
|
|
136
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChannelFeedItemComponent, "axm-channel-feed-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "chrome": { "alias": "chrome"; "required": false; "isSignal": true; }; }, { "itemSeen": "itemSeen"; }, never, never, true, never>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Bridges platform theme/locale into `@acorex/components/conversation`.
|
|
141
|
+
*
|
|
142
|
+
* Showcase chat calls `AXPlatform.switchLightMode()` / `AXLocaleService.setProfile()` directly,
|
|
143
|
+
* so wallpaper and `translateSync` labels update immediately. The platform shell instead
|
|
144
|
+
* toggles `ax-dark` via {@link AXPLayoutThemeService} and keeps the chat page OnPush —
|
|
145
|
+
* conversation computeds that depend on `AXPlatform.themeMode()` never re-run, and
|
|
146
|
+
* `@acorex:chat` JSON for the new locale is not preloaded until a full refresh.
|
|
147
|
+
*/
|
|
148
|
+
declare class AXMConversationAppearanceSyncService {
|
|
149
|
+
private readonly layoutTheme;
|
|
150
|
+
private readonly platform;
|
|
151
|
+
private readonly translation;
|
|
152
|
+
private readonly destroyRef;
|
|
153
|
+
private readonly revision;
|
|
154
|
+
/** Stable one-item list so `@for (key of viewKeys(); track key)` remounts conversation widgets. */
|
|
155
|
+
readonly viewKeys: _angular_core.Signal<number[]>;
|
|
156
|
+
constructor();
|
|
157
|
+
/** Ensures constructor effects are created at app start (called from the conversation startup task). */
|
|
158
|
+
start(): void;
|
|
159
|
+
private syncPlatformTheme;
|
|
160
|
+
private toAxThemeMode;
|
|
161
|
+
private preloadChatLocales;
|
|
162
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMConversationAppearanceSyncService, never>;
|
|
163
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMConversationAppearanceSyncService>;
|
|
164
|
+
}
|
|
165
|
+
|
|
45
166
|
declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
46
167
|
#private;
|
|
47
168
|
private readonly conversationService;
|
|
48
169
|
private readonly popupService;
|
|
49
170
|
private readonly chatConversationApi;
|
|
171
|
+
private readonly assistResponse;
|
|
50
172
|
private readonly miniChatPanelService;
|
|
51
173
|
private readonly activeCallSessions;
|
|
52
174
|
private readonly composerService;
|
|
@@ -58,6 +180,7 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
58
180
|
private readonly badgeService;
|
|
59
181
|
protected readonly deviceService: AXPDeviceService;
|
|
60
182
|
private readonly destroyRef;
|
|
183
|
+
protected readonly appearanceSync: AXMConversationAppearanceSyncService;
|
|
61
184
|
private readonly routeConversationId;
|
|
62
185
|
private readonly routerUrl;
|
|
63
186
|
ngOnInit(): Promise<void>;
|
|
@@ -65,7 +188,9 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
65
188
|
* Computed signal to check if there is an active conversation selected.
|
|
66
189
|
*/
|
|
67
190
|
readonly hasActiveConversation: _angular_core.Signal<boolean>;
|
|
191
|
+
readonly hidePageComposer: _angular_core.Signal<boolean>;
|
|
68
192
|
readonly showChatList: _angular_core.Signal<boolean>;
|
|
193
|
+
readonly isAnnouncementChannelActive: _angular_core.Signal<boolean>;
|
|
69
194
|
/**
|
|
70
195
|
* Unread messages in other chats (excludes the open conversation), for the mobile back control.
|
|
71
196
|
*/
|
|
@@ -75,13 +200,16 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
75
200
|
* Navigates to the selected conversation route.
|
|
76
201
|
* @param conversationId - The ID of the selected conversation.
|
|
77
202
|
*/
|
|
78
|
-
|
|
203
|
+
readonly onAssistConversationCreated: (conversationId: string) => Promise<void>;
|
|
204
|
+
onConversationSelected(conversationId: string): Promise<void>;
|
|
79
205
|
/** Mobile back: return to the full-screen conversation list (no layout sidebar). */
|
|
80
206
|
openChatList(): void;
|
|
81
207
|
/**
|
|
82
208
|
* Opens the platform conversation info panel when the info-bar title/avatar area is clicked.
|
|
83
209
|
*/
|
|
84
210
|
onInfoBarClick(): void;
|
|
211
|
+
/** Composer Stop — abort the in-flight assist stream for the active conversation. */
|
|
212
|
+
onComposerGenerationCancelled(): void;
|
|
85
213
|
/**
|
|
86
214
|
* Handles Escape key from chat container.
|
|
87
215
|
* Replicates conversation source behavior by closing active conversation here.
|
|
@@ -103,6 +231,232 @@ declare function persistChatAttachment(fileStorage: AXPFileStorageService, file:
|
|
|
103
231
|
fileId: string;
|
|
104
232
|
}>;
|
|
105
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
|
+
|
|
106
460
|
/** User profile, discovery, and presence for conversation chat. */
|
|
107
461
|
declare abstract class AXMChatUserApi extends AXConversationUserApi {
|
|
108
462
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatUserApi, never>;
|
|
@@ -117,6 +471,8 @@ declare abstract class AXMChatConversationApi extends AXConversationApi {
|
|
|
117
471
|
* Bypasses the regular inbox filtering so entity chats remain discoverable per entity.
|
|
118
472
|
*/
|
|
119
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[]>;
|
|
120
476
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatConversationApi, never>;
|
|
121
477
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatConversationApi>;
|
|
122
478
|
}
|
|
@@ -136,6 +492,45 @@ declare abstract class AXMChatRealtimeApi extends AXConversationRealtimeApi {
|
|
|
136
492
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatRealtimeApi>;
|
|
137
493
|
}
|
|
138
494
|
|
|
495
|
+
/**
|
|
496
|
+
* Ensures the tenant announcements channel exists and loads feed rows as chat messages.
|
|
497
|
+
*/
|
|
498
|
+
declare class AXMChatAnnouncementChannelService {
|
|
499
|
+
private readonly entityService;
|
|
500
|
+
private readonly filterService;
|
|
501
|
+
private readonly queryService;
|
|
502
|
+
private readonly session;
|
|
503
|
+
private readonly translation;
|
|
504
|
+
private readonly locale;
|
|
505
|
+
private readonly userApi;
|
|
506
|
+
private subscriberCountCache;
|
|
507
|
+
private unreadByRoomCache;
|
|
508
|
+
private readonly roomData;
|
|
509
|
+
private readonly feedMessageCache;
|
|
510
|
+
canViewBulletins(): boolean;
|
|
511
|
+
isAnnouncementChannel(value: {
|
|
512
|
+
name?: string | null;
|
|
513
|
+
metadata?: Record<string, unknown> | null;
|
|
514
|
+
} | null | undefined): boolean;
|
|
515
|
+
isChannelRoom(value: {
|
|
516
|
+
kind?: string | null;
|
|
517
|
+
type?: string | null;
|
|
518
|
+
name?: string | null;
|
|
519
|
+
metadata?: Record<string, unknown> | null;
|
|
520
|
+
} | null | undefined): boolean;
|
|
521
|
+
ensureRoom(): Promise<AXMConversationRoom | null>;
|
|
522
|
+
findRoom(): Promise<AXMConversationRoom | null>;
|
|
523
|
+
decorateConversation(conversation: AXConversation): Promise<AXConversation>;
|
|
524
|
+
private resolveUnreadByRoom;
|
|
525
|
+
private resolveSubscriberCount;
|
|
526
|
+
getCachedFeedMessage(messageId: string): AXConversationMessage | null;
|
|
527
|
+
getFeedMessages(conversationId: string, pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
528
|
+
searchFeedMessages(conversationId: string, query: string | undefined, pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
529
|
+
private createRoom;
|
|
530
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatAnnouncementChannelService, never>;
|
|
531
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatAnnouncementChannelService>;
|
|
532
|
+
}
|
|
533
|
+
|
|
139
534
|
/**
|
|
140
535
|
* Entity-backed implementation of {@link AXMChatConversationApi} using Conversation.room.
|
|
141
536
|
*/
|
|
@@ -148,6 +543,8 @@ declare class AXMChatEntityConversationApi extends AXMChatConversationApi {
|
|
|
148
543
|
private readonly realtimeBus;
|
|
149
544
|
private readonly focusHandler;
|
|
150
545
|
private readonly roomQuery;
|
|
546
|
+
private readonly announcements;
|
|
547
|
+
private readonly commandService;
|
|
151
548
|
private readonly roomData;
|
|
152
549
|
reportFocusedConversation(conversationId: string | null): void;
|
|
153
550
|
private publishConversationPatch;
|
|
@@ -167,6 +564,7 @@ declare class AXMChatEntityConversationApi extends AXMChatConversationApi {
|
|
|
167
564
|
searchConversations(query: string): Promise<AXConversation[]>;
|
|
168
565
|
filterConversations(filters: AXConversationFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversation>>;
|
|
169
566
|
findEntityConversations(entityType: string, entityId: string): Promise<AXConversation[]>;
|
|
567
|
+
findHistoryConversations(scope: AXMMiniChatHistoryScope): Promise<AXConversation[]>;
|
|
170
568
|
getParticipants(conversationId: string): Promise<AXConversationParticipant[]>;
|
|
171
569
|
addParticipants(conversationId: string, userIds: string[]): Promise<AXConversation>;
|
|
172
570
|
/**
|
|
@@ -223,10 +621,13 @@ declare class AXMChatEntityConversationFocusHandler {
|
|
|
223
621
|
declare class AXMChatEntityConversationRoomQueryService {
|
|
224
622
|
private readonly entityService;
|
|
225
623
|
private readonly filterService;
|
|
624
|
+
private readonly session;
|
|
226
625
|
private readonly userApi;
|
|
227
626
|
private readonly roomData;
|
|
228
627
|
private readonly messageData;
|
|
229
628
|
loadChatRooms(): Promise<AXMConversationRoom[]>;
|
|
629
|
+
/** Every chat room the current user can open, including entity and surface mini chats. */
|
|
630
|
+
loadAccessibleChatRooms(): Promise<AXMConversationRoom[]>;
|
|
230
631
|
enrichRoom(room: AXMConversationRoom, options?: {
|
|
231
632
|
probeLastMessage?: boolean;
|
|
232
633
|
currentUserId?: string;
|
|
@@ -270,7 +671,9 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
270
671
|
private readonly userApi;
|
|
271
672
|
private readonly commandService;
|
|
272
673
|
private readonly assistResponse;
|
|
674
|
+
private readonly generationState;
|
|
273
675
|
private readonly conversationStore;
|
|
676
|
+
private readonly announcements;
|
|
274
677
|
private readonly realtime;
|
|
275
678
|
private readonly typingStopTimers;
|
|
276
679
|
private readonly typingEmitState;
|
|
@@ -278,6 +681,8 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
278
681
|
private static readonly TYPING_STOP_IDLE_MS;
|
|
279
682
|
private readonly messageData;
|
|
280
683
|
private readonly roomData;
|
|
684
|
+
private readonly receiptData;
|
|
685
|
+
private readonly cancelAssistOnComposerStop;
|
|
281
686
|
private requireConversationParticipant;
|
|
282
687
|
private loadConversationMessages;
|
|
283
688
|
private paginateMessages;
|
|
@@ -290,6 +695,8 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
290
695
|
editMessage(messageId: string, payload: AXConversationMessagePayload): Promise<AXConversationMessage>;
|
|
291
696
|
deleteMessage(messageId: string, _forEveryone?: boolean): Promise<void>;
|
|
292
697
|
deleteMessages(messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
698
|
+
private isAssistUserTextEdit;
|
|
699
|
+
private dropMessagesAfterAssistEdit;
|
|
293
700
|
retryAssistResponse(conversationId: string, messageId: string): Promise<AXConversationMessage>;
|
|
294
701
|
searchMessages(conversationId: string, filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
295
702
|
searchAllMessages(filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
@@ -299,7 +706,7 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
299
706
|
getAvailableReactions(): Promise<string[]>;
|
|
300
707
|
markAsRead(conversationId: string, messageIds: string[]): Promise<void>;
|
|
301
708
|
markAsUnread(conversationId: string): Promise<void>;
|
|
302
|
-
getReadReceipts(
|
|
709
|
+
getReadReceipts(messageId: string): Promise<AXConversationReadReceipt[]>;
|
|
303
710
|
markMessagesAsRead(messageIds: string[]): Promise<void>;
|
|
304
711
|
forwardMessage(_data: AXConversationMessageForwardData): Promise<AXConversationMessage[]>;
|
|
305
712
|
pinMessage(conversationId: string, messageId: string): Promise<void>;
|
|
@@ -313,13 +720,16 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
313
720
|
updateMessageMetadata(messageId: string, metadata: Record<string, unknown>): Promise<void>;
|
|
314
721
|
getMessageMetadata(messageId: string): Promise<Record<string, unknown>>;
|
|
315
722
|
updateMessageStatus(messageId: string, status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
|
|
316
|
-
getMessageDeliveryStatus(
|
|
723
|
+
getMessageDeliveryStatus(messageId: string): Promise<{
|
|
317
724
|
delivered: number;
|
|
318
725
|
read: number;
|
|
319
726
|
total: number;
|
|
320
727
|
}>;
|
|
321
728
|
bulkDeleteMessages(conversationId: string, messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
322
729
|
exportMessages(_conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
|
|
730
|
+
private markChannelPostsRead;
|
|
731
|
+
private resolveChannelPostId;
|
|
732
|
+
private queryPostReceipts;
|
|
323
733
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatEntityMessageApi, never>;
|
|
324
734
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatEntityMessageApi>;
|
|
325
735
|
}
|
|
@@ -369,6 +779,8 @@ declare class AXMChatEntityUserApi extends AXMChatUserApi {
|
|
|
369
779
|
updateProfile(updates: AXConversationUserProfileUpdate): Promise<AXConversationUser>;
|
|
370
780
|
uploadAvatar(_file: File): Promise<string>;
|
|
371
781
|
getUsers(pagination?: AXConversationPagination, filters?: AXConversationUserSearchFilters): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
782
|
+
/** Tenant-scoped directory size (includes the current user). */
|
|
783
|
+
countDirectoryUsers(): Promise<number>;
|
|
372
784
|
searchUsers(query: string): Promise<AXConversationParticipant[]>;
|
|
373
785
|
getUserById(userId: string): Promise<AXConversationParticipant>;
|
|
374
786
|
getUsersByIds(userIds: string[]): Promise<AXConversationParticipant[]>;
|
|
@@ -404,6 +816,10 @@ declare const AXM_CHAT_SIDEBAR_ACTION_PROVIDER: InjectionToken<AXMChatSidebarAct
|
|
|
404
816
|
|
|
405
817
|
/** True when the conversation is an assist / AI bot chat. */
|
|
406
818
|
declare function axmIsAssistBotConversation(conversation: AXConversation): boolean;
|
|
819
|
+
/** Inbox (`/chat/`) lists only global chats: no entity, record, or surface such as form designer. */
|
|
820
|
+
declare function axmExcludeEntityChatConversations(conversations: AXConversation[]): AXConversation[];
|
|
821
|
+
/** Wraps a sidebar tab so only global chats stay on the main chat list. */
|
|
822
|
+
declare function axmInboxConversationTab(tab: AXConversationTab): AXConversationTab;
|
|
407
823
|
/** Sidebar tab for AI assist conversations (`type: 'bot'` or assist metadata). */
|
|
408
824
|
declare const AXM_CONVERSATION_TAB_BOT: AXConversationTab;
|
|
409
825
|
|
|
@@ -450,6 +866,121 @@ interface AXMAssistConversationSnapshotLite {
|
|
|
450
866
|
modelId?: string | null;
|
|
451
867
|
}
|
|
452
868
|
|
|
869
|
+
/** Row shown in Conversation “Chat with AI” pickers (catalog assist). */
|
|
870
|
+
interface AXMChatAiTargetRow {
|
|
871
|
+
id: string;
|
|
872
|
+
name: string;
|
|
873
|
+
title: AXPMultiLanguageString | string;
|
|
874
|
+
description?: AXPMultiLanguageString | string;
|
|
875
|
+
professionImageUrl?: string;
|
|
876
|
+
}
|
|
877
|
+
/** Synthetic bot participant id for assist chats. */
|
|
878
|
+
declare function axmChatAiPeerParticipantId(catalogId: string): string;
|
|
879
|
+
/** Conversation metadata for starting an AI chat from a picker row. */
|
|
880
|
+
declare function axmBuildAiChatConversationMetadata(row: AXMChatAiTargetRow, assistSnapshot?: AXMAssistConversationSnapshotLite): Record<string, unknown>;
|
|
881
|
+
/** Loads assist rows for Conversation AI chat pickers. */
|
|
882
|
+
declare function axmLoadChatAiTargets(entityRegistry: AXPEntityDefinitionRegistryService): Promise<AXMChatAiTargetRow[]>;
|
|
883
|
+
/** Resolves ML or plain string for search/display. */
|
|
884
|
+
declare function axmResolveChatAiTargetText(resolveMl: (value: AXPMultiLanguageString) => string | undefined, value: AXPMultiLanguageString | string | undefined): string;
|
|
885
|
+
declare function axmChatAiTargetDisplayName(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string;
|
|
886
|
+
declare function axmChatAiTargetDisplayDescription(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string | undefined;
|
|
887
|
+
declare function axmChatAiTargetAvatarUrl(row: AXMChatAiTargetRow): string | null;
|
|
888
|
+
/** Fallback i18n key for rows with no catalog description. */
|
|
889
|
+
declare function axmChatAiTargetShortcutDescriptionKey(): string;
|
|
890
|
+
/** Same filter as {@link AXMChatWithAssistDialogComponent} target list search. */
|
|
891
|
+
declare function axmFilterChatAiTargets(resolveMl: (value: AXPMultiLanguageString) => string | undefined, rows: AXMChatAiTargetRow[], query: string): AXMChatAiTargetRow[];
|
|
892
|
+
|
|
893
|
+
type AXMChatEmptyAssistCreatedHandler = (conversationId: string) => void | Promise<void>;
|
|
894
|
+
type AXMChatEmptyAssistContinue = 'none' | 'send' | 'attach';
|
|
895
|
+
interface AXMChatEmptyAssistSessionBind {
|
|
896
|
+
selectedAssistId?: string;
|
|
897
|
+
rows?: readonly AXMChatAiTargetRow[];
|
|
898
|
+
entityId?: string;
|
|
899
|
+
entityType?: string;
|
|
900
|
+
launchContext?: AXMContextualAssistContext;
|
|
901
|
+
assistSelection?: AXMMiniChatAssistSelection;
|
|
902
|
+
}
|
|
903
|
+
/**
|
|
904
|
+
* Shared new-chat assist selection for the empty-state welcome UI and the real
|
|
905
|
+
* {@link AXConversationComposerComponent}. Creates the assist room on first send/attach
|
|
906
|
+
* so the library composer can upload files.
|
|
907
|
+
*/
|
|
908
|
+
declare class AXMChatEmptyAssistSessionService {
|
|
909
|
+
private readonly injector;
|
|
910
|
+
private readonly conversationService;
|
|
911
|
+
private readonly composerService;
|
|
912
|
+
private readonly entityChatService;
|
|
913
|
+
private readonly pageContextChips;
|
|
914
|
+
private readonly translationService;
|
|
915
|
+
private readonly toastService;
|
|
916
|
+
private get conversationApi();
|
|
917
|
+
private get assistCatalog();
|
|
918
|
+
readonly rows: _angular_core.WritableSignal<AXMChatAiTargetRow[]>;
|
|
919
|
+
readonly selectedAssistId: _angular_core.WritableSignal<string | undefined>;
|
|
920
|
+
readonly entityId: _angular_core.WritableSignal<string | undefined>;
|
|
921
|
+
readonly entityType: _angular_core.WritableSignal<string | undefined>;
|
|
922
|
+
readonly launchContext: _angular_core.WritableSignal<AXMContextualAssistContext | undefined>;
|
|
923
|
+
readonly assistSelection: _angular_core.WritableSignal<AXMMiniChatAssistSelection>;
|
|
924
|
+
readonly assistPickerOpen: _angular_core.WritableSignal<boolean>;
|
|
925
|
+
private ensurePromise;
|
|
926
|
+
bind(input: AXMChatEmptyAssistSessionBind): void;
|
|
927
|
+
setSelectedAssistId(assistId: string | undefined): void;
|
|
928
|
+
openAssistPicker(): void;
|
|
929
|
+
closeAssistPicker(): void;
|
|
930
|
+
/**
|
|
931
|
+
* Creates the assist room only when the empty-state lookalike composer actually sends,
|
|
932
|
+
* then uploads any local files and delivers the first message.
|
|
933
|
+
*/
|
|
934
|
+
sendWelcome(text: string, files: File[], onCreated?: AXMChatEmptyAssistCreatedHandler): Promise<string | null>;
|
|
935
|
+
/**
|
|
936
|
+
* Creates and selects an assist conversation when the composer has no active room,
|
|
937
|
+
* restoring any in-progress draft so send/attach can continue on the real composer.
|
|
938
|
+
*/
|
|
939
|
+
ensureConversationPreservingDraft(onCreated?: AXMChatEmptyAssistCreatedHandler, continueWith?: AXMChatEmptyAssistContinue): Promise<string | null>;
|
|
940
|
+
private ensureConversationPreservingDraftCore;
|
|
941
|
+
private sendWelcomeCore;
|
|
942
|
+
private waitUntilAttachmentsSettled;
|
|
943
|
+
private sendRestoredDraft;
|
|
944
|
+
private createConversation;
|
|
945
|
+
private createAssistConversation;
|
|
946
|
+
private resolveEntityChatRef;
|
|
947
|
+
private launchMetadata;
|
|
948
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatEmptyAssistSessionService, never>;
|
|
949
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatEmptyAssistSessionService>;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Compact assist list opened from the composer sparkles action on a new chat.
|
|
954
|
+
*/
|
|
955
|
+
declare class AXMChatComposerAssistPickerComponent {
|
|
956
|
+
readonly session: AXMChatEmptyAssistSessionService;
|
|
957
|
+
private readonly translationService;
|
|
958
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any> | undefined>;
|
|
959
|
+
assistLabel(title: AXPMultiLanguageString | string | undefined, fallback: string): string;
|
|
960
|
+
select(assistId: string): void;
|
|
961
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatComposerAssistPickerComponent, never>;
|
|
962
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatComposerAssistPickerComponent, "axm-chat-composer-assist-picker", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* Creates the assist conversation before the library composer sends or attaches files.
|
|
967
|
+
* {@link AXConversationComposerComponent} no-ops both paths when no room is selected.
|
|
968
|
+
*/
|
|
969
|
+
declare class AXMChatComposerEnsureAssistConversationDirective {
|
|
970
|
+
private readonly hostRef;
|
|
971
|
+
private readonly conversationService;
|
|
972
|
+
private readonly composerService;
|
|
973
|
+
private readonly session;
|
|
974
|
+
private readonly destroyRef;
|
|
975
|
+
readonly conversationCreated: _angular_core.InputSignal<((conversationId: string) => void | Promise<void> | undefined) | undefined>;
|
|
976
|
+
constructor();
|
|
977
|
+
private onCaptureClick;
|
|
978
|
+
private onCaptureKeydown;
|
|
979
|
+
private shouldEnsureConversation;
|
|
980
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatComposerEnsureAssistConversationDirective, never>;
|
|
981
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXMChatComposerEnsureAssistConversationDirective, "ax-conversation-composer[axmEnsureAssistConversation]", never, { "conversationCreated": { "alias": "axmAssistConversationCreated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
982
|
+
}
|
|
983
|
+
|
|
453
984
|
/**
|
|
454
985
|
* Assist suggestion chips (starter prompts and engine {@code followUp} segments).
|
|
455
986
|
* Each item runs its platform command via {@link AXPCommandService}.
|
|
@@ -458,24 +989,31 @@ declare class AXMAssistSuggestionChipsComponent {
|
|
|
458
989
|
readonly items: _angular_core.InputSignal<AXPAiChatFollowUpItemLite[]>;
|
|
459
990
|
/** Tighter chip layout for mini-chat and other narrow panels. */
|
|
460
991
|
readonly compact: _angular_core.InputSignal<boolean>;
|
|
461
|
-
/**
|
|
992
|
+
/**
|
|
993
|
+
* When true, sends starter-prompt chips via the local {@link AXConversationService}
|
|
994
|
+
* instead of routing to the chat app. Follow-up chips also send in-place when this
|
|
995
|
+
* service already has an active conversation (header mini-chat overlay).
|
|
996
|
+
*/
|
|
462
997
|
readonly sendInPlace: _angular_core.InputSignal<boolean>;
|
|
463
998
|
/** Disables all chips (e.g. parent composer is loading or sending). */
|
|
464
999
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
465
1000
|
/** Emits when an in-place send creates a new conversation (mini chat empty state). */
|
|
466
1001
|
readonly conversationCreated: _angular_core.OutputEmitterRef<string>;
|
|
467
1002
|
protected readonly normalizedItems: _angular_core.Signal<AXPAiChatFollowUpItemLite[]>;
|
|
1003
|
+
protected readonly chipIcons: _angular_core.Signal<string[]>;
|
|
468
1004
|
private readonly busy;
|
|
469
1005
|
protected readonly isInteractionBlocked: _angular_core.Signal<boolean>;
|
|
470
1006
|
private readonly commandService;
|
|
471
1007
|
private readonly conversationService;
|
|
472
1008
|
private readonly conversationApi;
|
|
473
1009
|
private readonly entityChatService;
|
|
1010
|
+
private readonly pageContextChips;
|
|
474
1011
|
private readonly assistCatalog;
|
|
475
1012
|
private readonly translationService;
|
|
476
1013
|
private readonly layoutTheme;
|
|
477
1014
|
protected onChipClick(item: AXPAiChatFollowUpItemLite): Promise<void>;
|
|
478
1015
|
protected resolveChipLabel(item: AXPAiChatFollowUpItemLite): string;
|
|
1016
|
+
private shouldSendAssistMessageInPlace;
|
|
479
1017
|
private isSendAssistChatMessageCommand;
|
|
480
1018
|
private resolveItemText;
|
|
481
1019
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMAssistSuggestionChipsComponent, never>;
|
|
@@ -495,7 +1033,11 @@ interface AXMAssistStarterPromptChipOptions {
|
|
|
495
1033
|
/** Entity reference so a chip-created conversation stays bound to its entity (mini chat). */
|
|
496
1034
|
entityId?: string;
|
|
497
1035
|
entityType?: string;
|
|
1036
|
+
/** Merged into room metadata when a chip creates a new conversation. */
|
|
1037
|
+
launchContext?: AXMContextualAssistContext;
|
|
498
1038
|
}
|
|
1039
|
+
/** Picks a chip icon from the prompt text; skips icons already used in the same list. */
|
|
1040
|
+
declare function axmAssistSuggestionIconForLabel(label: string, index?: number, taken?: ReadonlySet<string>): string;
|
|
499
1041
|
/**
|
|
500
1042
|
* Resolves a follow-up chip command for Conversation assist.
|
|
501
1043
|
* AI follow-up output may use invalid `Registry:*` placeholders; those map to
|
|
@@ -526,6 +1068,8 @@ interface AXMSendAssistChatMessageOptions {
|
|
|
526
1068
|
navigate?: boolean;
|
|
527
1069
|
entityId?: string;
|
|
528
1070
|
entityType?: string;
|
|
1071
|
+
/** Merged into room metadata only when this send creates a new conversation. */
|
|
1072
|
+
launchContext?: AXMContextualAssistContext;
|
|
529
1073
|
}
|
|
530
1074
|
|
|
531
1075
|
/**
|
|
@@ -537,6 +1081,8 @@ declare function axmReadAssistAiTranscript(metadata: unknown): AXPAiChatMessage[
|
|
|
537
1081
|
/** Raw engine transcript (chronological), without debug UI reordering. */
|
|
538
1082
|
declare function axmReadAssistAiTranscriptRaw(metadata: unknown): AXPAiChatMessage[];
|
|
539
1083
|
declare function axmAssistWidgetNodeFromUnknown(content: unknown, depth?: number): AXPWidgetNode | null;
|
|
1084
|
+
/** Widget trees the chat layout renderer can host (not Form Template designer shells). */
|
|
1085
|
+
declare function axmChatRenderableAssistWidgetNode(content: unknown): AXPWidgetNode | null;
|
|
540
1086
|
/** Stable identity for widget nodes so embedded JSON vs structured `node` segments dedupe despite key order. */
|
|
541
1087
|
declare function axmAssistWidgetNodeDedupeKey(content: unknown): string;
|
|
542
1088
|
declare function axmSyntheticEmbedMessage(parent: AXConversationMessage, suffix: string, partial: Pick<AXConversationMessage, 'type' | 'payload'>): AXConversationMessage;
|
|
@@ -592,7 +1138,9 @@ type AxmAssistUserVisibleItem = {
|
|
|
592
1138
|
kind: 'followUp';
|
|
593
1139
|
items: AXPAiChatFollowUpItem[];
|
|
594
1140
|
};
|
|
595
|
-
declare function axmAssistUserVisibleItemsForLine(line: AXPAiChatMessage
|
|
1141
|
+
declare function axmAssistUserVisibleItemsForLine(line: AXPAiChatMessage, options?: {
|
|
1142
|
+
hideWidgetNodes?: boolean;
|
|
1143
|
+
}): AxmAssistUserVisibleItem[];
|
|
596
1144
|
/** Parses a raw {@code followUp} segment for UI (normalizes chip commands). */
|
|
597
1145
|
declare function axmAssistFollowUpItemsFromUnknown(raw: unknown): AXPAiChatFollowUpItem[];
|
|
598
1146
|
|
|
@@ -642,6 +1190,8 @@ declare function axmReadReplyToUserMessageId(metadata: unknown): string | undefi
|
|
|
642
1190
|
declare function axmReadAssistResponseError(metadata: unknown): string | undefined;
|
|
643
1191
|
declare function axmIsAssistRetryableStatus(status: AxmAssistResponseStatus): boolean;
|
|
644
1192
|
declare function axmIsAssistStreamingStatus(status: AxmAssistResponseStatus): boolean;
|
|
1193
|
+
type AxmAssistFollowUpStatus = 'preparing' | 'ready' | 'skipped';
|
|
1194
|
+
declare function axmReadAssistFollowUpStatus(metadata: unknown): AxmAssistFollowUpStatus | undefined;
|
|
645
1195
|
declare function axmIsAssistTerminalStatus(status: AxmAssistResponseStatus): boolean;
|
|
646
1196
|
/** Finalize metadata persisted when a run completes (even if status lags). */
|
|
647
1197
|
declare function axmAssistHasFinalizeMetadata(metadata: unknown): boolean;
|
|
@@ -686,30 +1236,6 @@ declare function axmCoerceTimestampMs(value: unknown): number;
|
|
|
686
1236
|
declare function axmCoerceDate(value: unknown): Date;
|
|
687
1237
|
declare function axmSortMessagesNewestFirst(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
688
1238
|
|
|
689
|
-
/** Row shown in Conversation “Chat with AI” pickers (catalog assist). */
|
|
690
|
-
interface AXMChatAiTargetRow {
|
|
691
|
-
id: string;
|
|
692
|
-
name: string;
|
|
693
|
-
title: AXPMultiLanguageString | string;
|
|
694
|
-
description?: AXPMultiLanguageString | string;
|
|
695
|
-
professionImageUrl?: string;
|
|
696
|
-
}
|
|
697
|
-
/** Synthetic bot participant id for assist chats. */
|
|
698
|
-
declare function axmChatAiPeerParticipantId(catalogId: string): string;
|
|
699
|
-
/** Conversation metadata for starting an AI chat from a picker row. */
|
|
700
|
-
declare function axmBuildAiChatConversationMetadata(row: AXMChatAiTargetRow, assistSnapshot?: AXMAssistConversationSnapshotLite): Record<string, unknown>;
|
|
701
|
-
/** Loads assist rows for Conversation AI chat pickers. */
|
|
702
|
-
declare function axmLoadChatAiTargets(entityRegistry: AXPEntityDefinitionRegistryService): Promise<AXMChatAiTargetRow[]>;
|
|
703
|
-
/** Resolves ML or plain string for search/display. */
|
|
704
|
-
declare function axmResolveChatAiTargetText(resolveMl: (value: AXPMultiLanguageString) => string | undefined, value: AXPMultiLanguageString | string | undefined): string;
|
|
705
|
-
declare function axmChatAiTargetDisplayName(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string;
|
|
706
|
-
declare function axmChatAiTargetDisplayDescription(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string | undefined;
|
|
707
|
-
declare function axmChatAiTargetAvatarUrl(row: AXMChatAiTargetRow): string | null;
|
|
708
|
-
/** Fallback i18n key for rows with no catalog description. */
|
|
709
|
-
declare function axmChatAiTargetShortcutDescriptionKey(): string;
|
|
710
|
-
/** Same filter as {@link AXMChatWithAssistDialogComponent} target list search. */
|
|
711
|
-
declare function axmFilterChatAiTargets(resolveMl: (value: AXPMultiLanguageString) => string | undefined, rows: AXMChatAiTargetRow[], query: string): AXMChatAiTargetRow[];
|
|
712
|
-
|
|
713
1239
|
/** Builds a sidebar/header title from the first user message (heuristic fallback). */
|
|
714
1240
|
declare function axmBuildAutoTitleFromUserText(raw: string): string | null;
|
|
715
1241
|
/** Bot/assist list rows often show the assist peer `name` — keep it in sync with room title. */
|
|
@@ -717,7 +1243,9 @@ declare function axmSyncAssistPeerDisplayName<T extends Pick<AXConversation, 'ti
|
|
|
717
1243
|
declare function axmRoomWithAssistPeerDisplayName(room: AXMConversationRoom): AXMConversationRoom;
|
|
718
1244
|
|
|
719
1245
|
interface AXMConversationAssistResponsePort {
|
|
720
|
-
handleAfterUserMessage(conversationId: string, userMessageId: string, command: AXConversationSendMessageCommand, currentUserId: string
|
|
1246
|
+
handleAfterUserMessage(conversationId: string, userMessageId: string, command: AXConversationSendMessageCommand, currentUserId: string, options?: {
|
|
1247
|
+
skipAssistSync?: boolean;
|
|
1248
|
+
}): Promise<void>;
|
|
721
1249
|
retryAssistResponse(conversationId: string, messageId: string): Promise<AXConversationMessage>;
|
|
722
1250
|
reconcileStaleAssistPlaceholders(conversationId?: string): Promise<void>;
|
|
723
1251
|
/** True when the conversation has assist rows still marked streaming (cache or entity). */
|
|
@@ -726,6 +1254,8 @@ interface AXMConversationAssistResponsePort {
|
|
|
726
1254
|
getLiveMessage(messageId: string): AXConversationMessage | null;
|
|
727
1255
|
/** Merges assist in-memory cache over persisted messages (mock `conversationSharedStorage.messages` parity). */
|
|
728
1256
|
mergeLiveConversationMessages(conversationId: string, persisted: AXConversationMessage[]): AXConversationMessage[];
|
|
1257
|
+
/** Drops in-memory assist rows (e.g. after the user edited an earlier turn). */
|
|
1258
|
+
forgetLiveMessages(messageIds: string[]): void;
|
|
729
1259
|
/** Aligns composer Stop / spinner with assist streaming for the focused conversation. */
|
|
730
1260
|
syncComposerGenerationForFocus(conversationId: string | null): Promise<void>;
|
|
731
1261
|
/** Cancels in-flight assist generation (composer Stop). Aborts server AI + SSE stream updates. */
|
|
@@ -992,13 +1522,14 @@ declare class AXMCommentManagementService {
|
|
|
992
1522
|
private formatComment;
|
|
993
1523
|
private buildCommentTree;
|
|
994
1524
|
private formatThread;
|
|
995
|
-
createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;
|
|
996
|
-
getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;
|
|
997
|
-
|
|
998
|
-
|
|
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<{
|
|
999
1530
|
title: string;
|
|
1000
1531
|
}>): Promise<AXMCommentThread>;
|
|
1001
|
-
deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean>;
|
|
1532
|
+
deleteThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<boolean>;
|
|
1002
1533
|
addComment(threadId: string, content: string, parentCommentId?: string, contentType?: string, userId?: string): Promise<AXMComment>;
|
|
1003
1534
|
getComments(threadId: string, nested: boolean): Promise<AXMComment[]>;
|
|
1004
1535
|
getComment(commentId: string): Promise<AXMComment>;
|
|
@@ -1120,13 +1651,13 @@ declare class AXMCommentComponent implements OnInit {
|
|
|
1120
1651
|
declare function axmExtractTextFromPayload(payload: AXMessagePayload | undefined): string;
|
|
1121
1652
|
|
|
1122
1653
|
declare abstract class AXMCommentService {
|
|
1123
|
-
abstract createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;
|
|
1124
|
-
abstract getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;
|
|
1125
|
-
abstract listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]>;
|
|
1126
|
-
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<{
|
|
1127
1658
|
title: string;
|
|
1128
1659
|
}>): Promise<AXMCommentThread>;
|
|
1129
|
-
abstract deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean>;
|
|
1660
|
+
abstract deleteThread(entityRef: AXMCommentEntityData$1, topic: string): Promise<boolean>;
|
|
1130
1661
|
abstract addComment(threadId: string, content: string, parentCommentId?: string, contentType?: string, userId?: string): Promise<AXMComment>;
|
|
1131
1662
|
abstract getComments(threadId: string, nested: boolean): Promise<AXMComment[]>;
|
|
1132
1663
|
abstract getComment(commentId: string): Promise<AXMComment>;
|
|
@@ -1146,9 +1677,10 @@ declare class AXMCommentServiceImpl {
|
|
|
1146
1677
|
private readonly messageService;
|
|
1147
1678
|
private readonly filterService;
|
|
1148
1679
|
private readonly translationService;
|
|
1149
|
-
createThread(creatorUser: AXPUserReference, entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMConversationRoom>;
|
|
1150
|
-
getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom | null>;
|
|
1151
|
-
|
|
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[]>;
|
|
1152
1684
|
updateThread(threadId: string, data: Partial<{
|
|
1153
1685
|
title: string;
|
|
1154
1686
|
}>): Promise<AXMConversationRoom>;
|
|
@@ -1263,31 +1795,6 @@ declare class AXMCommentWidgetViewComponent extends AXPValueWidgetComponent<AXPE
|
|
|
1263
1795
|
|
|
1264
1796
|
declare const AXPCommentWidget: AXPWidgetConfig;
|
|
1265
1797
|
|
|
1266
|
-
/** Entity reference an entity-scoped chat is bound to (stored in conversation metadata). */
|
|
1267
|
-
interface AXMEntityChatRef {
|
|
1268
|
-
entityId: string;
|
|
1269
|
-
entityType: string;
|
|
1270
|
-
}
|
|
1271
|
-
/**
|
|
1272
|
-
* Conversation metadata for an entity-scoped assist chat.
|
|
1273
|
-
* Keeps `assistId` so the existing assist reply pipeline still answers in entity chats.
|
|
1274
|
-
*/
|
|
1275
|
-
declare function axmBuildEntityChatConversationMetadata(args: {
|
|
1276
|
-
entityId: string;
|
|
1277
|
-
entityType: string;
|
|
1278
|
-
assistId: string;
|
|
1279
|
-
}): Record<string, unknown>;
|
|
1280
|
-
/**
|
|
1281
|
-
* Resolves the entity reference from conversation metadata.
|
|
1282
|
-
* `AXConversationService.createConversation` may nest the UI object, so values
|
|
1283
|
-
* are also probed at `metadata.metadata.*`.
|
|
1284
|
-
*/
|
|
1285
|
-
declare function axmExtractEntityRefFromMetadata(metadata: Record<string, unknown> | undefined): AXMEntityChatRef | undefined;
|
|
1286
|
-
/** True when the conversation is bound to an entity (has both entity id and type). */
|
|
1287
|
-
declare function axmConversationIsEntityChat(metadata: Record<string, unknown> | undefined): boolean;
|
|
1288
|
-
/** True when conversation metadata targets the given entity reference. */
|
|
1289
|
-
declare function axmConversationMatchesEntity(metadata: Record<string, unknown> | undefined, ref: AXMEntityChatRef): boolean;
|
|
1290
|
-
|
|
1291
1798
|
/** Arguments accepted by `AXConversationService.createConversation`, prebuilt for an entity chat. */
|
|
1292
1799
|
interface AXMEntityChatCreateData {
|
|
1293
1800
|
participantIds: string[];
|
|
@@ -1320,13 +1827,19 @@ declare class AXMEntityChatService {
|
|
|
1320
1827
|
private get conversationApi();
|
|
1321
1828
|
/** Returns every conversation bound to the given entity reference. */
|
|
1322
1829
|
findEntityConversations(ref: AXMEntityChatRef): Promise<AXConversation[]>;
|
|
1323
|
-
/**
|
|
1324
|
-
|
|
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[]>;
|
|
1832
|
+
/**
|
|
1833
|
+
* Creates a new entity-scoped assist conversation and selects it.
|
|
1834
|
+
* Must go through {@link AXConversationService.createConversation} so the open mini-chat
|
|
1835
|
+
* instance owns the thread; the inbox tab filter hides entity rooms from `/chat/`.
|
|
1836
|
+
*/
|
|
1837
|
+
createEntityChat(ref: AXMEntityChatRef, assistId?: string, extraMetadata?: Record<string, unknown>): Promise<AXConversation>;
|
|
1325
1838
|
/**
|
|
1326
1839
|
* Builds the `createConversation` payload for a new entity assist chat.
|
|
1327
1840
|
* Uses `assistId` when provided, otherwise the tenant default assist.
|
|
1328
1841
|
*/
|
|
1329
|
-
buildEntityChatCreateData(ref: AXMEntityChatRef, assistId?: string): Promise<AXMEntityChatCreateData>;
|
|
1842
|
+
buildEntityChatCreateData(ref: AXMEntityChatRef, assistId?: string, extraMetadata?: Record<string, unknown>): Promise<AXMEntityChatCreateData>;
|
|
1330
1843
|
/** Resolves the assist catalog row to chat with (explicit id → tenant default → first row). */
|
|
1331
1844
|
private resolveAssistRow;
|
|
1332
1845
|
private resolveDefaultAssistId;
|
|
@@ -1339,97 +1852,40 @@ declare class AXMEntityChatService {
|
|
|
1339
1852
|
* Compact scrollable list of inbox AI-assist chats (non-entity bot / assist conversations).
|
|
1340
1853
|
*/
|
|
1341
1854
|
declare class AXMMiniChatInboxHistoryComponent implements OnInit {
|
|
1342
|
-
private readonly
|
|
1855
|
+
private readonly entityChatService;
|
|
1343
1856
|
private readonly conversationFilter;
|
|
1857
|
+
private readonly realtimeBus;
|
|
1858
|
+
private readonly destroyRef;
|
|
1859
|
+
/** Which chats to list. Defaults to global (no entity and no surface). */
|
|
1860
|
+
readonly scope: _angular_core.InputSignal<AXMMiniChatHistoryScope>;
|
|
1344
1861
|
/** Emits when the user picks a conversation from the list. */
|
|
1345
1862
|
readonly conversationSelected: _angular_core.OutputEmitterRef<string>;
|
|
1346
|
-
/** Emits when the user starts a new chat from the empty state. */
|
|
1347
|
-
readonly newChatRequested: _angular_core.OutputEmitterRef<void>;
|
|
1348
1863
|
/** Emits whether the loaded history contains at least one conversation. */
|
|
1349
1864
|
readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
|
|
1350
1865
|
readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
|
|
1351
1866
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
1867
|
+
private refreshGeneration;
|
|
1868
|
+
constructor();
|
|
1352
1869
|
ngOnInit(): void;
|
|
1353
|
-
/** Reloads
|
|
1354
|
-
refresh(): Promise<void>;
|
|
1870
|
+
/** Reloads conversations for the current history scope. */
|
|
1871
|
+
refresh(scope?: AXMMiniChatHistoryScope): Promise<void>;
|
|
1872
|
+
private bindRealtimeHistory;
|
|
1873
|
+
private matchesInbox;
|
|
1355
1874
|
protected resolveListAvatar(conversation: AXConversation): {
|
|
1356
1875
|
title: string;
|
|
1357
1876
|
avatar?: string;
|
|
1358
1877
|
icon?: string;
|
|
1359
1878
|
};
|
|
1360
1879
|
protected onSelect(conversationId: string): void;
|
|
1361
|
-
protected onNewChat(): void;
|
|
1362
1880
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatInboxHistoryComponent, never>;
|
|
1363
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxHistoryComponent, "axm-mini-chat-inbox-history", 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>;
|
|
1364
1882
|
}
|
|
1365
1883
|
|
|
1366
1884
|
type AXMMiniChatInboxConversationFilter = (conversation: AXConversation) => boolean;
|
|
1367
1885
|
declare const AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER: InjectionToken<AXMMiniChatInboxConversationFilter>;
|
|
1368
1886
|
|
|
1369
|
-
/** Anchor element for overlay positioning. */
|
|
1370
|
-
type AXMMiniChatPanelAnchor = Element | ElementRef<HTMLElement>;
|
|
1371
|
-
/**
|
|
1372
|
-
* Common placement aliases mapped to {@link AXPlacement}.
|
|
1373
|
-
* Examples: `top-right` → `top-end`, `bottom-left` → `bottom-start`.
|
|
1374
|
-
*/
|
|
1375
|
-
type AXMMiniChatPanelSide = AXPlacement | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
|
|
1376
|
-
/** Fixed viewport coordinates (px). Ignored when `anchor` is set. */
|
|
1377
|
-
interface AXMMiniChatPanelPosition {
|
|
1378
|
-
x: number;
|
|
1379
|
-
y: number;
|
|
1380
|
-
}
|
|
1381
|
-
/** Mini chat panel scope: entity-bound threads or main inbox (non-entity chats). */
|
|
1382
|
-
type AXMMiniChatPanelScope = 'entity' | 'inbox';
|
|
1383
|
-
/** Session key used for the global inbox mini chat (non-entity conversations). */
|
|
1384
|
-
declare const AXM_MINI_CHAT_INBOX_SESSION_KEY = "__inbox__";
|
|
1385
|
-
/** Persisted panel state for a mini chat session. */
|
|
1386
|
-
interface AXMMiniChatPanelSessionState {
|
|
1387
|
-
view: 'thread' | 'history';
|
|
1388
|
-
selectedChatId?: string;
|
|
1389
|
-
hasOpened: boolean;
|
|
1390
|
-
}
|
|
1391
|
-
/** Options passed to {@link AXMMiniChatPanelService.open}. */
|
|
1392
|
-
interface AXMMiniChatPanelOpenOptions {
|
|
1393
|
-
/** Default: `entity`. Use `inbox` for regular (non-entity) chats shown in the main chat sidebar. */
|
|
1394
|
-
scope?: AXMMiniChatPanelScope;
|
|
1395
|
-
entityId?: string;
|
|
1396
|
-
entityType?: string;
|
|
1397
|
-
assistId?: string;
|
|
1398
|
-
title?: string;
|
|
1399
|
-
showInfoBar?: boolean;
|
|
1400
|
-
showComposer?: boolean;
|
|
1401
|
-
/** Fixed viewport position (px). Ignored when `anchor` is set. */
|
|
1402
|
-
position?: AXMMiniChatPanelPosition;
|
|
1403
|
-
/** Anchor element for popover placement. */
|
|
1404
|
-
anchor?: AXMMiniChatPanelAnchor;
|
|
1405
|
-
/** Placement relative to anchor. Default: `top-end` when anchored. */
|
|
1406
|
-
placement?: AXMMiniChatPanelSide;
|
|
1407
|
-
offsetX?: number;
|
|
1408
|
-
offsetY?: number;
|
|
1409
|
-
autoFlip?: boolean;
|
|
1410
|
-
/** When true, always opens a fresh conversation thread. */
|
|
1411
|
-
forceNewChat?: boolean;
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
/**
|
|
1415
|
-
* Host for inbox mini chat with an isolated {@link AXConversationService} so the header
|
|
1416
|
-
* slot does not change the main chat page selection while the user is on the chat route.
|
|
1417
|
-
*/
|
|
1418
|
-
declare class AXMMiniChatInboxPanelHostComponent {
|
|
1419
|
-
readonly title: _angular_core.InputSignal<string>;
|
|
1420
|
-
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1421
|
-
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1422
|
-
readonly requestClose: _angular_core.InputSignal<() => void>;
|
|
1423
|
-
readonly initialView: _angular_core.InputSignal<"thread" | "history">;
|
|
1424
|
-
readonly initialConversationId: _angular_core.InputSignal<string | undefined>;
|
|
1425
|
-
readonly startWithNewChat: _angular_core.InputSignal<boolean>;
|
|
1426
|
-
readonly onSessionChange: _angular_core.InputSignal<((state: Pick<AXMMiniChatPanelSessionState, "view" | "selectedChatId">) => void) | undefined>;
|
|
1427
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatInboxPanelHostComponent, never>;
|
|
1428
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxPanelHostComponent, "axm-mini-chat-inbox-panel-host", never, { "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; }; "initialView": { "alias": "initialView"; "required": false; "isSignal": true; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; "isSignal": true; }; "startWithNewChat": { "alias": "startWithNewChat"; "required": false; "isSignal": true; }; "onSessionChange": { "alias": "onSessionChange"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1429
|
-
}
|
|
1430
|
-
|
|
1431
1887
|
/**
|
|
1432
|
-
* Root header slot that toggles the inbox mini chat overlay (AI-assist conversations
|
|
1888
|
+
* Root header slot that toggles the shared inbox mini chat overlay (AI-assist conversations).
|
|
1433
1889
|
*/
|
|
1434
1890
|
declare class AXMMiniChatHeaderSlotComponent {
|
|
1435
1891
|
private readonly panelService;
|
|
@@ -1450,6 +1906,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1450
1906
|
sideMenuWidth: _angular_core.Signal<number>;
|
|
1451
1907
|
sideMenuCompactWidth: _angular_core.Signal<number>;
|
|
1452
1908
|
menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
1909
|
+
menuToggleCyclesStyle: _angular_core.Signal<boolean>;
|
|
1453
1910
|
menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
|
|
1454
1911
|
menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
|
|
1455
1912
|
headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
|
|
@@ -1463,6 +1920,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1463
1920
|
overlayTaskCount: _angular_core.Signal<number>;
|
|
1464
1921
|
isNavigationLoading: _angular_core.Signal<boolean>;
|
|
1465
1922
|
isMenuHorizontal: _angular_core.Signal<boolean>;
|
|
1923
|
+
menuToggleCyclesStyleEnabled: _angular_core.Signal<boolean>;
|
|
1466
1924
|
effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
1467
1925
|
sideMenuDrawerWidth: _angular_core.Signal<number>;
|
|
1468
1926
|
menuDarkEnabled: _angular_core.Signal<boolean>;
|
|
@@ -1477,6 +1935,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1477
1935
|
setSideMenuWidth: (width: number) => void;
|
|
1478
1936
|
setSideMenuCompactWidth: (width: number) => void;
|
|
1479
1937
|
setSideMenuDrawerWidth: (width: number) => void;
|
|
1938
|
+
setMenuVerticalMode: (mode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode) => void;
|
|
1480
1939
|
toggleSideMenu: () => void;
|
|
1481
1940
|
setNavigationLoading: (value: boolean, delay?: number) => void;
|
|
1482
1941
|
setOverlayLoading: (value: boolean, delay?: number) => void;
|
|
@@ -1499,6 +1958,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1499
1958
|
sideMenuWidth: number;
|
|
1500
1959
|
sideMenuCompactWidth: number;
|
|
1501
1960
|
menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
|
|
1961
|
+
menuToggleCyclesStyle: boolean;
|
|
1502
1962
|
menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
|
|
1503
1963
|
menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
|
|
1504
1964
|
headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
|
|
@@ -1511,83 +1971,139 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1511
1971
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatHeaderSlotComponent, "axm-mini-chat-header-slot", never, {}, {}, never, never, true, never>;
|
|
1512
1972
|
}
|
|
1513
1973
|
|
|
1974
|
+
/**
|
|
1975
|
+
* Page-header Ask AI control for entity list/detail pages.
|
|
1976
|
+
* Opens the same {@link AXMMiniChatPanelService} overlay as the root header slot.
|
|
1977
|
+
*/
|
|
1978
|
+
declare class AXMMiniChatPageActionComponent {
|
|
1979
|
+
private readonly panelService;
|
|
1980
|
+
private readonly pageContext;
|
|
1981
|
+
private readonly route;
|
|
1982
|
+
private readonly router;
|
|
1983
|
+
protected readonly device: AXPDeviceService;
|
|
1984
|
+
private readonly url;
|
|
1985
|
+
private readonly buttonRef;
|
|
1986
|
+
protected readonly visible: _angular_core.Signal<boolean>;
|
|
1987
|
+
protected onToggleClick(): void;
|
|
1988
|
+
private resolveEntityChatRef;
|
|
1989
|
+
private readEntityRoute;
|
|
1990
|
+
private collectRouteParams;
|
|
1991
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPageActionComponent, never>;
|
|
1992
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPageActionComponent, "axm-mini-chat-page-action", never, {}, {}, never, never, true, never>;
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1514
1995
|
/**
|
|
1515
1996
|
* Scrollable list of entity-scoped conversations for the mini chat panel.
|
|
1516
1997
|
* Loads chats via {@link AXMEntityChatService.findEntityConversations}.
|
|
1517
1998
|
*/
|
|
1518
1999
|
declare class AXMMiniChatHistoryComponent implements OnInit {
|
|
1519
2000
|
private readonly entityChatService;
|
|
2001
|
+
private readonly realtimeBus;
|
|
2002
|
+
private readonly destroyRef;
|
|
1520
2003
|
readonly entityId: _angular_core.InputSignal<string>;
|
|
1521
2004
|
readonly entityType: _angular_core.InputSignal<string>;
|
|
1522
2005
|
/** Emits when the user picks a conversation from the list. */
|
|
1523
2006
|
readonly conversationSelected: _angular_core.OutputEmitterRef<string>;
|
|
1524
|
-
/** Emits when the user starts a new chat from the empty state. */
|
|
1525
|
-
readonly newChatRequested: _angular_core.OutputEmitterRef<void>;
|
|
1526
2007
|
/** Emits whether the loaded history contains at least one conversation. */
|
|
1527
2008
|
readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
|
|
1528
2009
|
readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
|
|
1529
2010
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
2011
|
+
private refreshGeneration;
|
|
2012
|
+
constructor();
|
|
1530
2013
|
ngOnInit(): void;
|
|
1531
2014
|
/** Reloads the entity conversation list (call when the history panel becomes visible). */
|
|
1532
|
-
refresh(): Promise<void>;
|
|
2015
|
+
refresh(entityId?: string, entityType?: string): Promise<void>;
|
|
2016
|
+
private bindRealtimeHistory;
|
|
1533
2017
|
protected resolveListAvatar(conversation: AXConversation): {
|
|
1534
2018
|
title: string;
|
|
1535
2019
|
avatar?: string;
|
|
1536
2020
|
icon?: string;
|
|
1537
2021
|
};
|
|
1538
2022
|
protected onSelect(conversationId: string): void;
|
|
1539
|
-
protected onNewChat(): void;
|
|
1540
2023
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatHistoryComponent, never>;
|
|
1541
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatHistoryComponent, "axm-mini-chat-history", never, { "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": true; "isSignal": true; }; }, { "conversationSelected": "conversationSelected"; "
|
|
2024
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatHistoryComponent, "axm-mini-chat-history", never, { "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": true; "isSignal": true; }; }, { "conversationSelected": "conversationSelected"; "hasConversationsChange": "hasConversationsChange"; }, never, never, true, never>;
|
|
1542
2025
|
}
|
|
1543
2026
|
|
|
2027
|
+
/** Inserts or replaces a conversation in a mini-chat history list, then re-sorts. */
|
|
2028
|
+
declare function axmUpsertMiniChatHistoryItem(items: AXConversation[], next: AXConversation, matches: (conversation: AXConversation) => boolean): AXConversation[];
|
|
2029
|
+
/** Removes a conversation from a mini-chat history list. */
|
|
2030
|
+
declare function axmRemoveMiniChatHistoryItem(items: AXConversation[], conversationId: string): AXConversation[];
|
|
2031
|
+
|
|
1544
2032
|
/**
|
|
1545
|
-
* Opens the
|
|
1546
|
-
*
|
|
2033
|
+
* Opens the shared mini chat window via {@link AXPopupService} (header inbox, entity FAB, contextual assist).
|
|
2034
|
+
* Uses the module {@link AXConversationService} so assist SSE patches stream live.
|
|
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.
|
|
2037
|
+
* Restores the last conversation per session on reopen; use {@link forceNewChat} for an explicit new thread.
|
|
1547
2038
|
*/
|
|
1548
2039
|
declare class AXMMiniChatPanelService {
|
|
1549
|
-
private readonly
|
|
2040
|
+
private readonly popupService;
|
|
2041
|
+
private readonly settingsService;
|
|
2042
|
+
private readonly document;
|
|
2043
|
+
private readonly translation;
|
|
1550
2044
|
private readonly conversationService;
|
|
1551
2045
|
private readonly conversationApi;
|
|
1552
|
-
private readonly
|
|
2046
|
+
private readonly focusService;
|
|
1553
2047
|
private readonly router;
|
|
1554
|
-
private
|
|
1555
|
-
private
|
|
1556
|
-
private
|
|
1557
|
-
private
|
|
1558
|
-
private
|
|
1559
|
-
/** Active conversation before the panel took over selection (restored on close). */
|
|
2048
|
+
private readonly routeHome;
|
|
2049
|
+
private windowApi;
|
|
2050
|
+
private closePromise;
|
|
2051
|
+
private windowGeneration;
|
|
2052
|
+
private anchorPlacementCleanup;
|
|
2053
|
+
/** Active conversation before the panel took over selection (entity scope; restored on close). */
|
|
1560
2054
|
private savedActiveConversationId;
|
|
2055
|
+
/** Root focus id before the panel opened (restored so assist/realtime keep the right thread). */
|
|
2056
|
+
private savedFocusedConversationId;
|
|
1561
2057
|
/** Per-entity session (view, selected conversation) restored when the panel reopens. */
|
|
1562
2058
|
private readonly sessions;
|
|
1563
|
-
|
|
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). */
|
|
1564
2068
|
readonly panelOpen: _angular_core.WritableSignal<boolean>;
|
|
1565
|
-
|
|
2069
|
+
constructor();
|
|
2070
|
+
/** True while the mini chat window is mounted (visible, minimized, or retained-hidden). */
|
|
1566
2071
|
isOpen(): boolean;
|
|
1567
|
-
/**
|
|
2072
|
+
/** True while the window is on screen. */
|
|
2073
|
+
isVisible(): boolean;
|
|
2074
|
+
/** Closes the window when it is open. */
|
|
1568
2075
|
close(): void;
|
|
1569
|
-
/**
|
|
2076
|
+
/** Hides a retained window. Destroys the window when retention is off. */
|
|
2077
|
+
dismiss(): void;
|
|
2078
|
+
/** Toggles the inbox mini chat window (regular non-entity conversations). */
|
|
1570
2079
|
toggleInbox(options?: Omit<AXMMiniChatPanelOpenOptions, 'scope' | 'entityId' | 'entityType'>): void;
|
|
1571
|
-
/**
|
|
2080
|
+
/**
|
|
2081
|
+
* Toggles the window: restores when minimized, closes when visible, opens when closed.
|
|
2082
|
+
*/
|
|
1572
2083
|
toggle(options: AXMMiniChatPanelOpenOptions): void;
|
|
1573
2084
|
/**
|
|
1574
|
-
* Opens the mini chat
|
|
2085
|
+
* Opens the mini chat window (replaces any existing window).
|
|
1575
2086
|
* Restores the last session for the entity unless {@link AXMMiniChatPanelOpenOptions.forceNewChat} is set.
|
|
1576
2087
|
*/
|
|
1577
2088
|
open(options: AXMMiniChatPanelOpenOptions): Promise<void>;
|
|
2089
|
+
private resolveWindowTitle;
|
|
2090
|
+
private buildSessionKey;
|
|
1578
2091
|
private buildEntityKey;
|
|
1579
|
-
|
|
1580
|
-
private
|
|
1581
|
-
private
|
|
1582
|
-
private
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
private
|
|
2092
|
+
/** List and record of the same entity are different chats. */
|
|
2093
|
+
private currentPageChatKey;
|
|
2094
|
+
private abandonOpenWindow;
|
|
2095
|
+
private onNavigation;
|
|
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;
|
|
1586
2103
|
private captureActiveConversation;
|
|
2104
|
+
private captureFocusedConversation;
|
|
2105
|
+
private restoreFocusedConversation;
|
|
1587
2106
|
private restoreActiveConversation;
|
|
1588
|
-
private resolveAnchorElement;
|
|
1589
|
-
private normalizePlacement;
|
|
1590
|
-
private applyFixedPosition;
|
|
1591
2107
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPanelService, never>;
|
|
1592
2108
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMiniChatPanelService>;
|
|
1593
2109
|
}
|
|
@@ -1604,7 +2120,7 @@ declare class AXMMiniChatLauncherComponent {
|
|
|
1604
2120
|
readonly assistId: _angular_core.InputSignal<string | undefined>;
|
|
1605
2121
|
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1606
2122
|
/** Placement relative to the FAB when no custom {@link position} is set. Default: `top-end`. */
|
|
1607
|
-
readonly placement: _angular_core.InputSignal<"
|
|
2123
|
+
readonly placement: _angular_core.InputSignal<"top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end">;
|
|
1608
2124
|
readonly offsetX: _angular_core.InputSignal<number>;
|
|
1609
2125
|
readonly offsetY: _angular_core.InputSignal<number>;
|
|
1610
2126
|
private readonly fabRef;
|
|
@@ -1614,63 +2130,227 @@ declare class AXMMiniChatLauncherComponent {
|
|
|
1614
2130
|
}
|
|
1615
2131
|
|
|
1616
2132
|
/**
|
|
1617
|
-
*
|
|
2133
|
+
* Live entity/view/record chips for the header mini chat.
|
|
2134
|
+
* Chips stay editable until the first message pins them on the conversation.
|
|
2135
|
+
*/
|
|
2136
|
+
declare class AXMMiniChatPageContextChipsService {
|
|
2137
|
+
private readonly pageContext;
|
|
2138
|
+
private readonly router;
|
|
2139
|
+
private readonly entityRegistry;
|
|
2140
|
+
private readonly entityService;
|
|
2141
|
+
private readonly translation;
|
|
2142
|
+
readonly chips: _angular_core.WritableSignal<AXMMiniChatContextChip[]>;
|
|
2143
|
+
readonly locked: _angular_core.WritableSignal<boolean>;
|
|
2144
|
+
readonly historyScope: _angular_core.WritableSignal<AXMMiniChatHistoryScope>;
|
|
2145
|
+
private capturing;
|
|
2146
|
+
private pinnedId;
|
|
2147
|
+
private readonly dismissed;
|
|
2148
|
+
private entityKey;
|
|
2149
|
+
private viewKey;
|
|
2150
|
+
private selectionKey;
|
|
2151
|
+
private draft;
|
|
2152
|
+
private detailSeq;
|
|
2153
|
+
private loadedDetailKey;
|
|
2154
|
+
private detailPending;
|
|
2155
|
+
private watchStop;
|
|
2156
|
+
/** Follows the current page until the panel is destroyed. */
|
|
2157
|
+
start(destroyRef: DestroyRef): void;
|
|
2158
|
+
stop(): void;
|
|
2159
|
+
/** Editable chips from the page the user is on now. */
|
|
2160
|
+
beginDraft(): void;
|
|
2161
|
+
/** Stops live updates while a saved conversation is opening. */
|
|
2162
|
+
pinPending(conversationId: string): void;
|
|
2163
|
+
/** Shows the chips stored on a conversation and keeps them readonly. */
|
|
2164
|
+
pin(conversationId: string, metadata: Record<string, unknown> | undefined): void;
|
|
2165
|
+
dismiss(chipId: string): void;
|
|
2166
|
+
/**
|
|
2167
|
+
* Context for the conversation created by the first mini-chat message.
|
|
2168
|
+
* Empty when the user removed every chip or the page is not an entity page.
|
|
2169
|
+
*/
|
|
2170
|
+
resolveDraftLaunchContext(): Promise<AXMContextualAssistContext | undefined>;
|
|
2171
|
+
private refreshLive;
|
|
2172
|
+
private draftFromList;
|
|
2173
|
+
private ensureDetailDraft;
|
|
2174
|
+
private fetchDetail;
|
|
2175
|
+
private applyDraft;
|
|
2176
|
+
private publishHistoryScope;
|
|
2177
|
+
private readDetailRoute;
|
|
2178
|
+
private readRecordTitle;
|
|
2179
|
+
private resolveText;
|
|
2180
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPageContextChipsService, never>;
|
|
2181
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMiniChatPageContextChipsService>;
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
/**
|
|
2185
|
+
* Mini chat panel: branded window chrome, context strip, thread, and history.
|
|
2186
|
+
* Hosted as a popup window (header / entity pages) or embedded in a page.
|
|
1618
2187
|
*/
|
|
1619
2188
|
declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
|
|
1620
2189
|
private readonly conversationService;
|
|
2190
|
+
private readonly composerService;
|
|
2191
|
+
private readonly fileDrop;
|
|
2192
|
+
private fileDragDepth;
|
|
1621
2193
|
private readonly conversationApi;
|
|
1622
|
-
private readonly
|
|
2194
|
+
private readonly pageContext;
|
|
2195
|
+
private readonly localeService;
|
|
2196
|
+
private readonly device;
|
|
1623
2197
|
private readonly destroyRef;
|
|
2198
|
+
protected readonly pageContextChips: AXMMiniChatPageContextChipsService;
|
|
2199
|
+
private readonly routeHome;
|
|
2200
|
+
private readonly localeProfile;
|
|
1624
2201
|
readonly scope: _angular_core.InputSignal<AXMMiniChatPanelScope>;
|
|
2202
|
+
readonly presentation: _angular_core.InputSignal<AXMMiniChatPanelPresentation>;
|
|
1625
2203
|
readonly entityId: _angular_core.InputSignal<string | undefined>;
|
|
1626
2204
|
readonly entityType: _angular_core.InputSignal<string | undefined>;
|
|
1627
2205
|
readonly assistId: _angular_core.InputSignal<string | undefined>;
|
|
1628
|
-
readonly
|
|
2206
|
+
readonly assistSelection: _angular_core.InputSignal<AXMMiniChatAssistSelection>;
|
|
2207
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1629
2208
|
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1630
2209
|
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1631
2210
|
readonly requestClose: _angular_core.InputSignal<() => void>;
|
|
2211
|
+
readonly requestMinimize: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2212
|
+
readonly requestMaximize: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2213
|
+
readonly requestRestore: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2214
|
+
readonly isMaximized: _angular_core.InputSignal<boolean>;
|
|
1632
2215
|
readonly initialView: _angular_core.InputSignal<"thread" | "history">;
|
|
1633
2216
|
readonly initialConversationId: _angular_core.InputSignal<string | undefined>;
|
|
1634
2217
|
readonly startWithNewChat: _angular_core.InputSignal<boolean>;
|
|
2218
|
+
readonly launchContext: _angular_core.InputSignal<AXMContextualAssistContext | undefined>;
|
|
1635
2219
|
readonly onSessionChange: _angular_core.InputSignal<((state: Pick<AXMMiniChatPanelSessionState, "view" | "selectedChatId">) => void) | undefined>;
|
|
1636
2220
|
protected readonly view: _angular_core.WritableSignal<"thread" | "history">;
|
|
1637
2221
|
protected readonly selectedChatId: _angular_core.WritableSignal<string | undefined>;
|
|
1638
|
-
protected readonly
|
|
1639
|
-
protected readonly
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
protected readonly
|
|
1644
|
-
|
|
1645
|
-
|
|
2222
|
+
protected readonly fileDragOver: _angular_core.WritableSignal<boolean>;
|
|
2223
|
+
protected readonly historyScope: _angular_core.Signal<AXMMiniChatHistoryScope>;
|
|
2224
|
+
protected readonly isEmbedded: _angular_core.Signal<boolean>;
|
|
2225
|
+
protected readonly isRtl: _angular_core.Signal<boolean>;
|
|
2226
|
+
protected readonly canDragWindow: _angular_core.Signal<boolean>;
|
|
2227
|
+
protected readonly canMinimize: _angular_core.Signal<boolean>;
|
|
2228
|
+
protected readonly canMaximize: _angular_core.Signal<boolean>;
|
|
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>;
|
|
2232
|
+
protected readonly isRecordAssist: _angular_core.Signal<boolean>;
|
|
2233
|
+
protected readonly workingInEntityTitle: _angular_core.Signal<string | null>;
|
|
2234
|
+
protected readonly workingInViewTitle: _angular_core.Signal<string | null>;
|
|
2235
|
+
protected readonly recordTitleLabel: _angular_core.Signal<string | null>;
|
|
2236
|
+
protected readonly recordEntityTitle: _angular_core.Signal<string | null>;
|
|
2237
|
+
protected readonly showContextBar: _angular_core.Signal<boolean>;
|
|
2238
|
+
protected readonly contextBarIcon: _angular_core.Signal<"fa-building" | "fa-table-list">;
|
|
1646
2239
|
ngOnInit(): void;
|
|
1647
2240
|
ngOnDestroy(): void;
|
|
1648
2241
|
protected closePanel(): void;
|
|
2242
|
+
protected minimizePanel(): void;
|
|
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>;
|
|
2249
|
+
protected backToThread(): void;
|
|
1649
2250
|
protected openHistory(): void;
|
|
1650
|
-
protected onHistoryHasConversationsChange(hasItems: boolean): void;
|
|
1651
2251
|
protected selectChat(conversationId: string): void;
|
|
1652
2252
|
protected onConversationOpened(conversationId: string): void;
|
|
1653
2253
|
protected startNewChat(): Promise<void>;
|
|
2254
|
+
protected chipIcon(kind: AXMMiniChatContextChipKind): string;
|
|
2255
|
+
protected dismissPageContextChip(chipId: string, event: Event): void;
|
|
2256
|
+
private bindPageContextChips;
|
|
2257
|
+
private pinPageContextConversation;
|
|
2258
|
+
private readRecordTitle;
|
|
2259
|
+
private canAcceptFileDrop;
|
|
2260
|
+
private isFileDrag;
|
|
2261
|
+
private resetFileDrag;
|
|
1654
2262
|
private syncSession;
|
|
1655
2263
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPanelComponent, never>;
|
|
1656
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPanelComponent, "axm-mini-chat-panel", never, { "scope": { "alias": "scope"; "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; }; "initialView": { "alias": "initialView"; "required": false; "isSignal": true; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; "isSignal": true; }; "startWithNewChat": { "alias": "startWithNewChat"; "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>;
|
|
1657
2265
|
}
|
|
1658
2266
|
|
|
1659
2267
|
/**
|
|
1660
|
-
*
|
|
1661
|
-
*
|
|
1662
|
-
|
|
2268
|
+
* Popup host for mini chat: custom chrome lives in {@link AXMMiniChatPanelComponent},
|
|
2269
|
+
* while this wrapper receives popup `data` and exposes minimize/maximize/close on the window.
|
|
2270
|
+
*/
|
|
2271
|
+
declare class AXMMiniChatPopupWindowComponent extends AXPopupComponentBase {
|
|
2272
|
+
private readonly destroyRef;
|
|
2273
|
+
private readonly hostElement;
|
|
2274
|
+
scope: AXMMiniChatPanelScope;
|
|
2275
|
+
entityId?: string;
|
|
2276
|
+
entityType?: string;
|
|
2277
|
+
assistId?: string;
|
|
2278
|
+
assistSelection: AXMMiniChatAssistSelection;
|
|
2279
|
+
panelTitle?: string;
|
|
2280
|
+
showInfoBar: boolean;
|
|
2281
|
+
showComposer: boolean;
|
|
2282
|
+
minimizable: boolean;
|
|
2283
|
+
retainOnClose: boolean;
|
|
2284
|
+
initialView: 'thread' | 'history';
|
|
2285
|
+
initialConversationId?: string;
|
|
2286
|
+
startWithNewChat: boolean;
|
|
2287
|
+
launchContext?: AXMContextualAssistContext;
|
|
2288
|
+
onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
|
|
2289
|
+
onVisibilityChange?: (visible: boolean) => void;
|
|
2290
|
+
registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
|
|
2291
|
+
protected readonly closeFn: () => void;
|
|
2292
|
+
protected readonly minimizeFn: () => void;
|
|
2293
|
+
protected readonly maximizeFn: () => void;
|
|
2294
|
+
protected readonly restoreFn: () => void;
|
|
2295
|
+
private readonly windowApi;
|
|
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;
|
|
2306
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPopupWindowComponent, never>;
|
|
2307
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPopupWindowComponent, "axm-mini-chat-popup-window", never, {}, {}, never, never, true, never>;
|
|
2308
|
+
}
|
|
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
|
+
|
|
2328
|
+
/**
|
|
2329
|
+
* Root-footer dock for minimized mini-chat windows (`mini-chat` dock name).
|
|
2330
|
+
*/
|
|
2331
|
+
declare class AXMMiniChatFooterDockComponent {
|
|
2332
|
+
protected readonly dockName = "mini-chat";
|
|
2333
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatFooterDockComponent, never>;
|
|
2334
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatFooterDockComponent, "axm-mini-chat-footer-dock", never, {}, {}, never, never, true, never>;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
/**
|
|
2338
|
+
* Compact, entity-scoped or inbox chat: renders a single conversation thread (message list)
|
|
2339
|
+
* with an optional info-bar and composer. Opens an existing chat by {@link chatId}, or starts
|
|
2340
|
+
* a new entity assist chat (created lazily on first send and tagged with `entityId` /
|
|
2341
|
+
* `entityType` in conversation metadata).
|
|
1663
2342
|
*
|
|
1664
|
-
*
|
|
1665
|
-
*
|
|
1666
|
-
* new one is coordinated by the host through {@link chatId} and {@link AXConversationService}.
|
|
2343
|
+
* Reports focus through {@link AXMChatConversationApi} so assist SSE and realtime message
|
|
2344
|
+
* patches reach this thread while the overlay is open.
|
|
1667
2345
|
*/
|
|
1668
2346
|
declare class AXMMiniChatComponent {
|
|
1669
2347
|
#private;
|
|
1670
2348
|
private readonly conversationService;
|
|
1671
2349
|
private readonly popupService;
|
|
1672
2350
|
private readonly conversationApi;
|
|
2351
|
+
private readonly assistResponse;
|
|
1673
2352
|
private readonly destroyRef;
|
|
2353
|
+
protected readonly appearanceSync: AXMConversationAppearanceSyncService;
|
|
1674
2354
|
/** Existing conversation id to open. When omitted (and no conversation is active), the new-chat composer is shown. */
|
|
1675
2355
|
readonly chatId: _angular_core.InputSignal<string | undefined>;
|
|
1676
2356
|
/** Entity reference the chat is (or will be) bound to; omitted for inbox (regular) chats. */
|
|
@@ -1678,6 +2358,10 @@ declare class AXMMiniChatComponent {
|
|
|
1678
2358
|
readonly entityType: _angular_core.InputSignal<string | undefined>;
|
|
1679
2359
|
/** Assist used as the bot peer when creating a new entity chat (falls back to the tenant default). */
|
|
1680
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>;
|
|
2363
|
+
/** Surface context for a new assist thread (entity-row assist chips and room metadata). */
|
|
2364
|
+
readonly launchContext: _angular_core.InputSignal<AXMContextualAssistContext | undefined>;
|
|
1681
2365
|
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1682
2366
|
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1683
2367
|
/** Emits the active conversation id when one is opened or newly created. */
|
|
@@ -1687,9 +2371,12 @@ declare class AXMMiniChatComponent {
|
|
|
1687
2371
|
/** Opens the conversation info panel when the info-bar title/avatar area is clicked. */
|
|
1688
2372
|
onInfoBarClick(): void;
|
|
1689
2373
|
/** New-chat composer created and selected a conversation; surface it to the host. */
|
|
2374
|
+
readonly onAssistConversationCreated: (conversationId: string) => void;
|
|
1690
2375
|
onConversationCreated(conversationId: string): void;
|
|
2376
|
+
/** Composer Stop — abort the in-flight assist stream for the active conversation. */
|
|
2377
|
+
onComposerGenerationCancelled(): void;
|
|
1691
2378
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatComponent, never>;
|
|
1692
|
-
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; }; "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>;
|
|
1693
2380
|
}
|
|
1694
2381
|
|
|
1695
2382
|
/** Fired after a user message is persisted — triggers assist, auto-reply, and realtime side effects. */
|
|
@@ -1711,5 +2398,5 @@ declare const CONVERSATION_START_DIRECT_CHAT_COMMAND = "Conversation:StartDirect
|
|
|
1711
2398
|
/** Opens an existing conversation in the chat app. */
|
|
1712
2399
|
declare const CONVERSATION_OPEN_CHAT_COMMAND = "Conversation:OpenChat";
|
|
1713
2400
|
|
|
1714
|
-
export { AXMAddReactionCommand, AXMAssistSuggestionChipsComponent, AXMChatComponent, AXMChatConversationApi, AXMChatEntityConversationApi, AXMChatEntityConversationFocusHandler, AXMChatEntityConversationRoomQueryService, AXMChatEntityMessageApi, AXMChatEntityRealtimeApi, AXMChatEntityUserApi, AXMChatMessageApi, AXMChatRealtimeApi, AXMChatUserApi, AXMCommentComponent, AXMCommentManagementService, AXMCommentPopupComponent, AXMCommentRealtimeService, AXMCommentRealtimeServiceImpl, AXMCommentService, AXMCommentServiceImpl, AXMCommentWidgetViewComponent, AXMConversationAssistBackgroundOperationHandler, AXMConversationEntityStoreService, AXMConversationFocusService, AXMConversationModule, AXMConversationRealtimeBus, AXMEntityChatService, AXMMiniChatComponent, AXMMiniChatHeaderSlotComponent, AXMMiniChatHistoryComponent, AXMMiniChatInboxHistoryComponent,
|
|
1715
|
-
export type { AXMAddReactionCommandInput, AXMAssistConversationSnapshotLite, AXMAssistDefaultResolverPort, AXMAssistStarterPromptChipOptions, AXMChatAiTargetRow, AXMChatAssistCatalogPort, AXMChatSidebarAction, AXMComment, AXMCommentEvent, AXMCommentEventType, AXMCommentThread, AXMConversationAssistResponsePort, AXMConversationRegularAutoReplyPort, AXMConversationServiceSessionAdapter, AXMEntityChatCreateData, AXMEntityChatRef, AXMMiniChatInboxConversationFilter, AXMMiniChatPanelAnchor, AXMMiniChatPanelOpenOptions, AXMMiniChatPanelPosition, AXMMiniChatPanelScope, AXMMiniChatPanelSessionState, AXMMiniChatPanelSide, AXMSendAssistChatMessageOptions, AXMShowCommentPopupCommandInput, AXMThreadEvent, AXMThreadEventType, AXPAiChatFollowUpCommandLite, AXPAiChatFollowUpItemLite, AXPAiChatMessageLite, AXPAiChatNodeOrFollowUpResponseLite, AXPAiChatTextResponseLite, AXPAiEffectiveAssistRowLite, 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 };
|