@dataclouder/ngx-agent-cards 0.0.84 → 0.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/fesm2022/dataclouder-ngx-agent-cards.mjs +1515 -578
  2. package/fesm2022/dataclouder-ngx-agent-cards.mjs.map +1 -1
  3. package/lib/components/audio-text-sync/audio-text-sync.component.d.ts +42 -0
  4. package/lib/components/chat/chat.models.d.ts +2 -0
  5. package/lib/components/chat/dc-chat.component.d.ts +5 -7
  6. package/lib/components/chat-container/chat-container.component.d.ts +66 -0
  7. package/lib/components/chat-container/chat-footer/chat-footer.component.d.ts +30 -0
  8. package/lib/components/chat-container/chat-header/chat-header.component.d.ts +20 -0
  9. package/lib/components/chat-container/chat-messages-list/chat-message/chat-message.component.d.ts +30 -0
  10. package/lib/components/chat-container/chat-messages-list/chat-message/chat-message.utils.d.ts +3 -0
  11. package/lib/components/chat-container/chat-messages-list/chat-message/message-content/message-content.component.d.ts +24 -0
  12. package/lib/components/chat-container/chat-messages-list/chat-message/multi-message-content/multi-message-content.d.ts +22 -0
  13. package/lib/components/chat-container/chat-messages-list/chat-messages-list.component.d.ts +13 -0
  14. package/lib/components/dc-agent-card-details/dc-agent-card-details.component.d.ts +8 -4
  15. package/lib/components/dc-agent-card-lists/agent-card-default-ui/agent-card-default-ui.component.d.ts +2 -1
  16. package/lib/components/dc-agent-card-lists/dc-agent-card-lists.component.d.ts +3 -5
  17. package/lib/components/dc-agent-form/dc-agent-card-form.component.d.ts +12 -8
  18. package/lib/components/icons/icon-map.d.ts +0 -3
  19. package/lib/models/agent.models.d.ts +11 -15
  20. package/lib/models/conversation-enums.d.ts +2 -0
  21. package/lib/pipes/parse-card.pipe.d.ts +10 -0
  22. package/lib/services/audio-text-sync.service.d.ts +57 -0
  23. package/lib/services/conversation.service.d.ts +31 -0
  24. package/lib/services/dc-conversation-builder.service.d.ts +6 -1
  25. package/lib/services/evaluation.service.d.ts +17 -0
  26. package/lib/services/message-processing.service.d.ts +11 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +2 -1
  29. package/lib/components/chat-message/chat-message.component.d.ts +0 -28
