@sftech/ng-orchestrator 0.0.19 → 0.0.21

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 (24) hide show
  1. package/fesm2022/{sftech-ng-orchestrator-agent-rag-upload.component-iqEbrzkb.mjs → sftech-ng-orchestrator-agent-rag-upload.component-d281IZS6.mjs} +2 -2
  2. package/fesm2022/{sftech-ng-orchestrator-agent-rag-upload.component-iqEbrzkb.mjs.map → sftech-ng-orchestrator-agent-rag-upload.component-d281IZS6.mjs.map} +1 -1
  3. package/fesm2022/{sftech-ng-orchestrator-agents.routes-CVcxzNAE.mjs → sftech-ng-orchestrator-agents.routes-BMA3nsjg.mjs} +21 -7
  4. package/fesm2022/sftech-ng-orchestrator-agents.routes-BMA3nsjg.mjs.map +1 -0
  5. package/fesm2022/sftech-ng-orchestrator-chats.routes-iRU4Q1Hz.mjs +740 -0
  6. package/fesm2022/sftech-ng-orchestrator-chats.routes-iRU4Q1Hz.mjs.map +1 -0
  7. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-BkSLQgGU.mjs → sftech-ng-orchestrator-prompt-display.component-BGO4cTtM.mjs} +2 -2
  8. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-BkSLQgGU.mjs.map → sftech-ng-orchestrator-prompt-display.component-BGO4cTtM.mjs.map} +1 -1
  9. package/fesm2022/sftech-ng-orchestrator-prompts.routes-BLBkcAxi.mjs +51 -0
  10. package/fesm2022/sftech-ng-orchestrator-prompts.routes-BLBkcAxi.mjs.map +1 -0
  11. package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-D9fLhC24.mjs → sftech-ng-orchestrator-sftech-ng-orchestrator-CJwdYvWr.mjs} +6 -6
  12. package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-D9fLhC24.mjs.map → sftech-ng-orchestrator-sftech-ng-orchestrator-CJwdYvWr.mjs.map} +1 -1
  13. package/fesm2022/sftech-ng-orchestrator.mjs +1 -1
  14. package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input/agent-chat-message-human-input.component.d.ts +3 -0
  15. package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component.d.ts +8 -1
  16. package/lib/ng-orchestrator/chats/agent-chat/agent-chat.component.d.ts +2 -0
  17. package/lib/ng-orchestrator/chats/agent-selection/agent-selection.component.d.ts +6 -0
  18. package/lib/ng-orchestrator/chats/chats.routes.d.ts +1 -2
  19. package/package.json +2 -2
  20. package/fesm2022/sftech-ng-orchestrator-agents.routes-CVcxzNAE.mjs.map +0 -1
  21. package/fesm2022/sftech-ng-orchestrator-chats.routes-BDe9JC4m.mjs +0 -625
  22. package/fesm2022/sftech-ng-orchestrator-chats.routes-BDe9JC4m.mjs.map +0 -1
  23. package/fesm2022/sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs +0 -51
  24. package/fesm2022/sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-chats.routes-BDe9JC4m.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/agent-run.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/chat.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/dataprovider/orchestrator-icon.provider.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input/agent-chat-message-human-input.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input/agent-chat-message-human-input.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message/agent-chat-message.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat-message/agent-chat-message.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-chat/agent-chat.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-selection/agent-selection.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/agent-selection/agent-selection.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/chats.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/chats/chats.routes.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BaseDbApiService, MappedApiError, MappedApiResponse } from '@sftech/ng-shared';\r\nimport { Observable } from 'rxjs';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IAgentRunCreateRequestDto } from '../dtos/agent-run-create-request.dto';\r\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\r\nimport { AgentRun } from '../models/agent-run.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AgentRunService extends BaseDbApiService<AgentRun, IAgentRunCreateRequestDto, IAgentRunResponseDto, IAgentRunResponseDto> {\r\n constructor(\r\n protected override readonly http: HttpClient,\r\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\r\n ) {\r\n super(http, config);\r\n this.url = `${this.config.orchestratorDbUrl}/agent-runs`;\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override insert(dto: IAgentRunCreateRequestDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override update(id: number, dto: IAgentRunResponseDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override delete(id: number): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n protected getNewModel(): AgentRun {\r\n return new AgentRun();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BaseDbApiService, IApiResponse, IOdataResponseDto, MappedApiError, MappedApiResponse, MappedOdataResponse, OData } from '@sftech/ng-shared';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IChatCreateRequestDto } from '../dtos/chat-create-request.dto';\r\nimport { IChatResponseDto } from '../dtos/chat-response.dto';\r\nimport { IChatUpdateRequestDto } from '../dtos/chat-update-request.dto';\r\nimport { Chat } from '../models/chat.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChatService extends BaseDbApiService<Chat, IChatCreateRequestDto, IChatUpdateRequestDto, IChatResponseDto> {\r\n constructor(\r\n protected override readonly http: HttpClient,\r\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\r\n ) {\r\n super(http, config);\r\n this.url = `${this.config.orchestratorDbUrl}/chats`;\r\n }\r\n\r\n public override odata(odataQuery: OData): Observable<MappedOdataResponse<Chat> | MappedApiError> {\r\n return this.http.get<IApiResponse<IOdataResponseDto<IChatResponseDto>>>(`${this.url}/${odataQuery.toGetParameter()}`).pipe(\r\n map((response: IApiResponse<IOdataResponseDto<IChatResponseDto>>) => this.responseOdataMapping(response)),\r\n catchError((error) => {\r\n return this.httpErrorToApiResponse(error);\r\n }),\r\n );\r\n }\r\n\r\n public override insert(dto: IChatCreateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\r\n return this.http.post<IApiResponse<IChatResponseDto>>(this.url, dto).pipe(\r\n map((response: IApiResponse<IChatResponseDto>) => this.responseMapping(response)),\r\n catchError((error) => {\r\n return this.httpErrorToApiResponse(error);\r\n }),\r\n );\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n public override update(id: number, dto: IChatUpdateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\r\n throw new Error('update of a chat is not allowed');\r\n }\r\n\r\n protected override getNewModel(): Chat {\r\n return new Chat();\r\n }\r\n}\r\n","import { faBrain, faCheck, faCircleQuestion, faClipboardCheck, faCog, faLaptop, faNetworkWired, faNoteSticky, faSpinner, faUser, faXmark } from '@fortawesome/free-solid-svg-icons';\r\nimport { IconProvider } from '@sftech/ng-shared';\r\n\r\nexport class OrchestratorIconProvider extends IconProvider {\r\n public static readonly agentRunStatusInit = faNoteSticky;\r\n public static readonly agentRunStatusRunning = faCog;\r\n public static readonly agentRunStatusCompleted = faCheck;\r\n public static readonly agentRunStatusFailed = faXmark;\r\n public static readonly agentRunStatusPrerun = faSpinner;\r\n public static readonly agentRunStatusPostrun = faClipboardCheck;\r\n public static readonly agentRunStatusClarify = faCircleQuestion;\r\n\r\n public static readonly messageTypeAI = faBrain;\r\n public static readonly messageTypeHuman = faUser;\r\n public static readonly messageTypeSystem = faNetworkWired;\r\n}\r\n","import { IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport { IconProvider } from '@sftech/ng-shared';\r\nimport { OrchestratorIconProvider } from '../../../core/dataprovider/orchestrator-icon.provider';\r\nimport { EAgentRunStatus } from '../../../core/enums/agent-run-status.enum';\r\n\r\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\r\nexport class AgentRunIconTextDataprovider {\r\n private static readonly UNKNOWN_TEXT = 'Unbekannt';\r\n\r\n public static getTextForStatus(status: EAgentRunStatus | undefined): string {\r\n if (!status) {\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return 'Anlage';\r\n case EAgentRunStatus.RUNNING:\r\n return 'In Bearbeitung';\r\n case EAgentRunStatus.COMPLETED:\r\n return 'Abgeschlossen';\r\n case EAgentRunStatus.FAILED:\r\n return 'Fehlgeschlagen';\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return 'Rückfrage';\r\n case EAgentRunStatus.PRERUNNING:\r\n return 'Vorbereitung';\r\n case EAgentRunStatus.POSTRUNNING:\r\n return 'Nachbereitung';\r\n default:\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n }\r\n\r\n public static getIconForStatus(status: EAgentRunStatus | undefined): IconDefinition {\r\n if (!status) {\r\n return IconProvider.unknown;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return OrchestratorIconProvider.agentRunStatusInit;\r\n case EAgentRunStatus.RUNNING:\r\n return OrchestratorIconProvider.agentRunStatusRunning;\r\n case EAgentRunStatus.COMPLETED:\r\n return OrchestratorIconProvider.agentRunStatusCompleted;\r\n case EAgentRunStatus.FAILED:\r\n return OrchestratorIconProvider.agentRunStatusFailed;\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return OrchestratorIconProvider.agentRunStatusClarify;\r\n case EAgentRunStatus.PRERUNNING:\r\n return OrchestratorIconProvider.agentRunStatusPrerun;\r\n case EAgentRunStatus.POSTRUNNING:\r\n return OrchestratorIconProvider.agentRunStatusPostrun;\r\n default:\r\n return IconProvider.unknown;\r\n }\r\n }\r\n\r\n public static getIconClassesForStatus(status: EAgentRunStatus | undefined): string {\r\n if (!status) {\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return '';\r\n case EAgentRunStatus.RUNNING:\r\n return 'text-primary-600';\r\n case EAgentRunStatus.COMPLETED:\r\n return 'text-green-600';\r\n case EAgentRunStatus.FAILED:\r\n return 'text-red-600';\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return '';\r\n case EAgentRunStatus.PRERUNNING:\r\n return '';\r\n case EAgentRunStatus.POSTRUNNING:\r\n return '';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n public static getIconForMessageType(messageType: string): IconDefinition {\r\n switch (messageType) {\r\n case 'system':\r\n return OrchestratorIconProvider.messageTypeSystem;\r\n case 'human':\r\n return OrchestratorIconProvider.messageTypeHuman;\r\n case 'ai':\r\n return OrchestratorIconProvider.messageTypeAI;\r\n default:\r\n return IconProvider.unknown;\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, effect, inject, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { FormErrorDisplayComponent, MappedApiError } from '@sftech/ng-shared';\r\nimport { AgentRunIconTextDataprovider } from 'libs/ng-orchestrator/src/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Button } from 'primeng/button';\r\nimport { FloatLabel } from 'primeng/floatlabel';\r\nimport { InputText } from 'primeng/inputtext';\r\nimport { Agent } from '../../../core/models/agent.model';\r\n\r\nimport { OrchestratorService } from '../../../core/service/orchestrator.service';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat-message-human-input-initial',\r\n imports: [FaIconComponent, Button, FloatLabel, FormErrorDisplayComponent, InputText, ReactiveFormsModule],\r\n templateUrl: './agent-chat-message-human-input-initial.component.html',\r\n styleUrl: './agent-chat-message-human-input-initial.component.css',\r\n})\r\nexport class AgentChatMessageHumanInputInitialComponent {\r\n public agent = input<Agent>();\r\n\r\n @Output() agentRunIdReceived = new EventEmitter<number>();\r\n\r\n public messageService = inject(MessageService);\r\n public orchestratorService = inject(OrchestratorService);\r\n\r\n public form = new FormGroup({});\r\n\r\n private _agentChanged$ = effect(() => {\r\n this.agent()!\r\n .llmUserPrompt?.template.match(/{{(.*?)}}/g)\r\n ?.forEach((m: string) => {\r\n const key = m.slice(2, -2);\r\n this.form.addControl(key, new FormControl('', [Validators.required]));\r\n });\r\n });\r\n\r\n protected readonly iconTextMapper = AgentRunIconTextDataprovider;\r\n\r\n public run(): void {\r\n if (this.form!.valid && this.form!.valid) {\r\n this.orchestratorService\r\n .runAgent({\r\n agentIdentifier: this.agent()!.identifier,\r\n userInput: this.form!.value,\r\n })\r\n .subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: res.messages.join('|') });\r\n return;\r\n }\r\n this.agentRunIdReceived.emit(res);\r\n });\r\n } else {\r\n console.error('Form is invalid');\r\n }\r\n }\r\n\r\n public getInputFormControlNames(): string[] {\r\n return Object.keys(this.form!.controls);\r\n }\r\n}\r\n","<div class=\"my-2 p-4 rounded bg-white flex border-1 flex-row items-center text-right border-gray-600 flex-row-reverse\">\r\n <div class=\"me-4 ms-4 text-gray-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('human')\" size=\"2x\"></fa-icon>\r\n </div>\r\n <div class=\"m-0 flex-grow\">\r\n <div class=\"template border-b-1 border-gray-600 p-3\">{{this.agent()!.llmUserPrompt?.template}}</div>\r\n <hr />\r\n <div class=\"inputs mt-2\">\r\n <form [formGroup]=\"form!\">\r\n <div class=\"flex justify-end\">\r\n @for (controlName of getInputFormControlNames(); track controlName) {\r\n <div>\r\n <p-floatlabel variant=\"in\" class=\"w-full\">\r\n <input type=\"text\" id=\"{{ controlName}}\" formControlName=\"{{ controlName }}\" pInputText\r\n class=\"w-full\"/>\r\n <label for=\"{{ controlName }}\">{{ controlName }}</label>\r\n </p-floatlabel>\r\n <sftech-form-error-display [control]=\"form!.get(controlName)!\"\r\n [label]=\"controlName\"></sftech-form-error-display>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mt-2\">\r\n <p-button type=\"submit\" label=\"Senden\" (onClick)=\"run()\" tabindex=\"1\"/>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>","import { Component, EventEmitter, Output, inject, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { FormErrorDisplayComponent, MappedApiError } from '@sftech/ng-shared';\r\nimport { AgentRunIconTextDataprovider } from 'libs/ng-orchestrator/src/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Button } from 'primeng/button';\r\nimport { FloatLabel } from 'primeng/floatlabel';\r\nimport { InputText } from 'primeng/inputtext';\r\nimport { Agent } from '../../../core/models/agent.model';\r\nimport { OrchestratorService } from '../../../core/service/orchestrator.service';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat-message-human-input',\r\n imports: [FaIconComponent, Button, FloatLabel, FormErrorDisplayComponent, InputText, ReactiveFormsModule],\r\n templateUrl: './agent-chat-message-human-input.component.html',\r\n styleUrl: './agent-chat-message-human-input.component.css',\r\n})\r\nexport class AgentChatMessageHumanInputComponent {\r\n public agent = input<Agent>();\r\n public agentRunId = input<number>();\r\n\r\n @Output() agentRunIdReceived = new EventEmitter<number>();\r\n\r\n public messageService = inject(MessageService);\r\n public orchestratorService = inject(OrchestratorService);\r\n\r\n public form = new FormGroup({\r\n message: new FormControl('', [Validators.required]),\r\n });\r\n\r\n protected readonly iconTextMapper = AgentRunIconTextDataprovider;\r\n\r\n public run(): void {\r\n if (this.form.valid) {\r\n const message = this.form.value.message as string;\r\n this.orchestratorService.chatAgent(this.agentRunId()!, message).subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: res.messages.join('|') });\r\n return;\r\n }\r\n this.form.reset();\r\n this.agentRunIdReceived.emit(res);\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"my-2 p-4 rounded bg-white flex border-1 flex-row items-center text-right border-gray-600 flex-row-reverse\">\r\n <div class=\"me-4 ms-4 text-gray-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('human')\" size=\"2x\"></fa-icon>\r\n </div>\r\n <div class=\"m-0 flex-grow\">\r\n <div class=\"inputs mt-2\">\r\n <form [formGroup]=\"form\">\r\n <div class=\"flex justify-end\">\r\n <div class=\"w-full\">\r\n <p-floatlabel variant=\"in\" class=\"w-full\">\r\n <input type=\"text\"\r\n id=\"message\"\r\n formControlName=\"message\"\r\n pInputText\r\n class=\"w-full\"/>\r\n <label for=\"message\">Nachricht</label>\r\n </p-floatlabel>\r\n <sftech-form-error-display [control]=\"form.get('message')!\"\r\n label=\"Nachricht\"></sftech-form-error-display>\r\n </div>\r\n </div>\r\n <div class=\"mt-2\">\r\n <p-button type=\"submit\" label=\"Senden\" (onClick)=\"run()\" tabindex=\"1\"></p-button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { MarkdownComponent } from 'ngx-markdown';\r\nimport { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat-message',\r\n imports: [NgClass, FaIconComponent, MarkdownComponent],\r\n templateUrl: './agent-chat-message.component.html',\r\n styleUrl: './agent-chat-message.component.css',\r\n})\r\nexport class AgentChatMessageComponent {\r\n public message = input('message');\r\n public type = input('type');\r\n\r\n public iconTextMapper = AgentRunIconTextDataprovider;\r\n\r\n public extractJson(message: string): string {\r\n const jsonMatch = message.match(/```json\\s*([\\s\\S]*?)\\s*```/);\r\n if (jsonMatch && jsonMatch[1]) {\r\n try {\r\n const data = JSON.parse(jsonMatch[1]);\r\n const md = this._toMarkdownFromJson(data);\r\n return md;\r\n } catch (e) {\r\n console.error('Failed to parse JSON:', e);\r\n return 'Invalid JSON';\r\n }\r\n }\r\n return 'No JSON found';\r\n }\r\n\r\n private _toMarkdownFromJson(obj: any): string {\r\n let md = '';\r\n\r\n for (const key of Object.keys(obj)) {\r\n const value = obj[key];\r\n\r\n // Überschrift für jede Kategorie\r\n md += `\\n### ${key}\\n\\n`;\r\n\r\n if (Array.isArray(value) && value.length && typeof value[0] === 'object') {\r\n // Tabellen-Header\r\n const headers = Object.keys(value[0]);\r\n md += `| ${headers.join(' | ')} |\\n`;\r\n md += `| ${headers.map(() => '---').join(' | ')} |\\n`;\r\n\r\n // Tabellen-Zeilen\r\n for (const row of value) {\r\n md += `| ${headers.map((h) => row[h]).join(' | ')} |\\n`;\r\n }\r\n md += '\\n';\r\n } else if (typeof value === 'object') {\r\n // Rekursiver Aufruf bei verschachtelten Objekten\r\n md += this._toMarkdownFromJson(value);\r\n } else {\r\n // Einfaches Feld\r\n md += `- **${key}:** ${value}\\n`;\r\n }\r\n }\r\n\r\n return md;\r\n }\r\n}\r\n","@if (type() === 'ai_loading') {\r\n <div class=\"flex items-center p-4 rounded-xl bg-green-50 shadow-sm border border-green-200\">\r\n <div class=\"me-4 ms-2 text-green-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" size=\"lg\"></fa-icon>\r\n </div>\r\n <div class=\"flex items-center space-x-3 text-gray-600\">\r\n <span class=\"text-sm\">Die Antwort wird ermittelt...</span>\r\n <div class=\"flex space-x-1\">\r\n <div class=\"w-2.5 h-2.5 bg-green-600 rounded-full animate-bounceDelay\"></div>\r\n <div class=\"w-2.5 h-2.5 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.32s]\"></div>\r\n <div class=\"w-2.5 h-2.5 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.16s]\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n\r\n@else if (type() === 'ai_failed') {\r\n <div class=\"flex items-center p-4 rounded-xl bg-red-50 shadow-sm border border-red-200\">\r\n <div class=\"me-4 ms-2 text-red-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" size=\"lg\"></fa-icon>\r\n </div>\r\n <div class=\"text-sm text-red-700\">\r\n {{ message() }}\r\n </div>\r\n </div>\r\n}\r\n\r\n@else {\r\n <div\r\n class=\"w-full p-4 rounded-xl shadow-sm flex gap-3\"\r\n [ngClass]=\"{\r\n 'bg-green-50 border border-green-200': type() === 'ai',\r\n 'bg-gray-100 border border-gray-200 flex-row-reverse text-right': type() === 'human',\r\n 'bg-yellow-50 border border-yellow-200': type() === 'system',\r\n }\"\r\n >\r\n <div\r\n class=\"flex-shrink-0 mt-1\"\r\n [ngClass]=\"{\r\n 'text-green-600': type() === 'ai',\r\n 'text-gray-500': type() === 'human',\r\n 'text-yellow-600': type() === 'system',\r\n }\"\r\n >\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType(type())\" size=\"lg\"></fa-icon>\r\n </div>\r\n\r\n <div class=\"w-full text-sm leading-relaxed\">\r\n @if (message().includes('```json')) {\r\n <div class=\"p-3 rounded-md text-gray-100 overflow-x-auto text-xs font-mono\">\r\n <markdown class=\"markdown-body\">{{ extractJson(message()) }}</markdown>\r\n </div>\r\n } @else {\r\n <markdown class=\"markdown-body\">{{ message() }}</markdown>\r\n }\r\n </div>\r\n </div>\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, OnDestroy, OnInit, ViewChild, computed, effect, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { EFilterOperator, EFilterTypes, ESortDirection, IconProvider, MappedApiError, MappedOdataResponse, OData, OdataFilter } from '@sftech/ng-shared';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ButtonDirective } from 'primeng/button';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Tooltip } from 'primeng/tooltip';\r\nimport { Subscription, map } from 'rxjs';\r\nimport { AgentRagUploadComponent } from '../../admin/agents/components/agent/agent-rag-upload/agent-rag-upload.component';\r\nimport { IChatMessageResponseDto } from '../../core/dtos/chat-message-response.dto';\r\nimport { EAgentRunStatus } from '../../core/enums/agent-run-status.enum';\r\nimport { AgentRun } from '../../core/models/agent-run.model';\r\nimport { Agent } from '../../core/models/agent.model';\r\nimport { ChatMessage } from '../../core/models/chat-message.model';\r\nimport { Chat } from '../../core/models/chat.model';\r\nimport { AgentRunService } from '../../core/service/agent-run.service';\r\nimport { AgentService } from '../../core/service/agent.service';\r\nimport { ChatService } from '../../core/service/chat.service';\r\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\r\nimport { AgentRunIconTextDataprovider } from '../core/dataprovider/agent-run-icon-text.dataprovider';\r\nimport { AgentChatMessageHumanInputInitialComponent } from './agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component';\r\nimport { AgentChatMessageHumanInputComponent } from './agent-chat-message-human-input/agent-chat-message-human-input.component';\r\nimport { AgentChatMessageComponent } from './agent-chat-message/agent-chat-message.component';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat',\r\n imports: [ButtonDirective, AgentChatMessageComponent, DatePipe, FaIconComponent, AgentChatMessageHumanInputInitialComponent, AgentChatMessageHumanInputComponent, Tooltip],\r\n providers: [DialogService],\r\n templateUrl: './agent-chat.component.html',\r\n styleUrl: './agent-chat.component.css',\r\n})\r\nexport class AgentChatComponent implements OnInit, OnDestroy {\r\n protected readonly activeRoute = inject(ActivatedRoute);\r\n protected readonly router = inject(Router);\r\n\r\n protected readonly agentService = inject(AgentService);\r\n protected readonly agentRunService = inject(AgentRunService);\r\n protected readonly chatService = inject(ChatService);\r\n protected readonly orchestratorService = inject(OrchestratorService);\r\n protected readonly messageService = inject(MessageService);\r\n private readonly dialogService = inject(DialogService);\r\n\r\n protected agent!: Agent;\r\n\r\n protected readonly agentRuns = signal<AgentRun[] | undefined>(undefined);\r\n\r\n protected selectedAgentRun = signal<AgentRun | undefined>(undefined);\r\n protected selectedAgent = signal<Agent | undefined>(undefined);\r\n\r\n @ViewChild('chatContainer') chatContainer?: ElementRef;\r\n\r\n public iconProvider = IconProvider;\r\n public iconTextMapper = AgentRunIconTextDataprovider;\r\n public agentRunStatus = EAgentRunStatus;\r\n\r\n public subscriptions: Subscription[] = [];\r\n\r\n protected selectedAgentRunChanged$ = effect(() => {\r\n if (!this.selectedAgentRun()) {\r\n return;\r\n }\r\n this._loadChat();\r\n });\r\n\r\n protected chatMessagesChanged$ = effect(() => {\r\n const messages = this.selectedAgentRun()?.chat?.messages;\r\n if (messages && messages.length > 0) {\r\n this.startScrollingStrategy();\r\n }\r\n });\r\n\r\n public loading = computed(() => {\r\n if (!this.selectedAgentRun()?.status) {\r\n return false;\r\n }\r\n return ![EAgentRunStatus.COMPLETED, EAgentRunStatus.CLARIFICATION_NEEDED, EAgentRunStatus.FAILED, EAgentRunStatus.INIT].includes(this.selectedAgentRun()!.status);\r\n });\r\n\r\n public ngOnInit(): void {\r\n const agentId = Number(this.activeRoute.snapshot.paramMap.get('agentId'));\r\n const agentRunId = Number(this.activeRoute.snapshot.paramMap.get('agentRunId'));\r\n if (agentId) {\r\n const odata = new OData();\r\n odata.filter.addAnd(new OdataFilter('agentId', agentId, EFilterOperator.EQUALS, EFilterTypes.NUMERIC));\r\n odata.order.column = 'updatedAt';\r\n odata.order.direction = ESortDirection.DESC;\r\n this.agentRunService\r\n .odata(odata)\r\n .pipe(\r\n map((res: MappedOdataResponse<AgentRun> | MappedApiError) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden der Chat-Daten',\r\n });\r\n throw new Error(res.messages.join('|'));\r\n }\r\n this.selectedAgentRun.set(res.data.items.find((ar) => agentRunId == ar.id));\r\n this.agentRuns.set(res.data.items);\r\n }),\r\n )\r\n .subscribe();\r\n this.agentService.get(agentId, true).subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden des Agenten-Daten',\r\n });\r\n throw new Error(res.messages.join('|'));\r\n }\r\n this.selectedAgent.set(res.data as Agent);\r\n });\r\n } else {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Laden des Agenten' });\r\n // this.router.navigate(['../chats']);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n }\r\n\r\n public startNewRun(): void {\r\n if (!this.selectedAgent()) {\r\n return;\r\n }\r\n const agentRun = new AgentRun();\r\n agentRun.agentId = this.selectedAgent()!.id;\r\n agentRun.agent = this.selectedAgent();\r\n agentRun.status = EAgentRunStatus.INIT;\r\n agentRun.createdAt = new Date();\r\n agentRun.chat = new Chat();\r\n const systemContextMessage = new ChatMessage();\r\n systemContextMessage.messageType = 'system';\r\n systemContextMessage.message = `${this.selectedAgent()!.llmSystemPrompt?.template}Antworte nach folgender Spezifikation:<br>${this.selectedAgent()?.answerSpecification}`;\r\n agentRun.chat.messages = [systemContextMessage];\r\n this.selectedAgentRun.set(agentRun);\r\n }\r\n\r\n public selectAgentRun(agentRun: AgentRun): void {\r\n this.selectedAgentRun.set(agentRun);\r\n\r\n if (this.selectedAgentRun()!.id) {\r\n this._setRelativeUrl();\r\n }\r\n }\r\n\r\n public startObservingAgentRun(agentRunId: number) {\r\n this.subscriptions.push(\r\n this.orchestratorService.observeAgentRun(agentRunId).subscribe({\r\n next: (update: AgentRun | MappedApiError) => {\r\n if (update instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\r\n return;\r\n }\r\n this.selectedAgentRun.update((agentRun) => {\r\n return this._mapUpdateOnAgentRun(agentRun!, update);\r\n });\r\n if (update.id && this.agentRuns()?.filter((ars) => ars.id === update.id).length === 0) {\r\n this.agentRuns.update((ars) => {\r\n ars?.unshift(update);\r\n return ars;\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\r\n console.error('Error observing agent run:', err);\r\n },\r\n complete: () => {\r\n console.log('Completed observing agent run');\r\n },\r\n }),\r\n );\r\n }\r\n\r\n public goBack() {\r\n const index = this.router.url.indexOf('/agent/');\r\n const result = this.router.url.substring(0, index);\r\n this.router.navigateByUrl(result);\r\n }\r\n\r\n private _loadChat(): void {\r\n if (!this.selectedAgentRun() || !this.selectedAgentRun()!.chatId) {\r\n return;\r\n }\r\n this.chatService.get(this.selectedAgentRun()!.chatId!, true).subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden der Chat-Daten',\r\n });\r\n return;\r\n }\r\n this.selectedAgentRun.update((ar) => {\r\n ar!.chat = res.data as Chat;\r\n return ar;\r\n });\r\n this.startScrollingStrategy();\r\n });\r\n }\r\n\r\n private _setRelativeUrl() {\r\n let relativeUrl: string;\r\n if (this.router.url.includes('/r/')) {\r\n const index = this.router.url.indexOf('/r/') + 3; // 3 = Länge von \"/r/\"\r\n const result = this.router.url.substring(0, index);\r\n\r\n relativeUrl = `${result}${this.selectedAgentRun()!.id}`;\r\n } else {\r\n relativeUrl = `r/${this.selectedAgentRun()!.id}`;\r\n }\r\n this.router.navigate([relativeUrl], {\r\n relativeTo: this.activeRoute,\r\n replaceUrl: true, // überschreibt den Verlauf\r\n skipLocationChange: false, // false = URL sichtbar, true = nur intern\r\n });\r\n }\r\n\r\n private _mapUpdateOnAgentRun(agentRun: AgentRun, update: AgentRun): AgentRun {\r\n if (!agentRun.chat?.messages && !update.chat?.messages) {\r\n return update;\r\n }\r\n\r\n if (!update.chat && agentRun.chat) {\r\n update.chat = agentRun.chat;\r\n }\r\n\r\n if (agentRun.chat?.messages && update.chat!.messages.length <= agentRun.chat!.messages.length) {\r\n update.chat!.messages = agentRun.chat!.messages;\r\n }\r\n console.log('Mapped AgentRun:', update.chat!.messages.length, agentRun.chat!.messages.length);\r\n return update;\r\n }\r\n\r\n public openRagUploadModal(): void {\r\n const agent = this.selectedAgent();\r\n const chatId = this.selectedAgentRun()?.chatId;\r\n\r\n if (!agent) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Fehler',\r\n detail: 'Agent nicht gefunden',\r\n });\r\n return;\r\n }\r\n\r\n const header = chatId ? 'RAG-Dokumente für Chat hochladen' : 'RAG-Dokumente für Agent hochladen';\r\n\r\n this.dialogService.open(AgentRagUploadComponent, {\r\n inputValues: { agentId: agent.id, chatId },\r\n focusOnShow: false,\r\n modal: true,\r\n dismissableMask: true,\r\n header: header,\r\n width: '50%',\r\n contentStyle: { overflow: 'auto' },\r\n });\r\n }\r\n\r\n private startScrollingStrategy(): void {\r\n this.scrollToBottom();\r\n\r\n // Fallback-Scrolls für langsames Markdown-Rendering\r\n [100, 500, 1000, 2000].forEach((delay) => {\r\n setTimeout(() => this.scrollToBottom(), delay);\r\n });\r\n }\r\n\r\n private scrollToBottom(): void {\r\n if (!this.chatContainer?.nativeElement) {\r\n return;\r\n }\r\n\r\n const container = this.chatContainer.nativeElement;\r\n container.scrollTop = container.scrollHeight - container.clientHeight;\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full shadow-lg\">\r\n <!-- Header über gesamte Breite -->\r\n @if (selectedAgent()) {\r\n <div class=\"border-b border-gray-300 px-4 py-3 flex items-center bg-white\">\r\n <div class=\"flex items-center gap-3 flex-1\">\r\n <button pButton\r\n type=\"button\"\r\n class=\"p-button-text p-button-rounded\"\r\n (click)=\"goBack()\"\r\n [pTooltip]=\"'Zurück'\"\r\n tooltipPosition=\"bottom\"\r\n tabindex=\"2\">\r\n <fa-icon [icon]=\"iconProvider.back\" size=\"lg\"></fa-icon>\r\n </button>\r\n @if (selectedAgentRun()) {\r\n <h2 class=\"text-xl font-semibold\">\r\n Agent: {{ selectedAgent()?.name }}\r\n vom {{ (selectedAgentRun()?.createdAt ?? selectedAgentRun()?.startedAt | date:'dd.MM.yyyy - hh:mm') }}\r\n </h2>\r\n } @else {\r\n <h2 class=\"text-xl font-semibold\">\r\n Agent: {{ selectedAgent()?.name }}\r\n </h2>\r\n }\r\n </div>\r\n <button pButton\r\n type=\"button\"\r\n class=\"p-button-sm\"\r\n (click)=\"startNewRun()\"\r\n tabindex=\"3\">\r\n <fa-icon [icon]=\"iconProvider.add\" class=\"mr-2\"></fa-icon>\r\n Neuer Chat\r\n </button>\r\n <div class=\"flex items-center gap-3 flex-1 justify-end\">\r\n @if (selectedAgentRun()) {\r\n @if (selectedAgent()?.ragProvider && selectedAgent()?.ragModel) {\r\n <button pButton\r\n type=\"button\"\r\n class=\"p-button-text p-button-rounded\"\r\n (click)=\"openRagUploadModal()\"\r\n [pTooltip]=\"'RAG-Dokumente hochladen'\"\r\n tooltipPosition=\"bottom\">\r\n <fa-icon [icon]=\"iconProvider.documentAdd\" size=\"lg\"></fa-icon>\r\n </button>\r\n }\r\n <div [pTooltip]=\"'Status: ' + iconTextMapper.getTextForStatus(selectedAgentRun()?.status)\"\r\n tooltipPosition=\"bottom\"\r\n class=\"cursor-help\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForStatus(selectedAgentRun()?.status)\"\r\n [classList]=\"iconTextMapper.getIconClassesForStatus(selectedAgentRun()?.status)\"\r\n [animation]=\"selectedAgentRun()?.status === 'running' ? 'spin' : undefined\"\r\n size=\"lg\"></fa-icon>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Sidebar + Chat nebeneinander -->\r\n <div class=\"flex flex-1 min-h-0 overflow-hidden\">\r\n <div class=\"chats-panel border-r-1 border-gray-300 p-4 w-[250px] h-full flex-shrink-0 overflow-y-auto\">\r\n @if (agentRuns() === undefined) {\r\n <p class=\"m-0\">\r\n Die Chats werden geladen...\r\n </p>\r\n } @else if (!agentRuns()?.length) {\r\n <p class=\"m-0\">\r\n Bisher noch keine Chats vorhanden\r\n </p>\r\n } @else {\r\n <div class=\"flex flex-col gap-1\">\r\n @for (agentRun of agentRuns(); track agentRun) {\r\n <div class=\"border border-gray-300 rounded-lg p-4 hover:shadow-lg transition cursor-pointer\"\r\n (click)=\"selectAgentRun(agentRun)\"\r\n [class.bg-blue-100]=\"selectedAgentRun()?.id === agentRun.id\">\r\n <div class=\"text-sm text-gray-500\">{{ agentRun.createdAt | date:'dd.MM.YY - hh:mm' }}</div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"chat bg-gray-50 flex-1 relative\">\r\n @if (selectedAgentRun() === undefined) {\r\n <div class=\"flex items-center justify-center h-full\">\r\n <p class=\"m-0 text-gray-500\">\r\n Bitte einen Chat aus der linken Liste auswählen\r\n </p>\r\n </div>\r\n } @else if (selectedAgent() === undefined) {\r\n <div class=\"flex items-center justify-center h-full\">\r\n <p class=\"m-0 text-gray-500\">\r\n Die Chat-Daten werden geladen...\r\n </p>\r\n </div>\r\n } @else {\r\n <div class=\"absolute inset-0 overflow-y-auto p-3\" #chatContainer>\r\n @if (selectedAgentRun()!.chat) {\r\n @for (message of selectedAgentRun()!.chat!.messages; track message.id) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message [message]=\"message.message\"\r\n [type]=\"message.messageType\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n }\r\n @if (selectedAgentRun()!.status === agentRunStatus.INIT) {\r\n <sftech-agent-chat-message-human-input-initial [agent]=\"selectedAgent()\"\r\n (agentRunIdReceived)=\"startObservingAgentRun($event)\"></sftech-agent-chat-message-human-input-initial>\r\n }\r\n @if (loading()) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message [message]=\"'Am Überlegen'\"\r\n [type]=\"'ai_loading'\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n @if (selectedAgentRun()?.status === agentRunStatus.FAILED) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message\r\n [message]=\"'Es ist ein Fehler aufgetreten! Bitte versuche es zu einem späteren Zeitpunkt erneut.'\"\r\n [type]=\"'ai_failed'\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n @if (selectedAgentRun()!.status === agentRunStatus.COMPLETED) {\r\n <sftech-agent-chat-message-human-input [agent]=\"selectedAgent()\"\r\n [agentRunId]=\"selectedAgentRun()!.id\"\r\n (agentRunIdReceived)=\"startObservingAgentRun(selectedAgentRun()!.id!)\"></sftech-agent-chat-message-human-input>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, inject, signal } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BaseListComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Panel } from 'primeng/panel';\r\nimport { IAgentCreateDto } from '../../core/dtos/agent-create-request.dto';\r\nimport { IAgentResponseDto } from '../../core/dtos/agent-response.dto';\r\nimport { Agent } from '../../core/models/agent.model';\r\nimport { McpTool } from '../../core/models/mcp-tool.model';\r\nimport { AgentService } from '../../core/service/agent.service';\r\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\r\n\r\n@Component({\r\n selector: 'sftech-agent-selection',\r\n imports: [Panel, RouterLink],\r\n providers: [DialogService],\r\n templateUrl: './agent-selection.component.html',\r\n styleUrl: './agent-selection.component.css',\r\n})\r\nexport class AgentSelectionComponent extends BaseListComponent<Agent, IAgentCreateDto, IAgentCreateDto, IAgentResponseDto> implements OnInit {\r\n protected _repo = inject(AgentService);\r\n protected _route = 'chats/agents';\r\n\r\n protected orchestratorService = inject(OrchestratorService);\r\n protected messageService = inject(MessageService);\r\n protected iconProvider = IconProvider;\r\n\r\n public tools = signal<McpTool[] | undefined>(undefined);\r\n\r\n public override ngOnInit() {\r\n super.ngOnInit();\r\n this.orchestratorService.getTools().subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Fehler', detail: res.messages.join('|') });\r\n return;\r\n }\r\n this.tools.set(res.data);\r\n });\r\n }\r\n\r\n public getToolNames(agent: Agent) {\r\n if (!agent.tools || agent.tools.length === 0) {\r\n return 'Keine Tools';\r\n }\r\n return agent.tools\r\n .map((tool) => this.tools()?.find((t) => t.identifier === tool)?.name)\r\n .filter((name) => !!name)\r\n .join(' | ');\r\n }\r\n}\r\n","<div class=\"p-2\">\r\n\r\n <h2 class=\"pt-4 text-2xl font-bold mb-4\">Agenten Auswahl</h2>\r\n\r\n @if (data() === undefined) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n } @else if (!data()?.length) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Keine Daten vorhanden\r\n </p>\r\n </p-panel>\r\n } @else {\r\n <div class=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\r\n @for (agent of data(); track agent) {\r\n <div\r\n class=\"aspect-square flex flex-col justify-between p-5 rounded-xl bg-white shadow-md border border-gray-200 hover:shadow-lg hover:scale-[1.02] transition cursor-pointer\"\r\n [routerLink]=\"['agent/' + agent.id]\"\r\n >\r\n <div>\r\n <div class=\"flex items-center gap-2 mb-4\">\r\n <div class=\"w-10 h-10 rounded-full bg-primary-100 text-primary-700 flex items-center justify-center font-bold\">\r\n {{ agent.name[0] }}\r\n </div>\r\n <h2 class=\"text-lg font-semibold\">{{ agent.name }}</h2>\r\n </div>\r\n <p class=\"text-gray-600 text-sm leading-snug line-clamp-3\">{{ agent.description }}</p>\r\n </div>\r\n <div class=\"flex flex-wrap gap-2 mt-4 border-t-1 border-gray-200 pt-2\">\r\n <span class=\"text-gray-500 text-xs font-medium px-2 py-0.5 rounded\">{{ getToolNames(agent) }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sftech-chats',\r\n imports: [RouterOutlet],\r\n template: '<router-outlet></router-outlet>',\r\n styles: ':host { display: block; height: 100%; overflow: hidden; }',\r\n})\r\nexport class ChatsComponent {}\r\n","import { AuthenticationGuard } from '@sftech/ng-auth';\r\nimport { AgentChatComponent } from './agent-chat/agent-chat.component';\r\nimport { AgentSelectionComponent } from './agent-selection/agent-selection.component';\r\nimport { ChatsComponent } from './chats.component';\r\n\r\nexport const chatsRoutes = [\r\n {\r\n path: '',\r\n component: ChatsComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: AgentSelectionComponent,\r\n },\r\n {\r\n path: 'agent/:agentId/r/:agentRunId',\r\n component: AgentChatComponent,\r\n },\r\n {\r\n path: 'agent/:agentId',\r\n component: AgentChatComponent,\r\n },\r\n ],\r\n canActivate: [AuthenticationGuard],\r\n },\r\n];\r\n"],"names":["AgentRunIconTextDataprovider","i1"],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, Component } from '@angular/core';
