@acorex-platform/module-conversation-client 0.0.37 → 0.0.46
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-C8FR7Snp.mjs → acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DUR2oyfP.mjs} +10935 -9294
- package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DUR2oyfP.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-hVFQo07j.mjs → acorex-platform-module-conversation-client-after-message-sent.command-qTWATpgC.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-after-message-sent.command-hVFQo07j.mjs.map → acorex-platform-module-conversation-client-after-message-sent.command-qTWATpgC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-D6XrMTQm.mjs → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-DQWhOmBE.mjs} +8 -7
- package/fesm2022/{acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-D6XrMTQm.mjs.map → acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-DQWhOmBE.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-DyVepuaW.mjs +1756 -0
- package/fesm2022/acorex-platform-module-conversation-client-assist-message-renderer.component-DyVepuaW.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client-assist-tool-detail-popup.component-D8na_1QJ.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-D8na_1QJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-session-page.component-b84Na7R_.mjs → acorex-platform-module-conversation-client-chat-call-session-page.component-BeS4Duip.mjs} +747 -25
- package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-BeS4Duip.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-BTOtRRPY.mjs → acorex-platform-module-conversation-client-chat-call-start-popup.component-BbEhkLLh.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-conversation-client-chat-call-start-popup.component-BTOtRRPY.mjs.map → acorex-platform-module-conversation-client-chat-call-start-popup.component-BbEhkLLh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-CppNPfqe.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-CppNPfqe.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-BhSJiJY5.mjs → acorex-platform-module-conversation-client-comments-page.component-BxUz9jTX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-comments-page.component-BhSJiJY5.mjs.map → acorex-platform-module-conversation-client-comments-page.component-BxUz9jTX.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 +846 -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-D0rr0npJ.mjs → acorex-platform-module-conversation-client-mark-conversation-unread.command-juoWxu7I.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-mark-conversation-unread.command-D0rr0npJ.mjs.map → acorex-platform-module-conversation-client-mark-conversation-unread.command-juoWxu7I.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-Bbgp4ZfT.mjs → acorex-platform-module-conversation-client-open-chat.command-ridcdmj7.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-open-chat.command-Bbgp4ZfT.mjs.map → acorex-platform-module-conversation-client-open-chat.command-ridcdmj7.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BMZTab8j.mjs → acorex-platform-module-conversation-client-retry-assist-response.command-BsYxaH3g.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-conversation-client-retry-assist-response.command-BMZTab8j.mjs.map → acorex-platform-module-conversation-client-retry-assist-response.command-BsYxaH3g.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-conversation-client-sync-read-state.command-9G3Knrre.mjs → acorex-platform-module-conversation-client-sync-read-state.command-DsCyIdEk.mjs} +7 -2
- package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-DsCyIdEk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-conversation-client.mjs +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 +432 -2
- package/types/acorex-platform-module-conversation-client.d.ts +680 -161
- package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-C8FR7Snp.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-b84Na7R_.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-C5xS98oE.mjs +0 -472
- package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-panel.component-C5xS98oE.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-9G3Knrre.mjs.map +0 -1
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Provider, InjectionToken, Type, Signal, OnInit, ElementRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { Provider, InjectionToken, Type, Signal, OnInit, ElementRef, 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, AXReaction, AXMessagePayload, AXMReactionType } from '@acorex-platform/module-conversation-client/contracts';
|
|
10
|
+
import { Routes } from '@angular/router';
|
|
11
|
+
import { AXClickEvent, AXStyleLookType, AXPlacement } 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 { AXMConversationRoom, AXMConversationMessage, AXMCommentEntityData, AXReaction, AXMessagePayload, AXMReactionType } from '@acorex-platform/module-conversation-client/contracts';
|
|
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';
|
|
13
15
|
import { Observable } from 'rxjs';
|
|
14
|
-
import {
|
|
15
|
-
import { AXPAiChatResponse, AXPAiChatMessage, AXPAiChatFollowUpItem } from '@acorex-platform/module-ai-management-client';
|
|
16
|
+
import { AXMContextualAssistContext, AXMCommentEntityData as AXMCommentEntityData$1 } from '@acorex-platform/module-conversation-client/contracts';
|
|
16
17
|
import { AXPEntityDefinitionRegistryService, AXPEntityActionPlugin } from '@acorex-platform/framework-client/layout/entity';
|
|
18
|
+
import { AXPopupRef, AXPopupComponentBase } from '@acorex/components/popup';
|
|
19
|
+
import { AXPAiChatResponse, AXPAiChatMessage, AXPAiChatFollowUpItem } from '@acorex-platform/module-ai-management-client';
|
|
17
20
|
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
18
21
|
import { AXWysiwygContainerComponent } from '@acorex/components/wysiwyg';
|
|
19
22
|
import { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';
|
|
@@ -42,10 +45,129 @@ declare class AXMConversationAssistBackgroundOperationHandler extends AXPBackgro
|
|
|
42
45
|
}
|
|
43
46
|
declare const AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS: Provider[];
|
|
44
47
|
|
|
48
|
+
declare class AXMChannelFeedPage extends AXPPageLayoutBaseComponent {
|
|
49
|
+
private readonly queryService;
|
|
50
|
+
private readonly commandService;
|
|
51
|
+
private readonly tagService;
|
|
52
|
+
private readonly unreadBadge;
|
|
53
|
+
protected readonly loading: _angular_core.WritableSignal<boolean>;
|
|
54
|
+
protected readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
55
|
+
protected readonly loadFailed: _angular_core.WritableSignal<boolean>;
|
|
56
|
+
protected readonly items: _angular_core.WritableSignal<readonly AXMChannelFeedItem[]>;
|
|
57
|
+
protected readonly hasMore: _angular_core.WritableSignal<boolean>;
|
|
58
|
+
protected readonly filterDefinitions: _angular_core.WritableSignal<AXPFilterDefinition[]>;
|
|
59
|
+
protected readonly panelInitialFilters: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
60
|
+
protected readonly queryFiltersKey: _angular_core.WritableSignal<number>;
|
|
61
|
+
private readonly activeFilters;
|
|
62
|
+
private skip;
|
|
63
|
+
protected readonly skeletonPlaceholders: number[];
|
|
64
|
+
readonly hasActiveFilters: _angular_core.Signal<boolean>;
|
|
65
|
+
protected readonly visible: _angular_core.Signal<AXMChannelFeedItem[]>;
|
|
66
|
+
private readonly searchText;
|
|
67
|
+
private readonly isUnreadFilterActive;
|
|
68
|
+
private readonly isPinnedFilterActive;
|
|
69
|
+
private readonly tagFilter;
|
|
70
|
+
ngOnInit(): Promise<void>;
|
|
71
|
+
getPageTitle(): string;
|
|
72
|
+
getPageIcon(): string | null;
|
|
73
|
+
getPageDescription(): string;
|
|
74
|
+
getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
75
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
76
|
+
protected handleFiltersChanged(filters: AXPFilterQuery[]): void;
|
|
77
|
+
protected clearFilters(): void;
|
|
78
|
+
protected onItemSeen(id: string): void;
|
|
79
|
+
protected retry(): void;
|
|
80
|
+
protected onInfiniteScrollReached(): void;
|
|
81
|
+
protected emptyTitle(): string;
|
|
82
|
+
protected emptyDescription(): string;
|
|
83
|
+
private loadMore;
|
|
84
|
+
private loadFeed;
|
|
85
|
+
private markRead;
|
|
86
|
+
private loadFilterDefinitions;
|
|
87
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChannelFeedPage, never>;
|
|
88
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChannelFeedPage, "axm-channel-feed-page", never, {}, {}, never, never, true, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare const channelFeedPageRoutes: Routes;
|
|
92
|
+
|
|
93
|
+
type ChannelFeedItemChrome = 'card' | 'bubble';
|
|
94
|
+
type ChannelFeedTagView = {
|
|
95
|
+
title: AXPMultiLanguageString;
|
|
96
|
+
color: string;
|
|
97
|
+
trackKey: string;
|
|
98
|
+
};
|
|
99
|
+
declare class AXMChannelFeedItemComponent {
|
|
100
|
+
private readonly userAvatarService;
|
|
101
|
+
private readonly tagService;
|
|
102
|
+
private readonly commandService;
|
|
103
|
+
private readonly commentManagement;
|
|
104
|
+
private readonly translation;
|
|
105
|
+
private readonly host;
|
|
106
|
+
private readonly destroyRef;
|
|
107
|
+
private readonly injector;
|
|
108
|
+
item: _angular_core.InputSignal<AXMChannelFeedItem>;
|
|
109
|
+
/** `card` is the announcements page. `bubble` sits inside a conversation bubble. */
|
|
110
|
+
chrome: _angular_core.InputSignal<ChannelFeedItemChrome>;
|
|
111
|
+
itemSeen: _angular_core.OutputEmitterRef<string>;
|
|
112
|
+
private readonly bodyEl;
|
|
113
|
+
protected readonly expanded: _angular_core.WritableSignal<boolean>;
|
|
114
|
+
protected readonly authorName: _angular_core.WritableSignal<string>;
|
|
115
|
+
protected readonly canExpand: _angular_core.WritableSignal<boolean>;
|
|
116
|
+
protected readonly commentsBusy: _angular_core.WritableSignal<boolean>;
|
|
117
|
+
private readonly availableTags;
|
|
118
|
+
private readonly commentCountOverride;
|
|
119
|
+
private lastCommentPostId;
|
|
120
|
+
protected readonly isUnread: _angular_core.Signal<boolean>;
|
|
121
|
+
protected readonly gallery: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFileListItem[]>;
|
|
122
|
+
protected readonly attachments: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFileListItem[]>;
|
|
123
|
+
protected readonly publishedAt: _angular_core.Signal<Date | null>;
|
|
124
|
+
protected readonly eventStartsAt: _angular_core.Signal<Date | null>;
|
|
125
|
+
protected readonly hasEventLocation: _angular_core.Signal<boolean>;
|
|
126
|
+
protected readonly commentCount: _angular_core.Signal<number>;
|
|
127
|
+
protected readonly tags: _angular_core.Signal<ChannelFeedTagView[]>;
|
|
128
|
+
constructor();
|
|
129
|
+
protected toggleBody(event: Event): void;
|
|
130
|
+
protected openComments(event: AXClickEvent): void;
|
|
131
|
+
private showCommentsPopup;
|
|
132
|
+
private refreshCommentCount;
|
|
133
|
+
private updateCanExpand;
|
|
134
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChannelFeedItemComponent, never>;
|
|
135
|
+
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>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Bridges platform theme/locale into `@acorex/components/conversation`.
|
|
140
|
+
*
|
|
141
|
+
* Showcase chat calls `AXPlatform.switchLightMode()` / `AXLocaleService.setProfile()` directly,
|
|
142
|
+
* so wallpaper and `translateSync` labels update immediately. The platform shell instead
|
|
143
|
+
* toggles `ax-dark` via {@link AXPLayoutThemeService} and keeps the chat page OnPush —
|
|
144
|
+
* conversation computeds that depend on `AXPlatform.themeMode()` never re-run, and
|
|
145
|
+
* `@acorex:chat` JSON for the new locale is not preloaded until a full refresh.
|
|
146
|
+
*/
|
|
147
|
+
declare class AXMConversationAppearanceSyncService {
|
|
148
|
+
private readonly layoutTheme;
|
|
149
|
+
private readonly platform;
|
|
150
|
+
private readonly translation;
|
|
151
|
+
private readonly destroyRef;
|
|
152
|
+
private readonly revision;
|
|
153
|
+
/** Stable one-item list so `@for (key of viewKeys(); track key)` remounts conversation widgets. */
|
|
154
|
+
readonly viewKeys: _angular_core.Signal<number[]>;
|
|
155
|
+
constructor();
|
|
156
|
+
/** Ensures constructor effects are created at app start (called from the conversation startup task). */
|
|
157
|
+
start(): void;
|
|
158
|
+
private syncPlatformTheme;
|
|
159
|
+
private toAxThemeMode;
|
|
160
|
+
private preloadChatLocales;
|
|
161
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMConversationAppearanceSyncService, never>;
|
|
162
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMConversationAppearanceSyncService>;
|
|
163
|
+
}
|
|
164
|
+
|
|
45
165
|
declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
46
166
|
#private;
|
|
47
167
|
private readonly conversationService;
|
|
168
|
+
private readonly popupService;
|
|
48
169
|
private readonly chatConversationApi;
|
|
170
|
+
private readonly assistResponse;
|
|
49
171
|
private readonly miniChatPanelService;
|
|
50
172
|
private readonly activeCallSessions;
|
|
51
173
|
private readonly composerService;
|
|
@@ -57,6 +179,7 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
57
179
|
private readonly badgeService;
|
|
58
180
|
protected readonly deviceService: AXPDeviceService;
|
|
59
181
|
private readonly destroyRef;
|
|
182
|
+
protected readonly appearanceSync: AXMConversationAppearanceSyncService;
|
|
60
183
|
private readonly routeConversationId;
|
|
61
184
|
private readonly routerUrl;
|
|
62
185
|
ngOnInit(): Promise<void>;
|
|
@@ -64,7 +187,9 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
64
187
|
* Computed signal to check if there is an active conversation selected.
|
|
65
188
|
*/
|
|
66
189
|
readonly hasActiveConversation: _angular_core.Signal<boolean>;
|
|
190
|
+
readonly hidePageComposer: _angular_core.Signal<boolean>;
|
|
67
191
|
readonly showChatList: _angular_core.Signal<boolean>;
|
|
192
|
+
readonly isAnnouncementChannelActive: _angular_core.Signal<boolean>;
|
|
68
193
|
/**
|
|
69
194
|
* Unread messages in other chats (excludes the open conversation), for the mobile back control.
|
|
70
195
|
*/
|
|
@@ -74,13 +199,16 @@ declare class AXMChatComponent extends AXPPageLayoutBaseComponent {
|
|
|
74
199
|
* Navigates to the selected conversation route.
|
|
75
200
|
* @param conversationId - The ID of the selected conversation.
|
|
76
201
|
*/
|
|
77
|
-
|
|
202
|
+
readonly onAssistConversationCreated: (conversationId: string) => Promise<void>;
|
|
203
|
+
onConversationSelected(conversationId: string): Promise<void>;
|
|
78
204
|
/** Mobile back: return to the full-screen conversation list (no layout sidebar). */
|
|
79
205
|
openChatList(): void;
|
|
80
206
|
/**
|
|
81
207
|
* Opens the platform conversation info panel when the info-bar title/avatar area is clicked.
|
|
82
208
|
*/
|
|
83
209
|
onInfoBarClick(): void;
|
|
210
|
+
/** Composer Stop — abort the in-flight assist stream for the active conversation. */
|
|
211
|
+
onComposerGenerationCancelled(): void;
|
|
84
212
|
/**
|
|
85
213
|
* Handles Escape key from chat container.
|
|
86
214
|
* Replicates conversation source behavior by closing active conversation here.
|
|
@@ -135,6 +263,45 @@ declare abstract class AXMChatRealtimeApi extends AXConversationRealtimeApi {
|
|
|
135
263
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatRealtimeApi>;
|
|
136
264
|
}
|
|
137
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Ensures the tenant announcements channel exists and loads feed rows as chat messages.
|
|
268
|
+
*/
|
|
269
|
+
declare class AXMChatAnnouncementChannelService {
|
|
270
|
+
private readonly entityService;
|
|
271
|
+
private readonly filterService;
|
|
272
|
+
private readonly queryService;
|
|
273
|
+
private readonly session;
|
|
274
|
+
private readonly translation;
|
|
275
|
+
private readonly locale;
|
|
276
|
+
private readonly userApi;
|
|
277
|
+
private subscriberCountCache;
|
|
278
|
+
private unreadByRoomCache;
|
|
279
|
+
private readonly roomData;
|
|
280
|
+
private readonly feedMessageCache;
|
|
281
|
+
canViewBulletins(): boolean;
|
|
282
|
+
isAnnouncementChannel(value: {
|
|
283
|
+
name?: string | null;
|
|
284
|
+
metadata?: Record<string, unknown> | null;
|
|
285
|
+
} | null | undefined): boolean;
|
|
286
|
+
isChannelRoom(value: {
|
|
287
|
+
kind?: string | null;
|
|
288
|
+
type?: string | null;
|
|
289
|
+
name?: string | null;
|
|
290
|
+
metadata?: Record<string, unknown> | null;
|
|
291
|
+
} | null | undefined): boolean;
|
|
292
|
+
ensureRoom(): Promise<AXMConversationRoom | null>;
|
|
293
|
+
findRoom(): Promise<AXMConversationRoom | null>;
|
|
294
|
+
decorateConversation(conversation: AXConversation): Promise<AXConversation>;
|
|
295
|
+
private resolveUnreadByRoom;
|
|
296
|
+
private resolveSubscriberCount;
|
|
297
|
+
getCachedFeedMessage(messageId: string): AXConversationMessage | null;
|
|
298
|
+
getFeedMessages(conversationId: string, pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
299
|
+
searchFeedMessages(conversationId: string, query: string | undefined, pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
300
|
+
private createRoom;
|
|
301
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatAnnouncementChannelService, never>;
|
|
302
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatAnnouncementChannelService>;
|
|
303
|
+
}
|
|
304
|
+
|
|
138
305
|
/**
|
|
139
306
|
* Entity-backed implementation of {@link AXMChatConversationApi} using Conversation.room.
|
|
140
307
|
*/
|
|
@@ -147,6 +314,8 @@ declare class AXMChatEntityConversationApi extends AXMChatConversationApi {
|
|
|
147
314
|
private readonly realtimeBus;
|
|
148
315
|
private readonly focusHandler;
|
|
149
316
|
private readonly roomQuery;
|
|
317
|
+
private readonly announcements;
|
|
318
|
+
private readonly commandService;
|
|
150
319
|
private readonly roomData;
|
|
151
320
|
reportFocusedConversation(conversationId: string | null): void;
|
|
152
321
|
private publishConversationPatch;
|
|
@@ -222,6 +391,7 @@ declare class AXMChatEntityConversationFocusHandler {
|
|
|
222
391
|
declare class AXMChatEntityConversationRoomQueryService {
|
|
223
392
|
private readonly entityService;
|
|
224
393
|
private readonly filterService;
|
|
394
|
+
private readonly session;
|
|
225
395
|
private readonly userApi;
|
|
226
396
|
private readonly roomData;
|
|
227
397
|
private readonly messageData;
|
|
@@ -269,7 +439,9 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
269
439
|
private readonly userApi;
|
|
270
440
|
private readonly commandService;
|
|
271
441
|
private readonly assistResponse;
|
|
442
|
+
private readonly generationState;
|
|
272
443
|
private readonly conversationStore;
|
|
444
|
+
private readonly announcements;
|
|
273
445
|
private readonly realtime;
|
|
274
446
|
private readonly typingStopTimers;
|
|
275
447
|
private readonly typingEmitState;
|
|
@@ -277,6 +449,8 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
277
449
|
private static readonly TYPING_STOP_IDLE_MS;
|
|
278
450
|
private readonly messageData;
|
|
279
451
|
private readonly roomData;
|
|
452
|
+
private readonly receiptData;
|
|
453
|
+
private readonly cancelAssistOnComposerStop;
|
|
280
454
|
private requireConversationParticipant;
|
|
281
455
|
private loadConversationMessages;
|
|
282
456
|
private paginateMessages;
|
|
@@ -289,6 +463,8 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
289
463
|
editMessage(messageId: string, payload: AXConversationMessagePayload): Promise<AXConversationMessage>;
|
|
290
464
|
deleteMessage(messageId: string, _forEveryone?: boolean): Promise<void>;
|
|
291
465
|
deleteMessages(messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
466
|
+
private isAssistUserTextEdit;
|
|
467
|
+
private dropMessagesAfterAssistEdit;
|
|
292
468
|
retryAssistResponse(conversationId: string, messageId: string): Promise<AXConversationMessage>;
|
|
293
469
|
searchMessages(conversationId: string, filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
294
470
|
searchAllMessages(filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
@@ -298,7 +474,7 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
298
474
|
getAvailableReactions(): Promise<string[]>;
|
|
299
475
|
markAsRead(conversationId: string, messageIds: string[]): Promise<void>;
|
|
300
476
|
markAsUnread(conversationId: string): Promise<void>;
|
|
301
|
-
getReadReceipts(
|
|
477
|
+
getReadReceipts(messageId: string): Promise<AXConversationReadReceipt[]>;
|
|
302
478
|
markMessagesAsRead(messageIds: string[]): Promise<void>;
|
|
303
479
|
forwardMessage(_data: AXConversationMessageForwardData): Promise<AXConversationMessage[]>;
|
|
304
480
|
pinMessage(conversationId: string, messageId: string): Promise<void>;
|
|
@@ -312,13 +488,16 @@ declare class AXMChatEntityMessageApi extends AXMChatMessageApi {
|
|
|
312
488
|
updateMessageMetadata(messageId: string, metadata: Record<string, unknown>): Promise<void>;
|
|
313
489
|
getMessageMetadata(messageId: string): Promise<Record<string, unknown>>;
|
|
314
490
|
updateMessageStatus(messageId: string, status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
|
|
315
|
-
getMessageDeliveryStatus(
|
|
491
|
+
getMessageDeliveryStatus(messageId: string): Promise<{
|
|
316
492
|
delivered: number;
|
|
317
493
|
read: number;
|
|
318
494
|
total: number;
|
|
319
495
|
}>;
|
|
320
496
|
bulkDeleteMessages(conversationId: string, messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
321
497
|
exportMessages(_conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
|
|
498
|
+
private markChannelPostsRead;
|
|
499
|
+
private resolveChannelPostId;
|
|
500
|
+
private queryPostReceipts;
|
|
322
501
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatEntityMessageApi, never>;
|
|
323
502
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatEntityMessageApi>;
|
|
324
503
|
}
|
|
@@ -368,6 +547,8 @@ declare class AXMChatEntityUserApi extends AXMChatUserApi {
|
|
|
368
547
|
updateProfile(updates: AXConversationUserProfileUpdate): Promise<AXConversationUser>;
|
|
369
548
|
uploadAvatar(_file: File): Promise<string>;
|
|
370
549
|
getUsers(pagination?: AXConversationPagination, filters?: AXConversationUserSearchFilters): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
550
|
+
/** Tenant-scoped directory size (includes the current user). */
|
|
551
|
+
countDirectoryUsers(): Promise<number>;
|
|
371
552
|
searchUsers(query: string): Promise<AXConversationParticipant[]>;
|
|
372
553
|
getUserById(userId: string): Promise<AXConversationParticipant>;
|
|
373
554
|
getUsersByIds(userIds: string[]): Promise<AXConversationParticipant[]>;
|
|
@@ -403,6 +584,10 @@ declare const AXM_CHAT_SIDEBAR_ACTION_PROVIDER: InjectionToken<AXMChatSidebarAct
|
|
|
403
584
|
|
|
404
585
|
/** True when the conversation is an assist / AI bot chat. */
|
|
405
586
|
declare function axmIsAssistBotConversation(conversation: AXConversation): boolean;
|
|
587
|
+
/** Inbox (`/chat/`) must not list entity-record mini chats. */
|
|
588
|
+
declare function axmExcludeEntityChatConversations(conversations: AXConversation[]): AXConversation[];
|
|
589
|
+
/** Wraps a sidebar tab so entity-scoped chats stay off the main chat list. */
|
|
590
|
+
declare function axmInboxConversationTab(tab: AXConversationTab): AXConversationTab;
|
|
406
591
|
/** Sidebar tab for AI assist conversations (`type: 'bot'` or assist metadata). */
|
|
407
592
|
declare const AXM_CONVERSATION_TAB_BOT: AXConversationTab;
|
|
408
593
|
|
|
@@ -449,6 +634,119 @@ interface AXMAssistConversationSnapshotLite {
|
|
|
449
634
|
modelId?: string | null;
|
|
450
635
|
}
|
|
451
636
|
|
|
637
|
+
/** Row shown in Conversation “Chat with AI” pickers (catalog assist). */
|
|
638
|
+
interface AXMChatAiTargetRow {
|
|
639
|
+
id: string;
|
|
640
|
+
name: string;
|
|
641
|
+
title: AXPMultiLanguageString | string;
|
|
642
|
+
description?: AXPMultiLanguageString | string;
|
|
643
|
+
professionImageUrl?: string;
|
|
644
|
+
}
|
|
645
|
+
/** Synthetic bot participant id for assist chats. */
|
|
646
|
+
declare function axmChatAiPeerParticipantId(catalogId: string): string;
|
|
647
|
+
/** Conversation metadata for starting an AI chat from a picker row. */
|
|
648
|
+
declare function axmBuildAiChatConversationMetadata(row: AXMChatAiTargetRow, assistSnapshot?: AXMAssistConversationSnapshotLite): Record<string, unknown>;
|
|
649
|
+
/** Loads assist rows for Conversation AI chat pickers. */
|
|
650
|
+
declare function axmLoadChatAiTargets(entityRegistry: AXPEntityDefinitionRegistryService): Promise<AXMChatAiTargetRow[]>;
|
|
651
|
+
/** Resolves ML or plain string for search/display. */
|
|
652
|
+
declare function axmResolveChatAiTargetText(resolveMl: (value: AXPMultiLanguageString) => string | undefined, value: AXPMultiLanguageString | string | undefined): string;
|
|
653
|
+
declare function axmChatAiTargetDisplayName(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string;
|
|
654
|
+
declare function axmChatAiTargetDisplayDescription(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string | undefined;
|
|
655
|
+
declare function axmChatAiTargetAvatarUrl(row: AXMChatAiTargetRow): string | null;
|
|
656
|
+
/** Fallback i18n key for rows with no catalog description. */
|
|
657
|
+
declare function axmChatAiTargetShortcutDescriptionKey(): string;
|
|
658
|
+
/** Same filter as {@link AXMChatWithAssistDialogComponent} target list search. */
|
|
659
|
+
declare function axmFilterChatAiTargets(resolveMl: (value: AXPMultiLanguageString) => string | undefined, rows: AXMChatAiTargetRow[], query: string): AXMChatAiTargetRow[];
|
|
660
|
+
|
|
661
|
+
type AXMChatEmptyAssistCreatedHandler = (conversationId: string) => void | Promise<void>;
|
|
662
|
+
type AXMChatEmptyAssistContinue = 'none' | 'send' | 'attach';
|
|
663
|
+
interface AXMChatEmptyAssistSessionBind {
|
|
664
|
+
selectedAssistId?: string;
|
|
665
|
+
rows?: readonly AXMChatAiTargetRow[];
|
|
666
|
+
entityId?: string;
|
|
667
|
+
entityType?: string;
|
|
668
|
+
launchContext?: AXMContextualAssistContext;
|
|
669
|
+
}
|
|
670
|
+
/**
|
|
671
|
+
* Shared new-chat assist selection for the empty-state welcome UI and the real
|
|
672
|
+
* {@link AXConversationComposerComponent}. Creates the assist room on first send/attach
|
|
673
|
+
* so the library composer can upload files.
|
|
674
|
+
*/
|
|
675
|
+
declare class AXMChatEmptyAssistSessionService {
|
|
676
|
+
private readonly injector;
|
|
677
|
+
private readonly conversationService;
|
|
678
|
+
private readonly composerService;
|
|
679
|
+
private readonly entityChatService;
|
|
680
|
+
private readonly pageContextChips;
|
|
681
|
+
private readonly translationService;
|
|
682
|
+
private readonly toastService;
|
|
683
|
+
private get conversationApi();
|
|
684
|
+
private get assistCatalog();
|
|
685
|
+
readonly rows: _angular_core.WritableSignal<AXMChatAiTargetRow[]>;
|
|
686
|
+
readonly selectedAssistId: _angular_core.WritableSignal<string | undefined>;
|
|
687
|
+
readonly entityId: _angular_core.WritableSignal<string | undefined>;
|
|
688
|
+
readonly entityType: _angular_core.WritableSignal<string | undefined>;
|
|
689
|
+
readonly launchContext: _angular_core.WritableSignal<AXMContextualAssistContext | undefined>;
|
|
690
|
+
readonly assistPickerOpen: _angular_core.WritableSignal<boolean>;
|
|
691
|
+
private ensurePromise;
|
|
692
|
+
bind(input: AXMChatEmptyAssistSessionBind): void;
|
|
693
|
+
setSelectedAssistId(assistId: string | undefined): void;
|
|
694
|
+
openAssistPicker(): void;
|
|
695
|
+
closeAssistPicker(): void;
|
|
696
|
+
/**
|
|
697
|
+
* Creates the assist room only when the empty-state lookalike composer actually sends,
|
|
698
|
+
* then uploads any local files and delivers the first message.
|
|
699
|
+
*/
|
|
700
|
+
sendWelcome(text: string, files: File[], onCreated?: AXMChatEmptyAssistCreatedHandler): Promise<string | null>;
|
|
701
|
+
/**
|
|
702
|
+
* Creates and selects an assist conversation when the composer has no active room,
|
|
703
|
+
* restoring any in-progress draft so send/attach can continue on the real composer.
|
|
704
|
+
*/
|
|
705
|
+
ensureConversationPreservingDraft(onCreated?: AXMChatEmptyAssistCreatedHandler, continueWith?: AXMChatEmptyAssistContinue): Promise<string | null>;
|
|
706
|
+
private ensureConversationPreservingDraftCore;
|
|
707
|
+
private sendWelcomeCore;
|
|
708
|
+
private waitUntilAttachmentsSettled;
|
|
709
|
+
private sendRestoredDraft;
|
|
710
|
+
private createConversation;
|
|
711
|
+
private createAssistConversation;
|
|
712
|
+
private resolveEntityChatRef;
|
|
713
|
+
private launchMetadata;
|
|
714
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatEmptyAssistSessionService, never>;
|
|
715
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatEmptyAssistSessionService>;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Compact assist list opened from the composer sparkles action on a new chat.
|
|
720
|
+
*/
|
|
721
|
+
declare class AXMChatComposerAssistPickerComponent {
|
|
722
|
+
readonly session: AXMChatEmptyAssistSessionService;
|
|
723
|
+
private readonly translationService;
|
|
724
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any> | undefined>;
|
|
725
|
+
assistLabel(title: AXPMultiLanguageString | string | undefined, fallback: string): string;
|
|
726
|
+
select(assistId: string): void;
|
|
727
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatComposerAssistPickerComponent, never>;
|
|
728
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatComposerAssistPickerComponent, "axm-chat-composer-assist-picker", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Creates the assist conversation before the library composer sends or attaches files.
|
|
733
|
+
* {@link AXConversationComposerComponent} no-ops both paths when no room is selected.
|
|
734
|
+
*/
|
|
735
|
+
declare class AXMChatComposerEnsureAssistConversationDirective {
|
|
736
|
+
private readonly hostRef;
|
|
737
|
+
private readonly conversationService;
|
|
738
|
+
private readonly composerService;
|
|
739
|
+
private readonly session;
|
|
740
|
+
private readonly destroyRef;
|
|
741
|
+
readonly conversationCreated: _angular_core.InputSignal<((conversationId: string) => void | Promise<void> | undefined) | undefined>;
|
|
742
|
+
constructor();
|
|
743
|
+
private onCaptureClick;
|
|
744
|
+
private onCaptureKeydown;
|
|
745
|
+
private shouldEnsureConversation;
|
|
746
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatComposerEnsureAssistConversationDirective, never>;
|
|
747
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXMChatComposerEnsureAssistConversationDirective, "ax-conversation-composer[axmEnsureAssistConversation]", never, { "conversationCreated": { "alias": "axmAssistConversationCreated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
748
|
+
}
|
|
749
|
+
|
|
452
750
|
/**
|
|
453
751
|
* Assist suggestion chips (starter prompts and engine {@code followUp} segments).
|
|
454
752
|
* Each item runs its platform command via {@link AXPCommandService}.
|
|
@@ -457,24 +755,31 @@ declare class AXMAssistSuggestionChipsComponent {
|
|
|
457
755
|
readonly items: _angular_core.InputSignal<AXPAiChatFollowUpItemLite[]>;
|
|
458
756
|
/** Tighter chip layout for mini-chat and other narrow panels. */
|
|
459
757
|
readonly compact: _angular_core.InputSignal<boolean>;
|
|
460
|
-
/**
|
|
758
|
+
/**
|
|
759
|
+
* When true, sends starter-prompt chips via the local {@link AXConversationService}
|
|
760
|
+
* instead of routing to the chat app. Follow-up chips also send in-place when this
|
|
761
|
+
* service already has an active conversation (header mini-chat overlay).
|
|
762
|
+
*/
|
|
461
763
|
readonly sendInPlace: _angular_core.InputSignal<boolean>;
|
|
462
764
|
/** Disables all chips (e.g. parent composer is loading or sending). */
|
|
463
765
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
464
766
|
/** Emits when an in-place send creates a new conversation (mini chat empty state). */
|
|
465
767
|
readonly conversationCreated: _angular_core.OutputEmitterRef<string>;
|
|
466
768
|
protected readonly normalizedItems: _angular_core.Signal<AXPAiChatFollowUpItemLite[]>;
|
|
769
|
+
protected readonly chipIcons: _angular_core.Signal<string[]>;
|
|
467
770
|
private readonly busy;
|
|
468
771
|
protected readonly isInteractionBlocked: _angular_core.Signal<boolean>;
|
|
469
772
|
private readonly commandService;
|
|
470
773
|
private readonly conversationService;
|
|
471
774
|
private readonly conversationApi;
|
|
472
775
|
private readonly entityChatService;
|
|
776
|
+
private readonly pageContextChips;
|
|
473
777
|
private readonly assistCatalog;
|
|
474
778
|
private readonly translationService;
|
|
475
779
|
private readonly layoutTheme;
|
|
476
780
|
protected onChipClick(item: AXPAiChatFollowUpItemLite): Promise<void>;
|
|
477
781
|
protected resolveChipLabel(item: AXPAiChatFollowUpItemLite): string;
|
|
782
|
+
private shouldSendAssistMessageInPlace;
|
|
478
783
|
private isSendAssistChatMessageCommand;
|
|
479
784
|
private resolveItemText;
|
|
480
785
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMAssistSuggestionChipsComponent, never>;
|
|
@@ -494,7 +799,11 @@ interface AXMAssistStarterPromptChipOptions {
|
|
|
494
799
|
/** Entity reference so a chip-created conversation stays bound to its entity (mini chat). */
|
|
495
800
|
entityId?: string;
|
|
496
801
|
entityType?: string;
|
|
802
|
+
/** Merged into room metadata when a chip creates a new conversation. */
|
|
803
|
+
launchContext?: AXMContextualAssistContext;
|
|
497
804
|
}
|
|
805
|
+
/** Picks a chip icon from the prompt text; skips icons already used in the same list. */
|
|
806
|
+
declare function axmAssistSuggestionIconForLabel(label: string, index?: number, taken?: ReadonlySet<string>): string;
|
|
498
807
|
/**
|
|
499
808
|
* Resolves a follow-up chip command for Conversation assist.
|
|
500
809
|
* AI follow-up output may use invalid `Registry:*` placeholders; those map to
|
|
@@ -525,6 +834,8 @@ interface AXMSendAssistChatMessageOptions {
|
|
|
525
834
|
navigate?: boolean;
|
|
526
835
|
entityId?: string;
|
|
527
836
|
entityType?: string;
|
|
837
|
+
/** Merged into room metadata only when this send creates a new conversation. */
|
|
838
|
+
launchContext?: AXMContextualAssistContext;
|
|
528
839
|
}
|
|
529
840
|
|
|
530
841
|
/**
|
|
@@ -536,6 +847,8 @@ declare function axmReadAssistAiTranscript(metadata: unknown): AXPAiChatMessage[
|
|
|
536
847
|
/** Raw engine transcript (chronological), without debug UI reordering. */
|
|
537
848
|
declare function axmReadAssistAiTranscriptRaw(metadata: unknown): AXPAiChatMessage[];
|
|
538
849
|
declare function axmAssistWidgetNodeFromUnknown(content: unknown, depth?: number): AXPWidgetNode | null;
|
|
850
|
+
/** Widget trees the chat layout renderer can host (not Form Template designer shells). */
|
|
851
|
+
declare function axmChatRenderableAssistWidgetNode(content: unknown): AXPWidgetNode | null;
|
|
539
852
|
/** Stable identity for widget nodes so embedded JSON vs structured `node` segments dedupe despite key order. */
|
|
540
853
|
declare function axmAssistWidgetNodeDedupeKey(content: unknown): string;
|
|
541
854
|
declare function axmSyntheticEmbedMessage(parent: AXConversationMessage, suffix: string, partial: Pick<AXConversationMessage, 'type' | 'payload'>): AXConversationMessage;
|
|
@@ -591,7 +904,9 @@ type AxmAssistUserVisibleItem = {
|
|
|
591
904
|
kind: 'followUp';
|
|
592
905
|
items: AXPAiChatFollowUpItem[];
|
|
593
906
|
};
|
|
594
|
-
declare function axmAssistUserVisibleItemsForLine(line: AXPAiChatMessage
|
|
907
|
+
declare function axmAssistUserVisibleItemsForLine(line: AXPAiChatMessage, options?: {
|
|
908
|
+
hideWidgetNodes?: boolean;
|
|
909
|
+
}): AxmAssistUserVisibleItem[];
|
|
595
910
|
/** Parses a raw {@code followUp} segment for UI (normalizes chip commands). */
|
|
596
911
|
declare function axmAssistFollowUpItemsFromUnknown(raw: unknown): AXPAiChatFollowUpItem[];
|
|
597
912
|
|
|
@@ -641,6 +956,8 @@ declare function axmReadReplyToUserMessageId(metadata: unknown): string | undefi
|
|
|
641
956
|
declare function axmReadAssistResponseError(metadata: unknown): string | undefined;
|
|
642
957
|
declare function axmIsAssistRetryableStatus(status: AxmAssistResponseStatus): boolean;
|
|
643
958
|
declare function axmIsAssistStreamingStatus(status: AxmAssistResponseStatus): boolean;
|
|
959
|
+
type AxmAssistFollowUpStatus = 'preparing' | 'ready' | 'skipped';
|
|
960
|
+
declare function axmReadAssistFollowUpStatus(metadata: unknown): AxmAssistFollowUpStatus | undefined;
|
|
644
961
|
declare function axmIsAssistTerminalStatus(status: AxmAssistResponseStatus): boolean;
|
|
645
962
|
/** Finalize metadata persisted when a run completes (even if status lags). */
|
|
646
963
|
declare function axmAssistHasFinalizeMetadata(metadata: unknown): boolean;
|
|
@@ -685,30 +1002,6 @@ declare function axmCoerceTimestampMs(value: unknown): number;
|
|
|
685
1002
|
declare function axmCoerceDate(value: unknown): Date;
|
|
686
1003
|
declare function axmSortMessagesNewestFirst(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
687
1004
|
|
|
688
|
-
/** Row shown in Conversation “Chat with AI” pickers (catalog assist). */
|
|
689
|
-
interface AXMChatAiTargetRow {
|
|
690
|
-
id: string;
|
|
691
|
-
name: string;
|
|
692
|
-
title: AXPMultiLanguageString | string;
|
|
693
|
-
description?: AXPMultiLanguageString | string;
|
|
694
|
-
professionImageUrl?: string;
|
|
695
|
-
}
|
|
696
|
-
/** Synthetic bot participant id for assist chats. */
|
|
697
|
-
declare function axmChatAiPeerParticipantId(catalogId: string): string;
|
|
698
|
-
/** Conversation metadata for starting an AI chat from a picker row. */
|
|
699
|
-
declare function axmBuildAiChatConversationMetadata(row: AXMChatAiTargetRow, assistSnapshot?: AXMAssistConversationSnapshotLite): Record<string, unknown>;
|
|
700
|
-
/** Loads assist rows for Conversation AI chat pickers. */
|
|
701
|
-
declare function axmLoadChatAiTargets(entityRegistry: AXPEntityDefinitionRegistryService): Promise<AXMChatAiTargetRow[]>;
|
|
702
|
-
/** Resolves ML or plain string for search/display. */
|
|
703
|
-
declare function axmResolveChatAiTargetText(resolveMl: (value: AXPMultiLanguageString) => string | undefined, value: AXPMultiLanguageString | string | undefined): string;
|
|
704
|
-
declare function axmChatAiTargetDisplayName(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string;
|
|
705
|
-
declare function axmChatAiTargetDisplayDescription(resolveMl: (value: AXPMultiLanguageString) => string | undefined, row: AXMChatAiTargetRow): string | undefined;
|
|
706
|
-
declare function axmChatAiTargetAvatarUrl(row: AXMChatAiTargetRow): string | null;
|
|
707
|
-
/** Fallback i18n key for rows with no catalog description. */
|
|
708
|
-
declare function axmChatAiTargetShortcutDescriptionKey(): string;
|
|
709
|
-
/** Same filter as {@link AXMChatWithAssistDialogComponent} target list search. */
|
|
710
|
-
declare function axmFilterChatAiTargets(resolveMl: (value: AXPMultiLanguageString) => string | undefined, rows: AXMChatAiTargetRow[], query: string): AXMChatAiTargetRow[];
|
|
711
|
-
|
|
712
1005
|
/** Builds a sidebar/header title from the first user message (heuristic fallback). */
|
|
713
1006
|
declare function axmBuildAutoTitleFromUserText(raw: string): string | null;
|
|
714
1007
|
/** Bot/assist list rows often show the assist peer `name` — keep it in sync with room title. */
|
|
@@ -716,7 +1009,9 @@ declare function axmSyncAssistPeerDisplayName<T extends Pick<AXConversation, 'ti
|
|
|
716
1009
|
declare function axmRoomWithAssistPeerDisplayName(room: AXMConversationRoom): AXMConversationRoom;
|
|
717
1010
|
|
|
718
1011
|
interface AXMConversationAssistResponsePort {
|
|
719
|
-
handleAfterUserMessage(conversationId: string, userMessageId: string, command: AXConversationSendMessageCommand, currentUserId: string
|
|
1012
|
+
handleAfterUserMessage(conversationId: string, userMessageId: string, command: AXConversationSendMessageCommand, currentUserId: string, options?: {
|
|
1013
|
+
skipAssistSync?: boolean;
|
|
1014
|
+
}): Promise<void>;
|
|
720
1015
|
retryAssistResponse(conversationId: string, messageId: string): Promise<AXConversationMessage>;
|
|
721
1016
|
reconcileStaleAssistPlaceholders(conversationId?: string): Promise<void>;
|
|
722
1017
|
/** True when the conversation has assist rows still marked streaming (cache or entity). */
|
|
@@ -725,6 +1020,8 @@ interface AXMConversationAssistResponsePort {
|
|
|
725
1020
|
getLiveMessage(messageId: string): AXConversationMessage | null;
|
|
726
1021
|
/** Merges assist in-memory cache over persisted messages (mock `conversationSharedStorage.messages` parity). */
|
|
727
1022
|
mergeLiveConversationMessages(conversationId: string, persisted: AXConversationMessage[]): AXConversationMessage[];
|
|
1023
|
+
/** Drops in-memory assist rows (e.g. after the user edited an earlier turn). */
|
|
1024
|
+
forgetLiveMessages(messageIds: string[]): void;
|
|
728
1025
|
/** Aligns composer Stop / spinner with assist streaming for the focused conversation. */
|
|
729
1026
|
syncComposerGenerationForFocus(conversationId: string | null): Promise<void>;
|
|
730
1027
|
/** Cancels in-flight assist generation (composer Stop). Aborts server AI + SSE stream updates. */
|
|
@@ -993,6 +1290,7 @@ declare class AXMCommentManagementService {
|
|
|
993
1290
|
private formatThread;
|
|
994
1291
|
createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;
|
|
995
1292
|
getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;
|
|
1293
|
+
countCommentsForEntity(entityRef: AXMCommentEntityData): Promise<number>;
|
|
996
1294
|
listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]>;
|
|
997
1295
|
updateThread(entityRef: AXMCommentEntityData, topic: string, data: Partial<{
|
|
998
1296
|
title: string;
|
|
@@ -1147,6 +1445,7 @@ declare class AXMCommentServiceImpl {
|
|
|
1147
1445
|
private readonly translationService;
|
|
1148
1446
|
createThread(creatorUser: AXPUserReference, entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMConversationRoom>;
|
|
1149
1447
|
getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom | null>;
|
|
1448
|
+
listRoomsForEntity(entityRef: AXMCommentEntityData): Promise<AXMConversationRoom[]>;
|
|
1150
1449
|
listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom[]>;
|
|
1151
1450
|
updateThread(threadId: string, data: Partial<{
|
|
1152
1451
|
title: string;
|
|
@@ -1267,6 +1566,19 @@ interface AXMEntityChatRef {
|
|
|
1267
1566
|
entityId: string;
|
|
1268
1567
|
entityType: string;
|
|
1269
1568
|
}
|
|
1569
|
+
/** Room fields used to decide whether a chat belongs on the main inbox. */
|
|
1570
|
+
interface AXMEntityChatRoomRef {
|
|
1571
|
+
metadata?: Record<string, unknown>;
|
|
1572
|
+
entityRef?: Pick<AXMCommentEntityData$1, 'entityId' | 'entityTypeId'> | null;
|
|
1573
|
+
}
|
|
1574
|
+
/** Room metadata flag: entity mini-chats stay off `/chat/`; header inbox chats omit this. */
|
|
1575
|
+
declare const AXM_MINI_CHAT_SCOPE_METADATA_KEY = "miniChatScope";
|
|
1576
|
+
declare const AXM_MINI_CHAT_SCOPE_ENTITY = "entity";
|
|
1577
|
+
/**
|
|
1578
|
+
* Synthetic record id for Ask AI on an entity **list** (no row id).
|
|
1579
|
+
* Keeps list history on that page and out of the main chat sidebar.
|
|
1580
|
+
*/
|
|
1581
|
+
declare const AXM_ENTITY_LIST_CHAT_ID = "__entity-list__";
|
|
1270
1582
|
/**
|
|
1271
1583
|
* Conversation metadata for an entity-scoped assist chat.
|
|
1272
1584
|
* Keeps `assistId` so the existing assist reply pipeline still answers in entity chats.
|
|
@@ -1276,16 +1588,36 @@ declare function axmBuildEntityChatConversationMetadata(args: {
|
|
|
1276
1588
|
entityType: string;
|
|
1277
1589
|
assistId: string;
|
|
1278
1590
|
}): Record<string, unknown>;
|
|
1591
|
+
/**
|
|
1592
|
+
* `AXConversationService.createConversation` stores the whole UI options object as
|
|
1593
|
+
* `room.metadata`, nesting real keys under `metadata.metadata`. Flatten so entity
|
|
1594
|
+
* flags sit at the top level for inbox filters and `entityRef`.
|
|
1595
|
+
*/
|
|
1596
|
+
declare function axmFlattenConversationCreateMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
|
|
1279
1597
|
/**
|
|
1280
1598
|
* Resolves the entity reference from conversation metadata.
|
|
1281
1599
|
* `AXConversationService.createConversation` may nest the UI object, so values
|
|
1282
1600
|
* are also probed at `metadata.metadata.*`.
|
|
1283
1601
|
*/
|
|
1284
1602
|
declare function axmExtractEntityRefFromMetadata(metadata: Record<string, unknown> | undefined): AXMEntityChatRef | undefined;
|
|
1285
|
-
/**
|
|
1603
|
+
/** Entity id/type from a contextual-assist launch payload (entity row / details). */
|
|
1604
|
+
declare function axmEntityRefFromLaunchContext(launch: AXMContextualAssistContext | undefined): AXMEntityChatRef | undefined;
|
|
1605
|
+
/** True when the conversation is bound to an entity page (not the site-header inbox). */
|
|
1286
1606
|
declare function axmConversationIsEntityChat(metadata: Record<string, unknown> | undefined): boolean;
|
|
1287
1607
|
/** True when conversation metadata targets the given entity reference. */
|
|
1288
1608
|
declare function axmConversationMatchesEntity(metadata: Record<string, unknown> | undefined, ref: AXMEntityChatRef): boolean;
|
|
1609
|
+
/**
|
|
1610
|
+
* True when a persisted room is an entity-scoped chat (metadata and/or `entityRef`).
|
|
1611
|
+
* Header / inbox AI chats have neither; they belong on `/chat/`.
|
|
1612
|
+
*/
|
|
1613
|
+
declare function axmRoomIsEntityChat(room: AXMEntityChatRoomRef | null | undefined): boolean;
|
|
1614
|
+
/** True when a room is bound to the given entity via metadata or `entityRef`. */
|
|
1615
|
+
declare function axmRoomMatchesEntity(room: AXMEntityChatRoomRef | null | undefined, ref: AXMEntityChatRef): boolean;
|
|
1616
|
+
/**
|
|
1617
|
+
* Persisted `entityRef` for an entity-scoped chat room so history can query by record
|
|
1618
|
+
* and the main inbox can exclude the room (comment threads use `kind: 'comment'`).
|
|
1619
|
+
*/
|
|
1620
|
+
declare function axmBuildEntityChatRoomEntityRef(metadata: Record<string, unknown> | undefined): AXMCommentEntityData$1 | undefined;
|
|
1289
1621
|
|
|
1290
1622
|
/** Arguments accepted by `AXConversationService.createConversation`, prebuilt for an entity chat. */
|
|
1291
1623
|
interface AXMEntityChatCreateData {
|
|
@@ -1319,13 +1651,17 @@ declare class AXMEntityChatService {
|
|
|
1319
1651
|
private get conversationApi();
|
|
1320
1652
|
/** Returns every conversation bound to the given entity reference. */
|
|
1321
1653
|
findEntityConversations(ref: AXMEntityChatRef): Promise<AXConversation[]>;
|
|
1322
|
-
/**
|
|
1323
|
-
|
|
1654
|
+
/**
|
|
1655
|
+
* Creates a new entity-scoped assist conversation and selects it.
|
|
1656
|
+
* Must go through {@link AXConversationService.createConversation} so the open mini-chat
|
|
1657
|
+
* instance owns the thread; the inbox tab filter hides entity rooms from `/chat/`.
|
|
1658
|
+
*/
|
|
1659
|
+
createEntityChat(ref: AXMEntityChatRef, assistId?: string, extraMetadata?: Record<string, unknown>): Promise<AXConversation>;
|
|
1324
1660
|
/**
|
|
1325
1661
|
* Builds the `createConversation` payload for a new entity assist chat.
|
|
1326
1662
|
* Uses `assistId` when provided, otherwise the tenant default assist.
|
|
1327
1663
|
*/
|
|
1328
|
-
buildEntityChatCreateData(ref: AXMEntityChatRef, assistId?: string): Promise<AXMEntityChatCreateData>;
|
|
1664
|
+
buildEntityChatCreateData(ref: AXMEntityChatRef, assistId?: string, extraMetadata?: Record<string, unknown>): Promise<AXMEntityChatCreateData>;
|
|
1329
1665
|
/** Resolves the assist catalog row to chat with (explicit id → tenant default → first row). */
|
|
1330
1666
|
private resolveAssistRow;
|
|
1331
1667
|
private resolveDefaultAssistId;
|
|
@@ -1340,10 +1676,10 @@ declare class AXMEntityChatService {
|
|
|
1340
1676
|
declare class AXMMiniChatInboxHistoryComponent implements OnInit {
|
|
1341
1677
|
private readonly conversationApi;
|
|
1342
1678
|
private readonly conversationFilter;
|
|
1679
|
+
private readonly realtimeBus;
|
|
1680
|
+
private readonly destroyRef;
|
|
1343
1681
|
/** Emits when the user picks a conversation from the list. */
|
|
1344
1682
|
readonly conversationSelected: _angular_core.OutputEmitterRef<string>;
|
|
1345
|
-
/** Emits when the user starts a new chat from the empty state. */
|
|
1346
|
-
readonly newChatRequested: _angular_core.OutputEmitterRef<void>;
|
|
1347
1683
|
/** Emits whether the loaded history contains at least one conversation. */
|
|
1348
1684
|
readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
|
|
1349
1685
|
readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
|
|
@@ -1351,84 +1687,23 @@ declare class AXMMiniChatInboxHistoryComponent implements OnInit {
|
|
|
1351
1687
|
ngOnInit(): void;
|
|
1352
1688
|
/** Reloads AI-assist inbox conversations. */
|
|
1353
1689
|
refresh(): Promise<void>;
|
|
1690
|
+
private bindRealtimeHistory;
|
|
1691
|
+
private matchesInbox;
|
|
1354
1692
|
protected resolveListAvatar(conversation: AXConversation): {
|
|
1355
1693
|
title: string;
|
|
1356
1694
|
avatar?: string;
|
|
1357
1695
|
icon?: string;
|
|
1358
1696
|
};
|
|
1359
1697
|
protected onSelect(conversationId: string): void;
|
|
1360
|
-
protected onNewChat(): void;
|
|
1361
1698
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatInboxHistoryComponent, never>;
|
|
1362
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxHistoryComponent, "axm-mini-chat-inbox-history", never, {}, { "conversationSelected": "conversationSelected"; "
|
|
1699
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatInboxHistoryComponent, "axm-mini-chat-inbox-history", never, {}, { "conversationSelected": "conversationSelected"; "hasConversationsChange": "hasConversationsChange"; }, never, never, true, never>;
|
|
1363
1700
|
}
|
|
1364
1701
|
|
|
1365
1702
|
type AXMMiniChatInboxConversationFilter = (conversation: AXConversation) => boolean;
|
|
1366
1703
|
declare const AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER: InjectionToken<AXMMiniChatInboxConversationFilter>;
|
|
1367
1704
|
|
|
1368
|
-
/** Anchor element for overlay positioning. */
|
|
1369
|
-
type AXMMiniChatPanelAnchor = Element | ElementRef<HTMLElement>;
|
|
1370
1705
|
/**
|
|
1371
|
-
*
|
|
1372
|
-
* Examples: `top-right` → `top-end`, `bottom-left` → `bottom-start`.
|
|
1373
|
-
*/
|
|
1374
|
-
type AXMMiniChatPanelSide = AXPlacement | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
|
|
1375
|
-
/** Fixed viewport coordinates (px). Ignored when `anchor` is set. */
|
|
1376
|
-
interface AXMMiniChatPanelPosition {
|
|
1377
|
-
x: number;
|
|
1378
|
-
y: number;
|
|
1379
|
-
}
|
|
1380
|
-
/** Mini chat panel scope: entity-bound threads or main inbox (non-entity chats). */
|
|
1381
|
-
type AXMMiniChatPanelScope = 'entity' | 'inbox';
|
|
1382
|
-
/** Session key used for the global inbox mini chat (non-entity conversations). */
|
|
1383
|
-
declare const AXM_MINI_CHAT_INBOX_SESSION_KEY = "__inbox__";
|
|
1384
|
-
/** Persisted panel state for a mini chat session. */
|
|
1385
|
-
interface AXMMiniChatPanelSessionState {
|
|
1386
|
-
view: 'thread' | 'history';
|
|
1387
|
-
selectedChatId?: string;
|
|
1388
|
-
hasOpened: boolean;
|
|
1389
|
-
}
|
|
1390
|
-
/** Options passed to {@link AXMMiniChatPanelService.open}. */
|
|
1391
|
-
interface AXMMiniChatPanelOpenOptions {
|
|
1392
|
-
/** Default: `entity`. Use `inbox` for regular (non-entity) chats shown in the main chat sidebar. */
|
|
1393
|
-
scope?: AXMMiniChatPanelScope;
|
|
1394
|
-
entityId?: string;
|
|
1395
|
-
entityType?: string;
|
|
1396
|
-
assistId?: string;
|
|
1397
|
-
title?: string;
|
|
1398
|
-
showInfoBar?: boolean;
|
|
1399
|
-
showComposer?: boolean;
|
|
1400
|
-
/** Fixed viewport position (px). Ignored when `anchor` is set. */
|
|
1401
|
-
position?: AXMMiniChatPanelPosition;
|
|
1402
|
-
/** Anchor element for popover placement. */
|
|
1403
|
-
anchor?: AXMMiniChatPanelAnchor;
|
|
1404
|
-
/** Placement relative to anchor. Default: `top-end` when anchored. */
|
|
1405
|
-
placement?: AXMMiniChatPanelSide;
|
|
1406
|
-
offsetX?: number;
|
|
1407
|
-
offsetY?: number;
|
|
1408
|
-
autoFlip?: boolean;
|
|
1409
|
-
/** When true, always opens a fresh conversation thread. */
|
|
1410
|
-
forceNewChat?: boolean;
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
|
-
/**
|
|
1414
|
-
* Host for inbox mini chat with an isolated {@link AXConversationService} so the header
|
|
1415
|
-
* slot does not change the main chat page selection while the user is on the chat route.
|
|
1416
|
-
*/
|
|
1417
|
-
declare class AXMMiniChatInboxPanelHostComponent {
|
|
1418
|
-
readonly title: _angular_core.InputSignal<string>;
|
|
1419
|
-
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1420
|
-
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1421
|
-
readonly requestClose: _angular_core.InputSignal<() => void>;
|
|
1422
|
-
readonly initialView: _angular_core.InputSignal<"thread" | "history">;
|
|
1423
|
-
readonly initialConversationId: _angular_core.InputSignal<string | undefined>;
|
|
1424
|
-
readonly startWithNewChat: _angular_core.InputSignal<boolean>;
|
|
1425
|
-
readonly onSessionChange: _angular_core.InputSignal<((state: Pick<AXMMiniChatPanelSessionState, "view" | "selectedChatId">) => void) | undefined>;
|
|
1426
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatInboxPanelHostComponent, never>;
|
|
1427
|
-
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>;
|
|
1428
|
-
}
|
|
1429
|
-
|
|
1430
|
-
/**
|
|
1431
|
-
* Root header slot that toggles the inbox mini chat overlay (AI-assist conversations only).
|
|
1706
|
+
* Root header slot that toggles the shared inbox mini chat overlay (AI-assist conversations).
|
|
1432
1707
|
*/
|
|
1433
1708
|
declare class AXMMiniChatHeaderSlotComponent {
|
|
1434
1709
|
private readonly panelService;
|
|
@@ -1449,6 +1724,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1449
1724
|
sideMenuWidth: _angular_core.Signal<number>;
|
|
1450
1725
|
sideMenuCompactWidth: _angular_core.Signal<number>;
|
|
1451
1726
|
menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
1727
|
+
menuToggleCyclesStyle: _angular_core.Signal<boolean>;
|
|
1452
1728
|
menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
|
|
1453
1729
|
menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
|
|
1454
1730
|
headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
|
|
@@ -1462,6 +1738,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1462
1738
|
overlayTaskCount: _angular_core.Signal<number>;
|
|
1463
1739
|
isNavigationLoading: _angular_core.Signal<boolean>;
|
|
1464
1740
|
isMenuHorizontal: _angular_core.Signal<boolean>;
|
|
1741
|
+
menuToggleCyclesStyleEnabled: _angular_core.Signal<boolean>;
|
|
1465
1742
|
effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
1466
1743
|
sideMenuDrawerWidth: _angular_core.Signal<number>;
|
|
1467
1744
|
menuDarkEnabled: _angular_core.Signal<boolean>;
|
|
@@ -1476,6 +1753,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1476
1753
|
setSideMenuWidth: (width: number) => void;
|
|
1477
1754
|
setSideMenuCompactWidth: (width: number) => void;
|
|
1478
1755
|
setSideMenuDrawerWidth: (width: number) => void;
|
|
1756
|
+
setMenuVerticalMode: (mode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode) => void;
|
|
1479
1757
|
toggleSideMenu: () => void;
|
|
1480
1758
|
setNavigationLoading: (value: boolean, delay?: number) => void;
|
|
1481
1759
|
setOverlayLoading: (value: boolean, delay?: number) => void;
|
|
@@ -1498,6 +1776,7 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1498
1776
|
sideMenuWidth: number;
|
|
1499
1777
|
sideMenuCompactWidth: number;
|
|
1500
1778
|
menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
|
|
1779
|
+
menuToggleCyclesStyle: boolean;
|
|
1501
1780
|
menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
|
|
1502
1781
|
menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
|
|
1503
1782
|
headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
|
|
@@ -1510,18 +1789,39 @@ declare class AXMMiniChatHeaderSlotComponent {
|
|
|
1510
1789
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatHeaderSlotComponent, "axm-mini-chat-header-slot", never, {}, {}, never, never, true, never>;
|
|
1511
1790
|
}
|
|
1512
1791
|
|
|
1792
|
+
/**
|
|
1793
|
+
* Page-header Ask AI control for entity list/detail pages.
|
|
1794
|
+
* Opens the same {@link AXMMiniChatPanelService} overlay as the root header slot.
|
|
1795
|
+
*/
|
|
1796
|
+
declare class AXMMiniChatPageActionComponent {
|
|
1797
|
+
private readonly panelService;
|
|
1798
|
+
private readonly pageContext;
|
|
1799
|
+
private readonly route;
|
|
1800
|
+
private readonly router;
|
|
1801
|
+
protected readonly device: AXPDeviceService;
|
|
1802
|
+
private readonly url;
|
|
1803
|
+
private readonly buttonRef;
|
|
1804
|
+
protected readonly visible: _angular_core.Signal<boolean>;
|
|
1805
|
+
protected onToggleClick(): void;
|
|
1806
|
+
private resolveEntityChatRef;
|
|
1807
|
+
private readEntityRoute;
|
|
1808
|
+
private collectRouteParams;
|
|
1809
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPageActionComponent, never>;
|
|
1810
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPageActionComponent, "axm-mini-chat-page-action", never, {}, {}, never, never, true, never>;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1513
1813
|
/**
|
|
1514
1814
|
* Scrollable list of entity-scoped conversations for the mini chat panel.
|
|
1515
1815
|
* Loads chats via {@link AXMEntityChatService.findEntityConversations}.
|
|
1516
1816
|
*/
|
|
1517
1817
|
declare class AXMMiniChatHistoryComponent implements OnInit {
|
|
1518
1818
|
private readonly entityChatService;
|
|
1819
|
+
private readonly realtimeBus;
|
|
1820
|
+
private readonly destroyRef;
|
|
1519
1821
|
readonly entityId: _angular_core.InputSignal<string>;
|
|
1520
1822
|
readonly entityType: _angular_core.InputSignal<string>;
|
|
1521
1823
|
/** Emits when the user picks a conversation from the list. */
|
|
1522
1824
|
readonly conversationSelected: _angular_core.OutputEmitterRef<string>;
|
|
1523
|
-
/** Emits when the user starts a new chat from the empty state. */
|
|
1524
|
-
readonly newChatRequested: _angular_core.OutputEmitterRef<void>;
|
|
1525
1825
|
/** Emits whether the loaded history contains at least one conversation. */
|
|
1526
1826
|
readonly hasConversationsChange: _angular_core.OutputEmitterRef<boolean>;
|
|
1527
1827
|
readonly conversations: _angular_core.WritableSignal<AXConversation[]>;
|
|
@@ -1529,64 +1829,154 @@ declare class AXMMiniChatHistoryComponent implements OnInit {
|
|
|
1529
1829
|
ngOnInit(): void;
|
|
1530
1830
|
/** Reloads the entity conversation list (call when the history panel becomes visible). */
|
|
1531
1831
|
refresh(): Promise<void>;
|
|
1832
|
+
private bindRealtimeHistory;
|
|
1532
1833
|
protected resolveListAvatar(conversation: AXConversation): {
|
|
1533
1834
|
title: string;
|
|
1534
1835
|
avatar?: string;
|
|
1535
1836
|
icon?: string;
|
|
1536
1837
|
};
|
|
1537
1838
|
protected onSelect(conversationId: string): void;
|
|
1538
|
-
protected onNewChat(): void;
|
|
1539
1839
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatHistoryComponent, never>;
|
|
1540
|
-
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"; "
|
|
1840
|
+
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>;
|
|
1841
|
+
}
|
|
1842
|
+
|
|
1843
|
+
/** Inserts or replaces a conversation in a mini-chat history list, then re-sorts. */
|
|
1844
|
+
declare function axmUpsertMiniChatHistoryItem(items: AXConversation[], next: AXConversation, matches: (conversation: AXConversation) => boolean): AXConversation[];
|
|
1845
|
+
/** Removes a conversation from a mini-chat history list. */
|
|
1846
|
+
declare function axmRemoveMiniChatHistoryItem(items: AXConversation[], conversationId: string): AXConversation[];
|
|
1847
|
+
|
|
1848
|
+
/** Anchor element for overlay positioning. */
|
|
1849
|
+
type AXMMiniChatPanelAnchor = Element | ElementRef<HTMLElement>;
|
|
1850
|
+
/**
|
|
1851
|
+
* Common placement aliases mapped to {@link AXPlacement}.
|
|
1852
|
+
* Examples: `top-right` → `top-end`, `bottom-left` → `bottom-start`.
|
|
1853
|
+
*/
|
|
1854
|
+
type AXMMiniChatPanelSide = AXPlacement | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
|
|
1855
|
+
/** Fixed viewport coordinates (px). Ignored when `anchor` is set. */
|
|
1856
|
+
interface AXMMiniChatPanelPosition {
|
|
1857
|
+
x: number;
|
|
1858
|
+
y: number;
|
|
1859
|
+
}
|
|
1860
|
+
/** Mini chat panel scope: entity-bound threads or main inbox (non-entity chats). */
|
|
1861
|
+
type AXMMiniChatPanelScope = 'entity' | 'inbox';
|
|
1862
|
+
/**
|
|
1863
|
+
* How the shared panel is hosted.
|
|
1864
|
+
* `overlay` is the floating window (header / entity pages).
|
|
1865
|
+
* `embedded` fills the host (entity record details, later).
|
|
1866
|
+
*/
|
|
1867
|
+
type AXMMiniChatPanelPresentation = 'overlay' | 'embedded';
|
|
1868
|
+
/** Session key used for the global inbox mini chat (non-entity conversations). */
|
|
1869
|
+
declare const AXM_MINI_CHAT_INBOX_SESSION_KEY = "__inbox__";
|
|
1870
|
+
/** Popup dock name for minimized mini-chat tabs in the root footer. */
|
|
1871
|
+
declare const AXM_MINI_CHAT_POPUP_DOCK = "mini-chat";
|
|
1872
|
+
/** Persisted panel state for a mini chat session. */
|
|
1873
|
+
interface AXMMiniChatPanelSessionState {
|
|
1874
|
+
view: 'thread' | 'history';
|
|
1875
|
+
selectedChatId?: string;
|
|
1876
|
+
hasOpened: boolean;
|
|
1877
|
+
}
|
|
1878
|
+
/** Options passed to {@link AXMMiniChatPanelService.open}. */
|
|
1879
|
+
interface AXMMiniChatPanelOpenOptions {
|
|
1880
|
+
/** Default: `entity`. Use `inbox` for regular (non-entity) chats shown in the main chat sidebar. */
|
|
1881
|
+
scope?: AXMMiniChatPanelScope;
|
|
1882
|
+
entityId?: string;
|
|
1883
|
+
entityType?: string;
|
|
1884
|
+
assistId?: string;
|
|
1885
|
+
title?: string;
|
|
1886
|
+
showInfoBar?: boolean;
|
|
1887
|
+
showComposer?: boolean;
|
|
1888
|
+
/** Default: `overlay`. Use `embedded` when the panel is inlined in a page. */
|
|
1889
|
+
presentation?: AXMMiniChatPanelPresentation;
|
|
1890
|
+
/** Fixed viewport position (px). Ignored when `anchor` is set. */
|
|
1891
|
+
position?: AXMMiniChatPanelPosition;
|
|
1892
|
+
/** Anchor element for popover placement. */
|
|
1893
|
+
anchor?: AXMMiniChatPanelAnchor;
|
|
1894
|
+
/** Placement relative to anchor. Default: `top-end` when anchored. */
|
|
1895
|
+
placement?: AXMMiniChatPanelSide;
|
|
1896
|
+
offsetX?: number;
|
|
1897
|
+
offsetY?: number;
|
|
1898
|
+
autoFlip?: boolean;
|
|
1899
|
+
/** When true, always opens a fresh conversation thread. */
|
|
1900
|
+
forceNewChat?: boolean;
|
|
1901
|
+
/**
|
|
1902
|
+
* Record/surface context for a new assist thread (entity-row assist).
|
|
1903
|
+
* Stored on the room and used to generate contextual starter chips.
|
|
1904
|
+
*/
|
|
1905
|
+
launchContext?: AXMContextualAssistContext;
|
|
1906
|
+
}
|
|
1907
|
+
/** Window controls exposed by the mini-chat popup host to {@link AXMMiniChatPanelService}. */
|
|
1908
|
+
interface AXMMiniChatPopupWindowApi {
|
|
1909
|
+
close(): void;
|
|
1910
|
+
restore(): void;
|
|
1911
|
+
minimize(): void;
|
|
1912
|
+
maximize(): void;
|
|
1913
|
+
isMinimized(): boolean;
|
|
1914
|
+
isMaximized(): boolean;
|
|
1915
|
+
}
|
|
1916
|
+
/** Assigned onto {@link AXMMiniChatPopupWindowComponent} via popup `data`. */
|
|
1917
|
+
interface AXMMiniChatPopupWindowData {
|
|
1918
|
+
scope: AXMMiniChatPanelScope;
|
|
1919
|
+
entityId?: string;
|
|
1920
|
+
entityType?: string;
|
|
1921
|
+
assistId?: string;
|
|
1922
|
+
panelTitle?: string;
|
|
1923
|
+
showInfoBar: boolean;
|
|
1924
|
+
showComposer: boolean;
|
|
1925
|
+
initialView: 'thread' | 'history';
|
|
1926
|
+
initialConversationId?: string;
|
|
1927
|
+
startWithNewChat: boolean;
|
|
1928
|
+
launchContext?: AXMContextualAssistContext;
|
|
1929
|
+
onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
|
|
1930
|
+
registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
|
|
1541
1931
|
}
|
|
1542
1932
|
|
|
1543
1933
|
/**
|
|
1544
|
-
* Opens the
|
|
1545
|
-
*
|
|
1934
|
+
* Opens the shared mini chat window via {@link AXPopupService} (header inbox, entity FAB, contextual assist).
|
|
1935
|
+
* Uses the module {@link AXConversationService} so assist SSE patches stream live.
|
|
1936
|
+
* Stays mounted across route changes; minimize hides the overlay and docks a tab in the footer.
|
|
1937
|
+
* Restores the last conversation per session on reopen; use {@link forceNewChat} for an explicit new thread.
|
|
1546
1938
|
*/
|
|
1547
1939
|
declare class AXMMiniChatPanelService {
|
|
1548
|
-
private readonly
|
|
1940
|
+
private readonly popupService;
|
|
1941
|
+
private readonly translation;
|
|
1549
1942
|
private readonly conversationService;
|
|
1550
1943
|
private readonly conversationApi;
|
|
1551
|
-
private readonly
|
|
1552
|
-
private
|
|
1553
|
-
private
|
|
1554
|
-
private
|
|
1555
|
-
|
|
1556
|
-
private outsideClickHandler;
|
|
1557
|
-
private routerSubscription;
|
|
1558
|
-
/** Active conversation before the panel took over selection (restored on close). */
|
|
1944
|
+
private readonly focusService;
|
|
1945
|
+
private windowApi;
|
|
1946
|
+
private closePromise;
|
|
1947
|
+
private windowGeneration;
|
|
1948
|
+
/** Active conversation before the panel took over selection (entity scope; restored on close). */
|
|
1559
1949
|
private savedActiveConversationId;
|
|
1950
|
+
/** Root focus id before the panel opened (restored so assist/realtime keep the right thread). */
|
|
1951
|
+
private savedFocusedConversationId;
|
|
1560
1952
|
/** Per-entity session (view, selected conversation) restored when the panel reopens. */
|
|
1561
1953
|
private readonly sessions;
|
|
1562
|
-
/** Reactive open state for launcher UI (
|
|
1954
|
+
/** Reactive open state for launcher UI (true while the window exists, including minimized). */
|
|
1563
1955
|
readonly panelOpen: _angular_core.WritableSignal<boolean>;
|
|
1564
|
-
/** True while the mini chat
|
|
1956
|
+
/** True while the mini chat window is mounted (visible or minimized). */
|
|
1565
1957
|
isOpen(): boolean;
|
|
1566
|
-
/** Closes the
|
|
1958
|
+
/** Closes the window when it is open. */
|
|
1567
1959
|
close(): void;
|
|
1568
|
-
/** Toggles the inbox mini chat
|
|
1960
|
+
/** Toggles the inbox mini chat window (regular non-entity conversations). */
|
|
1569
1961
|
toggleInbox(options?: Omit<AXMMiniChatPanelOpenOptions, 'scope' | 'entityId' | 'entityType'>): void;
|
|
1570
|
-
/**
|
|
1962
|
+
/**
|
|
1963
|
+
* Toggles the window: restores when minimized, closes when visible, opens when closed.
|
|
1964
|
+
*/
|
|
1571
1965
|
toggle(options: AXMMiniChatPanelOpenOptions): void;
|
|
1572
1966
|
/**
|
|
1573
|
-
* Opens the mini chat
|
|
1967
|
+
* Opens the mini chat window (replaces any existing window).
|
|
1574
1968
|
* Restores the last session for the entity unless {@link AXMMiniChatPanelOpenOptions.forceNewChat} is set.
|
|
1575
1969
|
*/
|
|
1576
1970
|
open(options: AXMMiniChatPanelOpenOptions): Promise<void>;
|
|
1971
|
+
private resolveWindowTitle;
|
|
1972
|
+
private buildSessionKey;
|
|
1577
1973
|
private buildEntityKey;
|
|
1578
|
-
private
|
|
1579
|
-
private
|
|
1580
|
-
private finishOverlayClose;
|
|
1581
|
-
private bindDismissHandlers;
|
|
1582
|
-
/** Ignore clicks on the anchor, overlay panel, or nested dropdown menus. */
|
|
1583
|
-
private isInsideInteractiveSurface;
|
|
1584
|
-
private removeDismissHandlers;
|
|
1974
|
+
private abandonOpenWindow;
|
|
1975
|
+
private finishWindowClose;
|
|
1585
1976
|
private captureActiveConversation;
|
|
1977
|
+
private captureFocusedConversation;
|
|
1978
|
+
private restoreFocusedConversation;
|
|
1586
1979
|
private restoreActiveConversation;
|
|
1587
|
-
private resolveAnchorElement;
|
|
1588
|
-
private normalizePlacement;
|
|
1589
|
-
private applyFixedPosition;
|
|
1590
1980
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPanelService, never>;
|
|
1591
1981
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMiniChatPanelService>;
|
|
1592
1982
|
}
|
|
@@ -1603,7 +1993,7 @@ declare class AXMMiniChatLauncherComponent {
|
|
|
1603
1993
|
readonly assistId: _angular_core.InputSignal<string | undefined>;
|
|
1604
1994
|
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1605
1995
|
/** Placement relative to the FAB when no custom {@link position} is set. Default: `top-end`. */
|
|
1606
|
-
readonly placement: _angular_core.InputSignal<"
|
|
1996
|
+
readonly placement: _angular_core.InputSignal<"top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end">;
|
|
1607
1997
|
readonly offsetX: _angular_core.InputSignal<number>;
|
|
1608
1998
|
readonly offsetY: _angular_core.InputSignal<number>;
|
|
1609
1999
|
private readonly fabRef;
|
|
@@ -1612,63 +2002,185 @@ declare class AXMMiniChatLauncherComponent {
|
|
|
1612
2002
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatLauncherComponent, "axm-mini-chat-launcher", never, { "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": true; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offsetX": { "alias": "offsetX"; "required": false; "isSignal": true; }; "offsetY": { "alias": "offsetY"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1613
2003
|
}
|
|
1614
2004
|
|
|
2005
|
+
type AXMMiniChatContextChipKind = 'entity' | 'view' | 'record';
|
|
2006
|
+
interface AXMMiniChatContextChip {
|
|
2007
|
+
id: string;
|
|
2008
|
+
kind: AXMMiniChatContextChipKind;
|
|
2009
|
+
label: string;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
/**
|
|
2013
|
+
* Live entity/view/record chips for the header mini chat.
|
|
2014
|
+
* Chips stay editable until the first message pins them on the conversation.
|
|
2015
|
+
*/
|
|
2016
|
+
declare class AXMMiniChatPageContextChipsService {
|
|
2017
|
+
private readonly pageContext;
|
|
2018
|
+
private readonly router;
|
|
2019
|
+
private readonly entityRegistry;
|
|
2020
|
+
private readonly entityService;
|
|
2021
|
+
private readonly translation;
|
|
2022
|
+
readonly chips: _angular_core.WritableSignal<AXMMiniChatContextChip[]>;
|
|
2023
|
+
readonly locked: _angular_core.WritableSignal<boolean>;
|
|
2024
|
+
private capturing;
|
|
2025
|
+
private pinnedId;
|
|
2026
|
+
private readonly dismissed;
|
|
2027
|
+
private entityKey;
|
|
2028
|
+
private viewKey;
|
|
2029
|
+
private selectionKey;
|
|
2030
|
+
private draft;
|
|
2031
|
+
private detailSeq;
|
|
2032
|
+
private loadedDetailKey;
|
|
2033
|
+
private detailPending;
|
|
2034
|
+
private watchStop;
|
|
2035
|
+
/** Follows the current page until the panel is destroyed. */
|
|
2036
|
+
start(destroyRef: DestroyRef): void;
|
|
2037
|
+
stop(): void;
|
|
2038
|
+
/** Editable chips from the page the user is on now. */
|
|
2039
|
+
beginDraft(): void;
|
|
2040
|
+
/** Stops live updates while a saved conversation is opening. */
|
|
2041
|
+
pinPending(conversationId: string): void;
|
|
2042
|
+
/** Shows the chips stored on a conversation and keeps them readonly. */
|
|
2043
|
+
pin(conversationId: string, metadata: Record<string, unknown> | undefined): void;
|
|
2044
|
+
dismiss(chipId: string): void;
|
|
2045
|
+
/**
|
|
2046
|
+
* Context for the conversation created by the first mini-chat message.
|
|
2047
|
+
* Empty when the user removed every chip or the page is not an entity page.
|
|
2048
|
+
*/
|
|
2049
|
+
resolveDraftLaunchContext(): Promise<AXMContextualAssistContext | undefined>;
|
|
2050
|
+
private refreshLive;
|
|
2051
|
+
private draftFromList;
|
|
2052
|
+
private ensureDetailDraft;
|
|
2053
|
+
private fetchDetail;
|
|
2054
|
+
private applyDraft;
|
|
2055
|
+
private readDetailRoute;
|
|
2056
|
+
private readRecordTitle;
|
|
2057
|
+
private resolveText;
|
|
2058
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPageContextChipsService, never>;
|
|
2059
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMiniChatPageContextChipsService>;
|
|
2060
|
+
}
|
|
2061
|
+
|
|
1615
2062
|
/**
|
|
1616
|
-
* Mini chat panel
|
|
2063
|
+
* Mini chat panel: branded window chrome, context strip, thread, and history.
|
|
2064
|
+
* Hosted as a popup window (header / entity pages) or embedded in a page.
|
|
1617
2065
|
*/
|
|
1618
2066
|
declare class AXMMiniChatPanelComponent implements OnInit, OnDestroy {
|
|
1619
2067
|
private readonly conversationService;
|
|
1620
2068
|
private readonly conversationApi;
|
|
1621
|
-
private readonly
|
|
2069
|
+
private readonly pageContext;
|
|
2070
|
+
private readonly localeService;
|
|
2071
|
+
private readonly device;
|
|
1622
2072
|
private readonly destroyRef;
|
|
2073
|
+
protected readonly pageContextChips: AXMMiniChatPageContextChipsService;
|
|
2074
|
+
private readonly localeProfile;
|
|
1623
2075
|
readonly scope: _angular_core.InputSignal<AXMMiniChatPanelScope>;
|
|
2076
|
+
readonly presentation: _angular_core.InputSignal<AXMMiniChatPanelPresentation>;
|
|
1624
2077
|
readonly entityId: _angular_core.InputSignal<string | undefined>;
|
|
1625
2078
|
readonly entityType: _angular_core.InputSignal<string | undefined>;
|
|
1626
2079
|
readonly assistId: _angular_core.InputSignal<string | undefined>;
|
|
1627
|
-
readonly title: _angular_core.InputSignal<string>;
|
|
2080
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1628
2081
|
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1629
2082
|
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1630
2083
|
readonly requestClose: _angular_core.InputSignal<() => void>;
|
|
2084
|
+
readonly requestMinimize: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2085
|
+
readonly requestMaximize: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2086
|
+
readonly requestRestore: _angular_core.InputSignal<(() => void) | undefined>;
|
|
2087
|
+
readonly isMaximized: _angular_core.InputSignal<boolean>;
|
|
1631
2088
|
readonly initialView: _angular_core.InputSignal<"thread" | "history">;
|
|
1632
2089
|
readonly initialConversationId: _angular_core.InputSignal<string | undefined>;
|
|
1633
2090
|
readonly startWithNewChat: _angular_core.InputSignal<boolean>;
|
|
2091
|
+
readonly launchContext: _angular_core.InputSignal<AXMContextualAssistContext | undefined>;
|
|
1634
2092
|
readonly onSessionChange: _angular_core.InputSignal<((state: Pick<AXMMiniChatPanelSessionState, "view" | "selectedChatId">) => void) | undefined>;
|
|
1635
2093
|
protected readonly view: _angular_core.WritableSignal<"thread" | "history">;
|
|
1636
2094
|
protected readonly selectedChatId: _angular_core.WritableSignal<string | undefined>;
|
|
1637
|
-
protected readonly historyHasItems: _angular_core.WritableSignal<boolean>;
|
|
1638
2095
|
protected readonly isInboxScope: _angular_core.Signal<boolean>;
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
protected readonly
|
|
1643
|
-
|
|
1644
|
-
|
|
2096
|
+
protected readonly isEmbedded: _angular_core.Signal<boolean>;
|
|
2097
|
+
protected readonly isRtl: _angular_core.Signal<boolean>;
|
|
2098
|
+
protected readonly canDragWindow: _angular_core.Signal<boolean>;
|
|
2099
|
+
protected readonly canMinimize: _angular_core.Signal<boolean>;
|
|
2100
|
+
protected readonly canMaximize: _angular_core.Signal<boolean>;
|
|
2101
|
+
protected readonly canClose: _angular_core.Signal<boolean>;
|
|
2102
|
+
protected readonly isRecordAssist: _angular_core.Signal<boolean>;
|
|
2103
|
+
protected readonly workingInEntityTitle: _angular_core.Signal<string | null>;
|
|
2104
|
+
protected readonly workingInViewTitle: _angular_core.Signal<string | null>;
|
|
2105
|
+
protected readonly recordTitleLabel: _angular_core.Signal<string | null>;
|
|
2106
|
+
protected readonly recordEntityTitle: _angular_core.Signal<string | null>;
|
|
2107
|
+
protected readonly showContextBar: _angular_core.Signal<boolean>;
|
|
2108
|
+
protected readonly contextBarIcon: _angular_core.Signal<"fa-building" | "fa-table-list">;
|
|
1645
2109
|
ngOnInit(): void;
|
|
1646
2110
|
ngOnDestroy(): void;
|
|
1647
2111
|
protected closePanel(): void;
|
|
2112
|
+
protected minimizePanel(): void;
|
|
2113
|
+
protected toggleMaximizePanel(): void;
|
|
2114
|
+
protected backToThread(): void;
|
|
1648
2115
|
protected openHistory(): void;
|
|
1649
|
-
protected onHistoryHasConversationsChange(hasItems: boolean): void;
|
|
1650
2116
|
protected selectChat(conversationId: string): void;
|
|
1651
2117
|
protected onConversationOpened(conversationId: string): void;
|
|
1652
2118
|
protected startNewChat(): Promise<void>;
|
|
2119
|
+
protected chipIcon(kind: AXMMiniChatContextChipKind): string;
|
|
2120
|
+
protected dismissPageContextChip(chipId: string, event: Event): void;
|
|
2121
|
+
private bindPageContextChips;
|
|
2122
|
+
private pinPageContextConversation;
|
|
2123
|
+
private readRecordTitle;
|
|
1653
2124
|
private syncSession;
|
|
1654
2125
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPanelComponent, never>;
|
|
1655
|
-
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>;
|
|
2126
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPanelComponent, "axm-mini-chat-panel", never, { "scope": { "alias": "scope"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": true; "isSignal": true; }; "requestMinimize": { "alias": "requestMinimize"; "required": false; "isSignal": true; }; "requestMaximize": { "alias": "requestMaximize"; "required": false; "isSignal": true; }; "requestRestore": { "alias": "requestRestore"; "required": false; "isSignal": true; }; "isMaximized": { "alias": "isMaximized"; "required": false; "isSignal": true; }; "initialView": { "alias": "initialView"; "required": false; "isSignal": true; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; "isSignal": true; }; "startWithNewChat": { "alias": "startWithNewChat"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "onSessionChange": { "alias": "onSessionChange"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
/**
|
|
2130
|
+
* Popup host for mini chat: custom chrome lives in {@link AXMMiniChatPanelComponent},
|
|
2131
|
+
* while this wrapper receives popup `data` and exposes minimize/maximize/close on the window.
|
|
2132
|
+
*/
|
|
2133
|
+
declare class AXMMiniChatPopupWindowComponent extends AXPopupComponentBase {
|
|
2134
|
+
private readonly destroyRef;
|
|
2135
|
+
scope: AXMMiniChatPanelScope;
|
|
2136
|
+
entityId?: string;
|
|
2137
|
+
entityType?: string;
|
|
2138
|
+
assistId?: string;
|
|
2139
|
+
panelTitle?: string;
|
|
2140
|
+
showInfoBar: boolean;
|
|
2141
|
+
showComposer: boolean;
|
|
2142
|
+
initialView: 'thread' | 'history';
|
|
2143
|
+
initialConversationId?: string;
|
|
2144
|
+
startWithNewChat: boolean;
|
|
2145
|
+
launchContext?: AXMContextualAssistContext;
|
|
2146
|
+
onSessionChange?: (state: Pick<AXMMiniChatPanelSessionState, 'view' | 'selectedChatId'>) => void;
|
|
2147
|
+
registerWindow?: (api: AXMMiniChatPopupWindowApi | null) => void;
|
|
2148
|
+
protected readonly closeFn: () => void;
|
|
2149
|
+
protected readonly minimizeFn: () => void;
|
|
2150
|
+
protected readonly maximizeFn: () => void;
|
|
2151
|
+
protected readonly restoreFn: () => void;
|
|
2152
|
+
private readonly windowApi;
|
|
2153
|
+
constructor();
|
|
2154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatPopupWindowComponent, never>;
|
|
2155
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatPopupWindowComponent, "axm-mini-chat-popup-window", never, {}, {}, never, never, true, never>;
|
|
1656
2156
|
}
|
|
1657
2157
|
|
|
1658
2158
|
/**
|
|
1659
|
-
*
|
|
1660
|
-
|
|
1661
|
-
|
|
2159
|
+
* Root-footer dock for minimized mini-chat windows (`mini-chat` dock name).
|
|
2160
|
+
*/
|
|
2161
|
+
declare class AXMMiniChatFooterDockComponent {
|
|
2162
|
+
protected readonly dockName = "mini-chat";
|
|
2163
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatFooterDockComponent, never>;
|
|
2164
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatFooterDockComponent, "axm-mini-chat-footer-dock", never, {}, {}, never, never, true, never>;
|
|
2165
|
+
}
|
|
2166
|
+
|
|
2167
|
+
/**
|
|
2168
|
+
* Compact, entity-scoped or inbox chat: renders a single conversation thread (message list)
|
|
2169
|
+
* with an optional info-bar and composer. Opens an existing chat by {@link chatId}, or starts
|
|
2170
|
+
* a new entity assist chat (created lazily on first send and tagged with `entityId` /
|
|
2171
|
+
* `entityType` in conversation metadata).
|
|
1662
2172
|
*
|
|
1663
|
-
*
|
|
1664
|
-
*
|
|
1665
|
-
* new one is coordinated by the host through {@link chatId} and {@link AXConversationService}.
|
|
2173
|
+
* Reports focus through {@link AXMChatConversationApi} so assist SSE and realtime message
|
|
2174
|
+
* patches reach this thread while the overlay is open.
|
|
1666
2175
|
*/
|
|
1667
2176
|
declare class AXMMiniChatComponent {
|
|
1668
2177
|
#private;
|
|
1669
2178
|
private readonly conversationService;
|
|
2179
|
+
private readonly popupService;
|
|
1670
2180
|
private readonly conversationApi;
|
|
2181
|
+
private readonly assistResponse;
|
|
1671
2182
|
private readonly destroyRef;
|
|
2183
|
+
protected readonly appearanceSync: AXMConversationAppearanceSyncService;
|
|
1672
2184
|
/** Existing conversation id to open. When omitted (and no conversation is active), the new-chat composer is shown. */
|
|
1673
2185
|
readonly chatId: _angular_core.InputSignal<string | undefined>;
|
|
1674
2186
|
/** Entity reference the chat is (or will be) bound to; omitted for inbox (regular) chats. */
|
|
@@ -1676,16 +2188,23 @@ declare class AXMMiniChatComponent {
|
|
|
1676
2188
|
readonly entityType: _angular_core.InputSignal<string | undefined>;
|
|
1677
2189
|
/** Assist used as the bot peer when creating a new entity chat (falls back to the tenant default). */
|
|
1678
2190
|
readonly assistId: _angular_core.InputSignal<string | undefined>;
|
|
2191
|
+
/** Surface context for a new assist thread (entity-row assist chips and room metadata). */
|
|
2192
|
+
readonly launchContext: _angular_core.InputSignal<AXMContextualAssistContext | undefined>;
|
|
1679
2193
|
readonly showInfoBar: _angular_core.InputSignal<boolean>;
|
|
1680
2194
|
readonly showComposer: _angular_core.InputSignal<boolean>;
|
|
1681
2195
|
/** Emits the active conversation id when one is opened or newly created. */
|
|
1682
2196
|
readonly conversationOpened: _angular_core.OutputEmitterRef<string>;
|
|
1683
2197
|
readonly hasActiveConversation: _angular_core.Signal<boolean>;
|
|
1684
2198
|
constructor();
|
|
2199
|
+
/** Opens the conversation info panel when the info-bar title/avatar area is clicked. */
|
|
2200
|
+
onInfoBarClick(): void;
|
|
1685
2201
|
/** New-chat composer created and selected a conversation; surface it to the host. */
|
|
2202
|
+
readonly onAssistConversationCreated: (conversationId: string) => void;
|
|
1686
2203
|
onConversationCreated(conversationId: string): void;
|
|
2204
|
+
/** Composer Stop — abort the in-flight assist stream for the active conversation. */
|
|
2205
|
+
onComposerGenerationCancelled(): void;
|
|
1687
2206
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMiniChatComponent, never>;
|
|
1688
|
-
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>;
|
|
2207
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMMiniChatComponent, "axm-mini-chat", never, { "chatId": { "alias": "chatId"; "required": false; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": false; "isSignal": true; }; "entityType": { "alias": "entityType"; "required": false; "isSignal": true; }; "assistId": { "alias": "assistId"; "required": false; "isSignal": true; }; "launchContext": { "alias": "launchContext"; "required": false; "isSignal": true; }; "showInfoBar": { "alias": "showInfoBar"; "required": false; "isSignal": true; }; "showComposer": { "alias": "showComposer"; "required": false; "isSignal": true; }; }, { "conversationOpened": "conversationOpened"; }, never, never, true, never>;
|
|
1689
2208
|
}
|
|
1690
2209
|
|
|
1691
2210
|
/** Fired after a user message is persisted — triggers assist, auto-reply, and realtime side effects. */
|
|
@@ -1707,5 +2226,5 @@ declare const CONVERSATION_START_DIRECT_CHAT_COMMAND = "Conversation:StartDirect
|
|
|
1707
2226
|
/** Opens an existing conversation in the chat app. */
|
|
1708
2227
|
declare const CONVERSATION_OPEN_CHAT_COMMAND = "Conversation:OpenChat";
|
|
1709
2228
|
|
|
1710
|
-
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,
|
|
1711
|
-
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 };
|
|
2229
|
+
export { AXMAddReactionCommand, AXMAssistSuggestionChipsComponent, AXMChannelFeedItemComponent, AXMChannelFeedPage, AXMChatAnnouncementChannelService, AXMChatComponent, AXMChatComposerAssistPickerComponent, AXMChatComposerEnsureAssistConversationDirective, AXMChatConversationApi, AXMChatEmptyAssistSessionService, AXMChatEntityConversationApi, AXMChatEntityConversationFocusHandler, AXMChatEntityConversationRoomQueryService, AXMChatEntityMessageApi, AXMChatEntityRealtimeApi, AXMChatEntityUserApi, AXMChatMessageApi, AXMChatRealtimeApi, AXMChatUserApi, AXMCommentComponent, AXMCommentManagementService, AXMCommentPopupComponent, AXMCommentRealtimeService, AXMCommentRealtimeServiceImpl, AXMCommentService, AXMCommentServiceImpl, AXMCommentWidgetViewComponent, AXMConversationAssistBackgroundOperationHandler, AXMConversationEntityStoreService, AXMConversationFocusService, AXMConversationModule, AXMConversationRealtimeBus, AXMEntityChatService, AXMMiniChatComponent, AXMMiniChatFooterDockComponent, AXMMiniChatHeaderSlotComponent, AXMMiniChatHistoryComponent, AXMMiniChatInboxHistoryComponent, AXMMiniChatLauncherComponent, AXMMiniChatPageActionComponent, AXMMiniChatPanelComponent, AXMMiniChatPanelService, AXMMiniChatPopupWindowComponent, AXMShowCommentPopupCommand, AXM_AI_MANAGEMENT_AGENT_ENTITY_NAME, AXM_AI_MANAGEMENT_ASSIST_ENTITY_NAME, AXM_AI_MANAGEMENT_MODULE_NAME, AXM_ASSIST_DEFAULT_RESOLVER_PORT, AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE, AXM_CHAT_ASSIST_CATALOG_PORT, AXM_CHAT_EMPTY_STATE_COMPONENT, AXM_CHAT_SIDEBAR_ACTION_PROVIDER, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS, AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY, AXM_CONVERSATION_ASSIST_RESPONSE_PORT, AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY, AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE, AXM_CONVERSATION_REGULAR_AUTO_REPLY_PORT, AXM_CONVERSATION_TAB_BOT, AXM_ENTITY_LIST_CHAT_ID, AXM_MINI_CHAT_INBOX_CONVERSATION_FILTER, AXM_MINI_CHAT_INBOX_SESSION_KEY, AXM_MINI_CHAT_POPUP_DOCK, AXM_MINI_CHAT_SCOPE_ENTITY, AXM_MINI_CHAT_SCOPE_METADATA_KEY, AXPCommentWidget, COMMENTS_PAGE_COMPONENT_KEY, CONVERSATION_AFTER_MESSAGE_SENT_COMMAND, CONVERSATION_EMIT_TYPING_INDICATOR_COMMAND, CONVERSATION_MARK_CONVERSATION_UNREAD_COMMAND, CONVERSATION_OPEN_CHAT_COMMAND, CONVERSATION_RETRY_ASSIST_RESPONSE_COMMAND, CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND, CONVERSATION_START_ASSIST_CHAT_COMMAND, CONVERSATION_START_DIRECT_CHAT_COMMAND, CONVERSATION_SYNC_READ_STATE_COMMAND, axmApplyAnswerTextToAssistPayloadLine, axmAssistFollowUpItemsFromUnknown, axmAssistHasFinalizeMetadata, axmAssistLastTranscriptLine, axmAssistNormalizeFollowUpItemForConversation, axmAssistNormalizeFollowUpItemsForConversation, axmAssistPersistedMessageLooksComplete, axmAssistResolveFollowUpCommandName, axmAssistStarterPromptChipItems, axmAssistSuggestionIconForLabel, axmAssistUserFacingPayloadLine, axmAssistUserVisibleItemsForLine, axmAssistWidgetNodeDedupeKey, axmAssistWidgetNodeFromUnknown, axmBuildAiChatConversationMetadata, axmBuildAssistPeerParticipantFromCreateData, axmBuildAssistPeerParticipantFromId, axmBuildAssistTranscriptLinePayload, axmBuildAutoTitleFromUserText, axmBuildEntityChatConversationMetadata, axmBuildEntityChatRoomEntityRef, axmChatAiPeerParticipantId, axmChatAiTargetAvatarUrl, axmChatAiTargetDisplayDescription, axmChatAiTargetDisplayName, axmChatAiTargetShortcutDescriptionKey, axmChatRenderableAssistWidgetNode, axmCoerceDate, axmCoerceTimestampMs, axmComputeConversationUnreadCount, axmConversationHasAiChat, axmConversationIsEntityChat, axmConversationMatchesEntity, axmEntityRefFromLaunchContext, axmExcludeEntityChatConversations, axmExtractAssistIdFromMetadata, axmExtractAssistSnapshotFromMetadata, axmExtractDirectAgentIdFromMetadata, axmExtractEntityRefFromMetadata, axmExtractModelEntityIdFromMetadata, axmExtractTextFromPayload, axmFilterChatAiTargets, axmFlattenConversationCreateMetadata, axmHydrateRealtimeConversationMessage, axmInboxConversationTab, axmIsAssistBotConversation, axmIsAssistPeerParticipant, axmIsAssistResponseMessage, axmIsAssistRetryableStatus, axmIsAssistStreamingMessage, axmIsAssistStreamingStatus, axmIsAssistTerminalStatus, axmIsUnsupportedLegacyAgentAssistConversation, axmLoadChatAiTargets, axmMessageCountsTowardUnread, axmMessageEntityToMessage, axmNormalizeAssistTranscriptForChatUi, axmNormalizeAssistTranscriptLineResponses, axmParseAssistTranscriptLinePayload, axmParseAssistTranscriptTextEnvelope, axmPartitionAssistAnswerText, axmPreferLocalUnreadCount, axmReadAssistAiTranscript, axmReadAssistAiTranscriptRaw, axmReadAssistFollowUpStatus, axmReadAssistResponseError, axmReadAssistResponseStatus, axmReadPlainTextMessagePayload, axmReadReplyToUserMessageId, axmRemoveMiniChatHistoryItem, axmResolveAssistFinalAnswerText, axmResolveChatAiTargetText, axmRoomEntityToConversation, axmRoomIsEntityChat, axmRoomMatchesEntity, axmRoomWithAssistPeerDisplayName, axmSanitizeAssistUserAnswerText, axmShouldPreferPersistedAssistOverLiveCache, axmShowCommentPopupCommandDefinition, axmSortMessagesNewestFirst, axmSyncAssistPeerDisplayName, axmSyntheticEmbedMessage, axmUpsertMiniChatHistoryItem, axmUserRowToParticipant, channelFeedPageRoutes, commentsPlugin, createConversationServiceSessionAdapter, persistChatAttachment };
|
|
2230
|
+
export type { AXMAddReactionCommandInput, AXMAssistConversationSnapshotLite, AXMAssistDefaultResolverPort, AXMAssistStarterPromptChipOptions, AXMChatAiTargetRow, AXMChatAssistCatalogPort, AXMChatEmptyAssistContinue, AXMChatEmptyAssistCreatedHandler, AXMChatEmptyAssistSessionBind, AXMChatSidebarAction, AXMComment, AXMCommentEvent, AXMCommentEventType, AXMCommentThread, AXMConversationAssistResponsePort, AXMConversationRegularAutoReplyPort, AXMConversationServiceSessionAdapter, AXMEntityChatCreateData, AXMEntityChatRef, AXMEntityChatRoomRef, AXMMiniChatInboxConversationFilter, AXMMiniChatPanelAnchor, AXMMiniChatPanelOpenOptions, AXMMiniChatPanelPosition, AXMMiniChatPanelPresentation, AXMMiniChatPanelScope, AXMMiniChatPanelSessionState, AXMMiniChatPanelSide, AXMMiniChatPopupWindowApi, AXMMiniChatPopupWindowData, AXMSendAssistChatMessageOptions, AXMShowCommentPopupCommandInput, AXMThreadEvent, AXMThreadEventType, AXPAiChatFollowUpCommandLite, AXPAiChatFollowUpItemLite, AXPAiChatMessageLite, AXPAiChatNodeOrFollowUpResponseLite, AXPAiChatTextResponseLite, AXPAiEffectiveAssistRowLite, AxmAssistFollowUpStatus, AxmAssistPartitionedAnswerText, AxmAssistResponseStatus, AxmAssistTranscriptLinePayload, AxmAssistUserVisibleItem, CommentsDisplayMode, CommentsPluginOptions };
|