@@ -0,0 +1,42 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { HighlightedWord } from '../../services/audio-text-sync.service';
3
+ import { MessageAudio } from '../../models/agent.models';
4
+ import { AudioTextSyncService } from '../../services/audio-text-sync.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class AudioTextSyncComponent implements OnInit {
7
+ private cdr;
8
+ private audioTextSyncService;
9
+ message: MessageAudio;
10
+ isLoading: boolean;
11
+ playAudio: EventEmitter<MessageAudio>;
12
+ highlightedWords: import("@angular/core").WritableSignal<HighlightedWord[]>;
13
+ private messageId;
14
+ private injector;
15
+ constructor(cdr: ChangeDetectorRef, audioTextSyncService: AudioTextSyncService);
16
+ /**
17
+ * Check if the message has transcription timestamps
18
+ */
19
+ get hasTranscription(): boolean;
20
+ /**
21
+ * Get the message text content
22
+ */
23
+ get messageText(): string;
24
+ /**
25
+ * Track function for ngFor to improve performance
26
+ * @param index The current item's index
27
+ * @param item The current item
28
+ */
29
+ trackByIndex(index: number, item: any): number;
30
+ ngOnInit(): void;
31
+ /**
32
+ * Generate a unique ID for this message instance
33
+ * Uses message content/text and a timestamp to ensure uniqueness
34
+ */
35
+ private generateMessageId;
36
+ /**
37
+ * Emit event to play the audio message
38
+ */
39
+ onPlayMessage(): void;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudioTextSyncComponent, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<AudioTextSyncComponent, "dc-audio-text-sync", never, { "message": { "alias": "message"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; }, { "playAudio": "playAudio"; }, never, never, true, never>;
42
+ }
@@ -0,0 +1,2 @@
1
+ import { IMiniAgentCard } from '../../models/agent.models';
2
+ export declare const DefaultEvaluatorAgentCard: IMiniAgentCard;
@@ -1,5 +1,4 @@
1
1
  import { EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
2
- import { FormControl } from '@angular/forms';
3
2
  import { DialogService } from 'primeng/dynamicdialog';
4
3
  import { ToastAlertsAbstractService } from '@dataclouder/ngx-core';
5
4
  import { MicSettings } from '@dataclouder/ngx-mic';
@@ -25,13 +24,14 @@ export declare class DCChatComponent implements OnInit {
25
24
  messages: ChatMessage[];
26
25
  imageUser: string;
27
26
  thinkingImg: string;
27
+ aiIcon: string;
28
28
  isDestroyed: boolean;
29
29
  score: number;
30
+ isAdmin: boolean;
31
+ isInfoVisible: boolean;
30
32
  isChatSettingsVisible: boolean;
31
- chatInputControl: FormControl;
32
33
  isAIThinking: boolean;
33
34
  isUserTalking: boolean;
34
- aiIcon: string;
35
35
  user: any;
36
36
  isGettingTranscription: boolean;
37
37
  private defaultVoice;
@@ -39,20 +39,18 @@ export declare class DCChatComponent implements OnInit {
39
39
  alternativeConversation: IAgentCard[];
40
40
  ngOnInit(): Promise<void>;
41
41
  private buildChatMessage;
42
- settingsClick(): void;
42
+ changeUserChatSettings(): void;
43
43
  ngOnDestroy(): void;
44
44
  setAIthinking(): void;
45
45
  sendUserMessage(message?: ChatMessage): Promise<void>;
46
46
  sendCurrentConversation(): Promise<void>;
47
47
  private getVoice;
48
- setInputText(text: any): void;
48
+ setInputText(text: string): void;
49
49
  micFinished(eventBlob: any): Promise<void>;
50
50
  playMessage(message: ChatMessage): void;
51
51
  subsItalicsByTag(text: any, voiceId?: string, tagName?: string): any;
52
52
  private processMultiMessages;
53
- isInfoVisible: boolean;
54
53
  showInfo(): void;
55
- changeConversationCard(): Promise<void>;
56
54
  restartConversation(conversation?: IAgentCard): Promise<void>;
57
55
  private evaluateConversation;
58
56
  static ɵfac: i0.ɵɵFactoryDeclaration<DCChatComponent, never>;
@@ -0,0 +1,66 @@
1
+ import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
2
+ import { DialogService } from 'primeng/dynamicdialog';
3
+ import { ToastAlertsAbstractService } from '@dataclouder/ngx-core';
4
+ import { MicSettings } from '@dataclouder/ngx-mic';
5
+ import { ChatUserSettings, IAgentCard, IMiniAgentCard, ChatMessage } from '../../models/agent.models';
6
+ import { AgentCardsAbstractService } from '../../models/conversation-ai.class';
7
+ import { DCConversationPromptBuilderService } from '../../services/dc-conversation-builder.service';
8
+ import { ConversationService } from '../../services/conversation.service';
9
+ import { EvaluationService } from '../../services/evaluation.service';
10
+ import * as i0 from "@angular/core";
11
+ export declare class ChatContainerComponent implements OnInit, OnDestroy {
12
+ private agentCardService;
13
+ private toastService;
14
+ private conversationBuilder;
15
+ private dialogService;
16
+ private conversationService;
17
+ private evaluationService;
18
+ chatUserSettings: ChatUserSettings;
19
+ agentCard: IAgentCard;
20
+ evaluatorAgentCard: IMiniAgentCard;
21
+ parseDict: {
22
+ [key: string]: string;
23
+ };
24
+ sendMessage: EventEmitter<string>;
25
+ micSettings: MicSettings;
26
+ imageUser: string;
27
+ thinkingImg: string;
28
+ aiIcon: string;
29
+ isInfoVisible: boolean;
30
+ isChatSettingsVisible: boolean;
31
+ isUserTalking: boolean;
32
+ isGettingTranscription: boolean;
33
+ isAdmin: boolean;
34
+ messages: import("@angular/core").Signal<ChatMessage[]>;
35
+ isThinking: import("@angular/core").Signal<boolean>;
36
+ score: import("@angular/core").Signal<number>;
37
+ constructor(agentCardService: AgentCardsAbstractService, toastService: ToastAlertsAbstractService, conversationBuilder: DCConversationPromptBuilderService, dialogService: DialogService, conversationService: ConversationService, evaluationService: EvaluationService);
38
+ ngOnInit(): Promise<void>;
39
+ ngOnDestroy(): void;
40
+ /**
41
+ * Handle user message from chat footer
42
+ */
43
+ onUserMessage(message: ChatMessage): Promise<void>;
44
+ /**
45
+ * Handle microphone input finished
46
+ */
47
+ onMicFinished(eventBlob: any): Promise<void>;
48
+ /**
49
+ * Open chat settings dialog
50
+ */
51
+ changeUserChatSettings(): void;
52
+ /**
53
+ * Show debug info
54
+ */
55
+ showInfo(): void;
56
+ /**
57
+ * Restart conversation
58
+ */
59
+ restartConversation(conversation?: IAgentCard | null): Promise<void>;
60
+ /**
61
+ * Evaluate conversation using evaluator agent
62
+ */
63
+ private evaluateConversation;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatContainerComponent, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatContainerComponent, "dc-chat", never, { "chatUserSettings": { "alias": "chatUserSettings"; "required": false; }; "agentCard": { "alias": "agentCard"; "required": false; }; "evaluatorAgentCard": { "alias": "evaluatorAgentCard"; "required": false; }; "parseDict": { "alias": "parseDict"; "required": false; }; }, { "sendMessage": "sendMessage"; }, never, never, true, never>;
66
+ }
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MicSettings } from '@dataclouder/ngx-mic';
4
+ import { ChatMessage } from '../../../models/agent.models';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ChatFooterComponent {
7
+ isAIThinking: boolean;
8
+ score: number;
9
+ micSettings: MicSettings;
10
+ sendMessage: EventEmitter<ChatMessage>;
11
+ textInputChanged: EventEmitter<string>;
12
+ micFinishedEvent: EventEmitter<any>;
13
+ chatInputControl: FormControl;
14
+ /**
15
+ * Sets the input text in the textarea
16
+ * @param text The text to set
17
+ */
18
+ setInputText(text: string): void;
19
+ /**
20
+ * Handles the mic finished event
21
+ * @param eventBlob The blob event from the mic component
22
+ */
23
+ micFinished(eventBlob: any): void;
24
+ /**
25
+ * Sends the user message
26
+ */
27
+ sendUserMessage(): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatFooterComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatFooterComponent, "dc-chat-footer", never, { "isAIThinking": { "alias": "isAIThinking"; "required": false; }; "score": { "alias": "score"; "required": false; }; "micSettings": { "alias": "micSettings"; "required": false; }; }, { "sendMessage": "sendMessage"; "textInputChanged": "textInputChanged"; "micFinishedEvent": "micFinishedEvent"; }, never, never, true, never>;
30
+ }
@@ -0,0 +1,20 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { IAgentCard } from '../../../models/agent.models';
3
+ import { AgentCardsAbstractService } from '../../../models/conversation-ai.class';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ChatHeaderComponent {
6
+ private agentCardService;
7
+ isAdmin: boolean;
8
+ alternativeConversation: IAgentCard[];
9
+ agentCard: IAgentCard;
10
+ restartConversationEvent: EventEmitter<IAgentCard>;
11
+ showInfoEvent: EventEmitter<void>;
12
+ settingsClickEvent: EventEmitter<void>;
13
+ constructor(agentCardService: AgentCardsAbstractService);
14
+ restartConversation(conversation?: IAgentCard | null): void;
15
+ showInfo(): void;
16
+ settingsClick(): void;
17
+ changeConversationCard(): Promise<void>;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatHeaderComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatHeaderComponent, "dc-chat-header", never, { "isAdmin": { "alias": "isAdmin"; "required": false; }; "alternativeConversation": { "alias": "alternativeConversation"; "required": false; }; "agentCard": { "alias": "agentCard"; "required": false; }; }, { "restartConversationEvent": "restartConversationEvent"; "showInfoEvent": "showInfoEvent"; "settingsClickEvent": "settingsClickEvent"; }, never, never, true, never>;
20
+ }
@@ -0,0 +1,30 @@
1
+ import { OnInit, WritableSignal } from '@angular/core';
2
+ import { ChatMessage, ChatMultiMessage, ChatUserSettings, MessageAudio } from '../../../../models/agent.models';
3
+ import { AgentCardsAbstractService } from '../../../../models/conversation-ai.class';
4
+ import { AudioService } from '../../../../services/audio.service';
5
+ import { AudioTextSyncService } from '../../../../services/audio-text-sync.service';
6
+ import * as i0 from "@angular/core";
7
+ export declare class ChatMessageComponent implements OnInit {
8
+ private audioService;
9
+ private agentCardService;
10
+ private audioTextSyncService;
11
+ chatMessage: ChatMessage;
12
+ chatUserSettings: ChatUserSettings;
13
+ private readonly destroyRef;
14
+ conversationChatSettings: WritableSignal<ChatUserSettings | null>;
15
+ isLoading: WritableSignal<boolean>;
16
+ constructor(audioService: AudioService, agentCardService: AgentCardsAbstractService, audioTextSyncService: AudioTextSyncService);
17
+ ngOnInit(): Promise<void>;
18
+ generateAndPlayAudio(message: ChatMessage, overwriteText?: string | null): Promise<void>;
19
+ playMessage(message: MessageAudio): HTMLAudioElement | null;
20
+ /**
21
+ * Generate a unique ID for a message
22
+ * Uses message content/text and a timestamp to ensure uniqueness
23
+ */
24
+ private generateMessageId;
25
+ generateAndPlayAllAudios(multiMessages: ChatMultiMessage[]): void;
26
+ private preloadNextMessageAudio;
27
+ private buildObjectTTSRequest;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatMessageComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatMessageComponent, "dc-chat-message", never, { "chatMessage": { "alias": "chatMessage"; "required": false; }; "chatUserSettings": { "alias": "chatUserSettings"; "required": false; }; }, {}, never, never, true, never>;
30
+ }
@@ -0,0 +1,3 @@
1
+ import { AudioGenerated, ChatMessage, ChatMultiMessage } from '../../../../models/agent.models';
2
+ export declare function matchTranscription(originalText: string, transcription: any[]): any[];
3
+ export declare function extractAudioAndTranscription(message: ChatMessage | ChatMultiMessage, audio: AudioGenerated): void;
@@ -0,0 +1,24 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { MessageAudio } from '../../../../../models/agent.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MessageContentComponent implements OnInit {
5
+ message: MessageAudio;
6
+ isLoading: boolean;
7
+ playAudio: EventEmitter<MessageAudio>;
8
+ constructor();
9
+ get hasTranscription(): boolean;
10
+ get messageText(): string;
11
+ get messageTag(): string | string[] | Set<string> | {
12
+ [klass: string]: any;
13
+ } | null;
14
+ onPlayMessage(): void;
15
+ /**
16
+ * Track function for ngFor to improve performance
17
+ * @param index The current item's index
18
+ * @param item The current item
19
+ */
20
+ trackByIndex(index: number, item: any): number;
21
+ ngOnInit(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<MessageContentComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessageContentComponent, "dc-message-content", never, { "message": { "alias": "message"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; }, { "playAudio": "playAudio"; }, never, never, true, never>;
24
+ }
@@ -0,0 +1,22 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { ChatMultiMessage } from '../../../../../models/agent.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MultiMessageContentComponent implements OnInit {
5
+ messages: ChatMultiMessage[];
6
+ isLoading: boolean;
7
+ playAudio: EventEmitter<ChatMultiMessage>;
8
+ constructor();
9
+ /**
10
+ * Checks if a message has transcription timestamps
11
+ * @param message The message to check
12
+ */
13
+ hasTranscription(message: ChatMultiMessage): boolean;
14
+ /**
15
+ * Emits the playAudio event with the selected message
16
+ * @param message The message to play
17
+ */
18
+ onPlayMessage(message: ChatMultiMessage): void;
19
+ ngOnInit(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiMessageContentComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultiMessageContentComponent, "dc-multi-message-content", never, { "messages": { "alias": "messages"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; }, { "playAudio": "playAudio"; }, never, never, true, never>;
22
+ }
@@ -0,0 +1,13 @@
1
+ import { ChatMessage, ChatUserSettings } from '../../../models/agent.models';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ChatMessagesListComponent {
4
+ chatUserSettings: ChatUserSettings;
5
+ thinkingImg: string;
6
+ aiIcon: string;
7
+ private conversationService;
8
+ messages: import("@angular/core").Signal<ChatMessage[]>;
9
+ isThinking: import("@angular/core").Signal<boolean>;
10
+ trackByMessage(index: number, message: ChatMessage): string;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatMessagesListComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatMessagesListComponent, "dc-chat-messages-list", never, { "chatUserSettings": { "alias": "chatUserSettings"; "required": false; }; "thinkingImg": { "alias": "thinkingImg"; "required": false; }; }, {}, never, never, true, never>;
13
+ }
@@ -2,17 +2,21 @@ import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { AgentCardsAbstractService } from '../../models/conversation-ai.class';
3
3
  import { IAgentCard } from '../../models/agent.models';
4
4
  import { ActivatedRoute } from '@angular/router';
5
+ import { UserDataExchangeAbstractService } from '../../models/user-data-exchange';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class DcAgentCardDetailsComponent implements OnInit {
7
8
  private agentCardService;
8
9
  private route;
9
10
  private cdr;
10
- constructor(agentCardService: AgentCardsAbstractService, route: ActivatedRoute, cdr: ChangeDetectorRef);
11
- conversationCardId: string;
11
+ private userDataExchange;
12
+ constructor(agentCardService: AgentCardsAbstractService, route: ActivatedRoute, cdr: ChangeDetectorRef, userDataExchange: UserDataExchangeAbstractService);
13
+ agentCardId: string;
12
14
  onStartConversation: EventEmitter<any>;
13
- conversation: IAgentCard;
15
+ agentCard: IAgentCard;
14
16
  ngOnInit(): Promise<void>;
15
17
  startConversation(): void;
18
+ toggleInfoLayer(): void;
19
+ showInfoLayer: boolean;
16
20
  static ɵfac: i0.ɵɵFactoryDeclaration<DcAgentCardDetailsComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<DcAgentCardDetailsComponent, "dc-agent-card-details", never, { "conversationCardId": { "alias": "conversationCardId"; "required": false; }; }, { "onStartConversation": "onStartConversation"; }, never, never, true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<DcAgentCardDetailsComponent, "dc-agent-card-details", never, { "agentCardId": { "alias": "agentCardId"; "required": false; }; }, { "onStartConversation": "onStartConversation"; }, never, never, true, never>;
18
22
  }
@@ -6,6 +6,7 @@ export declare class DCConversationCardUIComponent implements OnInit {
6
6
  speedDialModel: MenuItem[];
7
7
  ngOnInit(): void;
8
8
  card: IAgentCard;
9
+ showOptions: boolean;
9
10
  onCardAction: EventEmitter<{
10
11
  event: string;
11
12
  card: IAgentCard;
@@ -14,5 +15,5 @@ export declare class DCConversationCardUIComponent implements OnInit {
14
15
  onEdit(): void;
15
16
  onDelete(): void;
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<DCConversationCardUIComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<DCConversationCardUIComponent, "dc-agent-card-default-ui", never, { "card": { "alias": "card"; "required": false; }; }, { "onCardAction": "onCardAction"; }, never, never, true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<DCConversationCardUIComponent, "dc-agent-card-default-ui", never, { "card": { "alias": "card"; "required": false; }; "showOptions": { "alias": "showOptions"; "required": false; }; }, { "onCardAction": "onCardAction"; }, never, never, true, never>;
18
19
  }
@@ -14,6 +14,7 @@ export declare class AgentCardListComponent extends PaginationBase implements On
14
14
  private cdr;
15
15
  viewMode: 'cards' | 'table';
16
16
  customCardComponent?: Type<DCConversationCardUIComponent>;
17
+ showOptions?: boolean;
17
18
  gridLayout: boolean;
18
19
  getCustomButtons: (card: IAgentCard) => MenuItem[];
19
20
  outlets: QueryList<NgComponentOutlet>;
@@ -35,13 +36,10 @@ export declare class AgentCardListComponent extends PaginationBase implements On
35
36
  }): Promise<void>;
36
37
  deleteCard(id: string): Promise<void>;
37
38
  protected loadData(): Promise<void>;
38
- doFilterBarAction({ action, item }: {
39
- action: string;
40
- item: MenuItem | null;
41
- }): void;
39
+ doFilterBarAction({ action, item }: OnActionEvent): void;
42
40
  search(text: string): Promise<void>;
43
41
  filterChange(filters: FiltersConfig): Promise<void>;
44
42
  onCardAction(actionEvent: OnActionEvent): void;
45
43
  static ɵfac: i0.ɵɵFactoryDeclaration<AgentCardListComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<AgentCardListComponent, "dc-agent-card-lists", never, { "viewMode": { "alias": "viewMode"; "required": false; }; "customCardComponent": { "alias": "customCardComponent"; "required": false; }; "gridLayout": { "alias": "gridLayout"; "required": false; }; "getCustomButtons": { "alias": "getCustomButtons"; "required": false; }; }, {}, never, never, true, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgentCardListComponent, "dc-agent-card-lists", never, { "viewMode": { "alias": "viewMode"; "required": false; }; "customCardComponent": { "alias": "customCardComponent"; "required": false; }; "showOptions": { "alias": "showOptions"; "required": false; }; "gridLayout": { "alias": "gridLayout"; "required": false; }; "getCustomButtons": { "alias": "getCustomButtons"; "required": false; }; }, {}, never, never, true, never>;
47
45
  }
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormArray } from '@angular/forms';
3
3
  import { Router, ActivatedRoute } from '@angular/router';
4
- import { ToastAlertsAbstractService } from '@dataclouder/ngx-core';
4
+ import { AudioSpeed, ToastAlertsAbstractService } from '@dataclouder/ngx-core';
5
5
  import { StorageImageSettings, MultiImagesStorageService } from '@dataclouder/ngx-cloud-storage';
6
6
  import { DCConversationPromptBuilderService } from '../../services/dc-conversation-builder.service';
7
7
  import { DialogService } from 'primeng/dynamicdialog';
@@ -37,6 +37,10 @@ export declare class DCAgentCardFormComponent implements OnInit {
37
37
  conversation: IAgentCard;
38
38
  agentCardId: string;
39
39
  imageSettings: any;
40
+ audioSpeedOptions: {
41
+ label: string;
42
+ value: AudioSpeed;
43
+ }[];
40
44
  storageSettings: StorageImageSettings;
41
45
  bannerImgSettings: StorageImageSettings;
42
46
  imageStorageSettings: StorageImageSettings;
@@ -71,14 +75,14 @@ export declare class DCAgentCardFormComponent implements OnInit {
71
75
  textEngine: import("@angular/forms").FormControl<TextEngines>;
72
76
  conversationType: import("@angular/forms").FormControl<ConversationType>;
73
77
  autoStart: import("@angular/forms").FormControl<boolean>;
78
+ tts: import("@angular/forms").FormGroup<{
79
+ voice: import("@angular/forms").FormControl<string>;
80
+ secondaryVoice: import("@angular/forms").FormControl<string>;
81
+ speed: import("@angular/forms").FormControl<string>;
82
+ speedRate: import("@angular/forms").FormControl<number>;
83
+ }>;
74
84
  }>;
75
85
  lang: import("@angular/forms").FormControl<string>;
76
- tts: import("@angular/forms").FormGroup<{
77
- voice: import("@angular/forms").FormControl<string>;
78
- secondaryVoice: import("@angular/forms").FormControl<string>;
79
- speed: import("@angular/forms").FormControl<string>;
80
- speedRate: import("@angular/forms").FormControl<number>;
81
- }>;
82
86
  metaApp: import("@angular/forms").FormGroup<{
83
87
  isPublished: import("@angular/forms").FormControl<boolean>;
84
88
  isPublic: import("@angular/forms").FormControl<boolean>;
@@ -117,5 +121,5 @@ export declare class DCAgentCardFormComponent implements OnInit {
117
121
  private extractJsonFromResponse;
118
122
  removeSticker(sticker: any): Promise<void>;
119
123
  static ɵfac: i0.ɵɵFactoryDeclaration<DCAgentCardFormComponent, [null, null, null, null, null, null, null, null, { optional: true; }]>;
120
- static ɵcmp: i0.ɵɵComponentDeclaration<DCAgentCardFormComponent, "dc-conversation-form", never, { "storageSettings": { "alias": "storageSettings"; "required": false; }; "bannerImgSettings": { "alias": "bannerImgSettings"; "required": false; }; "imageStorageSettings": { "alias": "imageStorageSettings"; "required": false; }; }, { "onImageLoaded": "onImageLoaded"; "onSave": "onSave"; "onGoDetails": "onGoDetails"; "onTranslate": "onTranslate"; }, never, never, true, never>;
124
+ static ɵcmp: i0.ɵɵComponentDeclaration<DCAgentCardFormComponent, "dc-agent-form", never, { "storageSettings": { "alias": "storageSettings"; "required": false; }; "bannerImgSettings": { "alias": "bannerImgSettings"; "required": false; }; "imageStorageSettings": { "alias": "imageStorageSettings"; "required": false; }; }, { "onImageLoaded": "onImageLoaded"; "onSave": "onSave"; "onGoDetails": "onGoDetails"; "onTranslate": "onTranslate"; }, never, never, true, never>;
121
125
  }
@@ -1,9 +1,6 @@
1
1
  export declare const ICONS: {
2
- readonly gear: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\">\n <path d=\"M12 1.75a1.25 1.25 0 0 1 1.25 1.25v.917a8.456 8.456 0 0 1 2.334.98l.645-.647a1.25 1.25 0 1 1 1.768 1.768l-.646.645c.389.69.729 1.437.98 2.334h.917a1.25 1.25 0 0 1 0 2.5h-.917a8.456 8.456 0 0 1-.98 2.334l.646.645a1.25 1.25 0 1 1-1.768 1.768l-.645-.646a8.456 8.456 0 0 1-2.334.98v.917a1.25 1.25 0 0 1-2.5 0v-.917a8.456 8.456 0 0 1-2.334-.98l-.645.646a1.25 1.25 0 1 1-1.768-1.768l.646-.645a8.456 8.456 0 0 1-.98-2.334H1.75a1.25 1.25 0 0 1 0-2.5h.917a8.456 8.456 0 0 1 .98-2.334l-.646-.645a1.25 1.25 0 1 1 1.768-1.768l.645.647c.69-.389 1.437-.729 2.334-.98V3a1.25 1.25 0 0 1 1.25-1.25h.083ZM12 7.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9Z\"/>\n </svg>\n ";
3
2
  readonly chat: "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c...\" />\n </svg>";
4
3
  readonly play: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#263042\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <polygon points=\"10 8 16 12 10 16 10 8\"></polygon>\n </svg>";
5
4
  readonly loading: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#263042\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"></line>\n <line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"></line>\n <line x1=\"4.93\" y1=\"4.93\" x2=\"7.76\" y2=\"7.76\"></line>\n <line x1=\"16.24\" y1=\"16.24\" x2=\"19.07\" y2=\"19.07\"></line>\n <line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"></line>\n <line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"></line>\n <line x1=\"4.93\" y1=\"19.07\" x2=\"7.76\" y2=\"16.24\"></line>\n <line x1=\"16.24\" y1=\"7.76\" x2=\"19.07\" y2=\"4.93\"></line>\n </svg>";
6
- readonly user: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <!-- Head circle -->\n <circle cx=\"12\" cy=\"8\" r=\"4\" fill=\"currentColor\"/>\n \n <!-- Body shape -->\n <path d=\"M20 19v1a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1c0-3.87 3.13-7 7-7h2c3.87 0 7 3.13 7 7z\" fill=\"currentColor\"/>\n</svg>";
7
- readonly ai: "<svg \n xmlns=\"http://www.w3.org/2000/svg\" \n viewBox=\"0 0 100 100\" \n width=\"100\" \n height=\"100\" \n fill=\"none\" \n stroke=\"black\" \n stroke-width=\"2\"\n>\n <!-- Brain outline -->\n <path \n d=\"M50 10\n C60 10, 70 20, 70 30\n S60 50, 50 50\n S30 40, 30 30\n S40 10, 50 10Z\"\n fill=\"#B3E5FC\"\n />\n \n <!-- Circuit lines -->\n <line x1=\"50\" y1=\"50\" x2=\"50\" y2=\"70\" stroke=\"#0288D1\" stroke-width=\"2\" />\n <line x1=\"50\" y1=\"70\" x2=\"40\" y2=\"80\" stroke=\"#0288D1\" stroke-width=\"2\" />\n <line x1=\"50\" y1=\"70\" x2=\"60\" y2=\"80\" stroke=\"#0288D1\" stroke-width=\"2\" />\n \n <!-- Nodes -->\n <circle cx=\"50\" cy=\"70\" r=\"2\" fill=\"#0288D1\" />\n <circle cx=\"40\" cy=\"80\" r=\"3\" fill=\"#0288D1\" />\n <circle cx=\"60\" cy=\"80\" r=\"3\" fill=\"#0288D1\" />\n</svg>\n";
8
5
  };
9
6
  export type IconName = keyof typeof ICONS;
@@ -50,6 +50,7 @@ export interface IConversationSettings {
50
50
  last_prompt?: string;
51
51
  voice?: string;
52
52
  secondaryVoice?: string;
53
+ repeatRecording?: boolean;
53
54
  }
54
55
  export type IConversationSettingsDTO = Pick<IConversationSettings, 'messages' | 'textEngine' | 'conversationType'> & {
55
56
  model?: IAIModel;
@@ -74,7 +75,6 @@ export interface IAgentCard {
74
75
  assets?: IAgentAssets;
75
76
  characterCard?: ICharacterCardDC;
76
77
  conversationSettings?: IConversationSettings;
77
- tts?: ITTS;
78
78
  metaApp?: IAgentMetadata;
79
79
  accounts?: Array<IAccounts>;
80
80
  }
@@ -108,17 +108,19 @@ export declare class WordTimestamps {
108
108
  word: string;
109
109
  start: number;
110
110
  end: number;
111
- highlighted: any;
111
+ highlighted: boolean;
112
112
  }
113
- export declare class ChatMultiMessage {
114
- voice: string;
115
- content: string;
116
- text: string;
117
- audioUrl: string;
118
- audioPromise: any;
113
+ export declare class MessageAudio {
114
+ audioUrl?: string;
115
+ audioPromise?: any;
119
116
  isLoading?: boolean;
120
117
  transcription?: any;
121
118
  transcriptionTimestamps?: WordTimestamps[];
119
+ text?: string;
120
+ content?: string;
121
+ voice?: string;
122
+ }
123
+ export declare class ChatMultiMessage extends MessageAudio {
122
124
  tag: string | string[] | Set<string> | {
123
125
  [klass: string]: any;
124
126
  };
@@ -129,20 +131,14 @@ export declare enum ChatRole {
129
131
  Assistant = "assistant",
130
132
  AssistantHelper = "assistantHelper"
131
133
  }
132
- export declare class ChatMessage {
133
- content: string;
134
+ export declare class ChatMessage extends MessageAudio {
134
135
  role: ChatRole;
135
136
  ssml?: string;
136
- text?: string;
137
137
  translation?: string;
138
- audioUrl?: string;
139
138
  audioHtml?: HTMLAudioElement;
140
139
  promisePlay?: any;
141
140
  stats?: any;
142
141
  multiMessages?: ChatMultiMessage[];
143
- transcription?: TranscriptionsWhisper;
144
- transcriptionTimestamps?: WordTimestamps[];
145
- voice?: string;
146
142
  }
147
143
  export declare class ChatUserSettings {
148
144
  realTime: boolean;
@@ -1,3 +1,4 @@
1
+ import { ChatUserSettings } from './agent.models';
1
2
  export declare const LangCodeDescriptionEs: {
2
3
  es: string;
3
4
  en: string;
@@ -5,6 +6,7 @@ export declare const LangCodeDescriptionEs: {
5
6
  pt: string;
6
7
  fr: string;
7
8
  };
9
+ export declare const defaultconvUserSettings: ChatUserSettings;
8
10
  export declare class VoiceTTSOption {
9
11
  provider: string;
10
12
  name: string;
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { IAgentCard } from '../models/agent.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ParseCardPipe implements PipeTransform {
5
+ private userDataExchange;
6
+ private builderConversation;
7
+ transform(text: string, card?: IAgentCard): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ParseCardPipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<ParseCardPipe, "parseCard", true>;
10
+ }
@@ -0,0 +1,57 @@
1
+ import { Signal } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { WordTimestamps } from '../models/agent.models';
4
+ import * as i0 from "@angular/core";
5
+ export interface HighlightedWord {
6
+ word: string;
7
+ index: number;
8
+ isHighlighted: boolean;
9
+ }
10
+ export declare class AudioTextSyncService {
11
+ private highlightedWordsSignalMap;
12
+ private highlightedWords$Map;
13
+ private cleanup$Map;
14
+ private activeAudioMap;
15
+ private destroyRef;
16
+ constructor();
17
+ /**
18
+ * Synchronizes audio playback with text transcription
19
+ * @param audioElement The audio element to sync with
20
+ * @param transcriptionTimestamps Array of word timestamps
21
+ * @param messageId Unique identifier for the message
22
+ */
23
+ syncAudioWithText(audioElement: HTMLAudioElement, transcriptionTimestamps: WordTimestamps[], messageId: string): void;
24
+ /**
25
+ * Stops the sync for a specific message and cleans up resources
26
+ * @param messageId The ID of the message to stop syncing
27
+ */
28
+ stopSync(messageId: string): void;
29
+ /**
30
+ * Stops all syncs and cleans up all resources
31
+ */
32
+ stopAllSyncs(): void;
33
+ /**
34
+ * Returns the highlighted words signal for a specific message
35
+ * @param messageId The ID of the message
36
+ */
37
+ getHighlightedWordsSignal(messageId: string): Signal<HighlightedWord[]>;
38
+ /**
39
+ * Returns the highlighted words observable for a specific message
40
+ * @param messageId The ID of the message
41
+ */
42
+ getHighlightedWords$(messageId: string): Observable<HighlightedWord[]>;
43
+ /**
44
+ * Checks if a word at a specific index is currently highlighted for a specific message
45
+ * @param messageId The ID of the message
46
+ * @param index The index of the word to check
47
+ */
48
+ isWordHighlighted(messageId: string, index: number): boolean;
49
+ /**
50
+ * Returns an observable that emits true when a word at a specific index is highlighted for a specific message
51
+ * @param messageId The ID of the message
52
+ * @param index The index of the word to observe
53
+ */
54
+ isWordHighlighted$(messageId: string, index: number): Observable<boolean>;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<AudioTextSyncService, never>;
56
+ static ɵprov: i0.ɵɵInjectableDeclaration<AudioTextSyncService>;
57
+ }
@@ -0,0 +1,31 @@
1
+ import { Signal } from '@angular/core';
2
+ import { ChatMessage, IAgentCard, IAgentResponseDTO, IConversationSettings } from '../models/agent.models';
3
+ import { AgentCardsAbstractService } from '../models/conversation-ai.class';
4
+ import { MessageProcessingService } from './message-processing.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ConversationService {
7
+ private agentCardService;
8
+ private messageProcessingService;
9
+ private messagesSignal;
10
+ private isThinkingSignal;
11
+ private conversationSettingsSignal;
12
+ private agentCardSignal;
13
+ private isDestroyedSignal;
14
+ constructor(agentCardService: AgentCardsAbstractService, messageProcessingService: MessageProcessingService);
15
+ getMessages(): Signal<ChatMessage[]>;
16
+ isThinking(): Signal<boolean>;
17
+ getConversationSettings(): Signal<IConversationSettings | null>;
18
+ getAgentCard(): Signal<IAgentCard | null>;
19
+ setDestroyed(value: boolean): void;
20
+ initConversation(agentCard: IAgentCard, conversationBuilder: any, parseDict?: {
21
+ [key: string]: string;
22
+ }): Promise<void>;
23
+ sendUserMessage(message: ChatMessage): Promise<void>;
24
+ addMessage(message: ChatMessage): void;
25
+ processAssistantMessage(message: IAgentResponseDTO | ChatMessage, mutate?: boolean): ChatMessage;
26
+ sendCurrentConversation(): Promise<void>;
27
+ private getAudioPlaybackSetting;
28
+ resetConversation(agentCard?: IAgentCard): Promise<void>;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationService, never>;
30
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationService>;
31
+ }