3
- import { BaseListComponent, IconProvider, PaginatorComponent } from '@sftech/ng-shared';
4
- import { DialogService } from 'primeng/dynamicdialog';
5
- import { Panel } from 'primeng/panel';
6
- import * as i1 from 'primeng/table';
7
- import { TableModule } from 'primeng/table';
8
- import { P as PromptService, a as PromptDisplayComponent } from './sftech-ng-orchestrator-prompt-display.component-BkSLQgGU.mjs';
9
- import { RouterOutlet } from '@angular/router';
10
-
11
- class PromptsListComponent extends BaseListComponent {
12
- _repo = inject(PromptService);
13
- _route = 'prompts';
14
- _modalComponent = PromptDisplayComponent;
15
- detailModalHeaderText = 'Prompt-Details';
16
- iconProvider = IconProvider;
17
- constructor() {
18
- super();
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PromptsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: PromptsListComponent, isStandalone: true, selector: "sftech-prompts-list", providers: [DialogService], usesInheritance: true, ngImport: i0, template: "<h1 class=\"text-primary-900 font-bold text-xl p-2 my-4\">Prompt-\u00DCbersicht</h1>\r\n@if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length > 0) {\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n}\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: PaginatorComponent, selector: "sftech-paginator", inputs: ["pagination"], outputs: ["odataChanged"] }, { kind: "component", type: Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }] });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PromptsListComponent, decorators: [{
24
- type: Component,
25
- args: [{ selector: 'sftech-prompts-list', imports: [PaginatorComponent, Panel, TableModule], providers: [DialogService], template: "<h1 class=\"text-primary-900 font-bold text-xl p-2 my-4\">Prompt-\u00DCbersicht</h1>\r\n@if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length > 0) {\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n}\r\n\r\n" }]
26
- }], ctorParameters: () => [] });
27
-
28
- class PromptsComponent {
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PromptsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PromptsComponent, isStandalone: true, selector: "sftech-prompts", ngImport: i0, template: "<router-outlet></router-outlet>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PromptsComponent, decorators: [{
33
- type: Component,
34
- args: [{ selector: 'sftech-prompts', imports: [RouterOutlet], template: "<router-outlet></router-outlet>\r\n\r\n" }]
35
- }] });
36
-
37
- const promptsRoutes = [
38
- {
39
- path: '',
40
- component: PromptsComponent,
41
- children: [
42
- {
43
- path: '',
44
- component: PromptsListComponent,
45
- },
46
- ],
47
- },
48
- ];
49
-
50
- export { promptsRoutes };
51
- //# sourceMappingURL=sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompts-list/prompts-list.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompts-list/prompts-list.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.routes.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\r\nimport { BaseListComponent, IconProvider, PaginatorComponent } from '@sftech/ng-shared';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Panel } from 'primeng/panel';\r\nimport { TableModule } from 'primeng/table';\r\nimport { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';\r\nimport { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';\r\nimport { Prompt } from '../../../../../core/models/prompt.model';\r\nimport { PromptService } from '../../../../../core/service/prompt.service';\r\nimport { PromptDisplayComponent } from '../prompt-display/prompt-display.component';\r\n\r\n@Component({\r\n selector: 'sftech-prompts-list',\r\n imports: [PaginatorComponent, Panel, TableModule],\r\n providers: [DialogService],\r\n templateUrl: './prompts-list.component.html',\r\n styleUrl: './prompts-list.component.css',\r\n})\r\nexport class PromptsListComponent extends BaseListComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {\r\n protected _repo = inject(PromptService);\r\n protected _route = 'prompts';\r\n protected override _modalComponent = PromptDisplayComponent;\r\n protected override detailModalHeaderText = 'Prompt-Details';\r\n\r\n public iconProvider = IconProvider;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<h1 class=\"text-primary-900 font-bold text-xl p-2 my-4\">Prompt-Übersicht</h1>\r\n@if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n} @else if (data()!.length > 0) {\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n}\r\n\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sftech-prompts',\r\n imports: [RouterOutlet],\r\n templateUrl: './prompts.component.html',\r\n styleUrl: './prompts.component.css',\r\n})\r\nexport class PromptsComponent {}\r\n","<router-outlet></router-outlet>\r\n\r\n","import { PromptsListComponent } from './components/prompt/prompts-list/prompts-list.component';\r\nimport { PromptsComponent } from './prompts.component';\r\n\r\nexport const promptsRoutes = [\r\n {\r\n path: '',\r\n component: PromptsComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: PromptsListComponent,\r\n },\r\n ],\r\n },\r\n];\r\n"],"names":[],"mappings":";;;;;;;;;;AAkBM,MAAO,oBAAqB,SAAQ,iBAAiF,CAAA;AAC7G,IAAA,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,GAAG,SAAS;IACT,eAAe,GAAG,sBAAsB;IACxC,qBAAqB,GAAG,gBAAgB;IAEpD,YAAY,GAAG,YAAY;AAElC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;wGATF,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAJlB,CAAC,aAAa,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd9B,6hDAyCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5Bc,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKvC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACI,qBAAqB,EAAA,OAAA,EACtB,CAAC,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,EAAA,SAAA,EACtC,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,6hDAAA,EAAA;;;MELjB,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT7B,yCAEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGc,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,gBAAgB,EAAA,OAAA,EACjB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,yCAAA,EAAA;;;AEFd,MAAA,aAAa,GAAG;AACzB,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,oBAAoB;AAClC,aAAA;AACJ,SAAA;AACJ,KAAA;;;;;"}