@sftech/ng-orchestrator 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs → sftech-ng-orchestrator-agent-rag-upload.component-D3c3yDEQ.mjs} +2 -2
- package/fesm2022/{sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs.map → sftech-ng-orchestrator-agent-rag-upload.component-D3c3yDEQ.mjs.map} +1 -1
- package/fesm2022/{sftech-ng-orchestrator-agents.routes-DH_0cd5T.mjs → sftech-ng-orchestrator-agents.routes-a-biG3wv.mjs} +4 -4
- package/fesm2022/sftech-ng-orchestrator-agents.routes-a-biG3wv.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-chats.routes-CqFuG3l5.mjs → sftech-ng-orchestrator-chats.routes-DSlx52sA.mjs} +7 -8
- package/fesm2022/sftech-ng-orchestrator-chats.routes-DSlx52sA.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-CXGtE_Ui.mjs → sftech-ng-orchestrator-prompt-display.component-DM5L2ykm.mjs} +2 -2
- package/fesm2022/sftech-ng-orchestrator-prompt-display.component-DM5L2ykm.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator-prompt.model-DhASegzq.mjs.map +1 -1
- package/fesm2022/{sftech-ng-orchestrator-prompts.routes-CvMtYkTK.mjs → sftech-ng-orchestrator-prompts.routes-DThT4R9P.mjs} +2 -2
- package/fesm2022/sftech-ng-orchestrator-prompts.routes-DThT4R9P.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs → sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs} +4 -4
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/sftech-ng-orchestrator-agents.routes-DH_0cd5T.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-chats.routes-CqFuG3l5.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-prompt-display.component-CXGtE_Ui.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-prompts.routes-CvMtYkTK.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftech-ng-orchestrator-chats.routes-DSlx52sA.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';\nimport { Inject, Injectable } from '@angular/core';\nimport { BaseDbApiService, MappedApiError, MappedApiResponse } from '@sftech/ng-shared';\nimport { Observable } from 'rxjs';\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\nimport { IAgentRunCreateRequestDto } from '../dtos/agent-run-create-request.dto';\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\nimport { AgentRun } from '../models/agent-run.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AgentRunService extends BaseDbApiService<AgentRun, IAgentRunCreateRequestDto, IAgentRunResponseDto, IAgentRunResponseDto> {\n constructor(\n protected override readonly http: HttpClient,\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\n ) {\n super(http, config);\n this.url = `${this.config.orchestratorDbUrl}/agent-runs`;\n }\n\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\n override insert(dto: IAgentRunCreateRequestDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\n throw new Error('Method not implemented');\n }\n\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\n override update(id: number, dto: IAgentRunResponseDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\n throw new Error('Method not implemented');\n }\n\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\n override delete(id: number): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\n throw new Error('Method not implemented');\n }\n\n protected getNewModel(): AgentRun {\n return new AgentRun();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { BaseDbApiService, IApiResponse, IOdataResponseDto, MappedApiError, MappedApiResponse, MappedOdataResponse, OData } from '@sftech/ng-shared';\nimport { Observable, catchError, map } from 'rxjs';\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\nimport { IChatCreateRequestDto } from '../dtos/chat-create-request.dto';\nimport { IChatResponseDto } from '../dtos/chat-response.dto';\nimport { IChatUpdateRequestDto } from '../dtos/chat-update-request.dto';\nimport { Chat } from '../models/chat.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ChatService extends BaseDbApiService<Chat, IChatCreateRequestDto, IChatUpdateRequestDto, IChatResponseDto> {\n constructor(\n protected override readonly http: HttpClient,\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\n ) {\n super(http, config);\n this.url = `${this.config.orchestratorDbUrl}/chats`;\n }\n\n public override odata(odataQuery: OData): Observable<MappedOdataResponse<Chat> | MappedApiError> {\n return this.http.get<IApiResponse<IOdataResponseDto<IChatResponseDto>>>(`${this.url}/${odataQuery.toGetParameter()}`).pipe(\n map((response: IApiResponse<IOdataResponseDto<IChatResponseDto>>) => this.responseOdataMapping(response)),\n catchError((error) => {\n return this.httpErrorToApiResponse(error);\n }),\n );\n }\n\n public override insert(dto: IChatCreateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\n return this.http.post<IApiResponse<IChatResponseDto>>(this.url, dto).pipe(\n map((response: IApiResponse<IChatResponseDto>) => this.responseMapping(response)),\n catchError((error) => {\n return this.httpErrorToApiResponse(error);\n }),\n );\n }\n\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\n public override update(id: number, dto: IChatUpdateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\n throw new Error('update of a chat is not allowed');\n }\n\n protected override getNewModel(): Chat {\n return new Chat();\n }\n}\n","import { faBrain, faCheck, faCircleQuestion, faClipboardCheck, faCog, faLaptop, faNetworkWired, faNoteSticky, faSpinner, faUser, faXmark } from '@fortawesome/free-solid-svg-icons';\nimport { IconProvider } from '@sftech/ng-shared';\n\nexport class OrchestratorIconProvider extends IconProvider {\n public static readonly agentRunStatusInit = faNoteSticky;\n public static readonly agentRunStatusRunning = faCog;\n public static readonly agentRunStatusCompleted = faCheck;\n public static readonly agentRunStatusFailed = faXmark;\n public static readonly agentRunStatusPrerun = faSpinner;\n public static readonly agentRunStatusPostrun = faClipboardCheck;\n public static readonly agentRunStatusClarify = faCircleQuestion;\n\n public static readonly messageTypeAI = faBrain;\n public static readonly messageTypeHuman = faUser;\n public static readonly messageTypeSystem = faNetworkWired;\n}\n","import { IconDefinition } from '@fortawesome/angular-fontawesome';\nimport { IconProvider } from '@sftech/ng-shared';\nimport { OrchestratorIconProvider } from '../../../core/dataprovider/orchestrator-icon.provider';\nimport { EAgentRunStatus } from '../../../core/enums/agent-run-status.enum';\n\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\nexport class AgentRunIconTextDataprovider {\n private static readonly UNKNOWN_TEXT = 'Unbekannt';\n\n public static getTextForStatus(status: EAgentRunStatus | undefined): string {\n if (!status) {\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\n }\n switch (status) {\n case EAgentRunStatus.INIT:\n return 'Anlage';\n case EAgentRunStatus.RUNNING:\n return 'In Bearbeitung';\n case EAgentRunStatus.COMPLETED:\n return 'Abgeschlossen';\n case EAgentRunStatus.FAILED:\n return 'Fehlgeschlagen';\n case EAgentRunStatus.CLARIFICATION_NEEDED:\n return 'Rückfrage';\n case EAgentRunStatus.PRERUNNING:\n return 'Vorbereitung';\n case EAgentRunStatus.POSTRUNNING:\n return 'Nachbereitung';\n default:\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\n }\n }\n\n public static getIconForStatus(status: EAgentRunStatus | undefined): IconDefinition {\n if (!status) {\n return IconProvider.unknown;\n }\n switch (status) {\n case EAgentRunStatus.INIT:\n return OrchestratorIconProvider.agentRunStatusInit;\n case EAgentRunStatus.RUNNING:\n return OrchestratorIconProvider.agentRunStatusRunning;\n case EAgentRunStatus.COMPLETED:\n return OrchestratorIconProvider.agentRunStatusCompleted;\n case EAgentRunStatus.FAILED:\n return OrchestratorIconProvider.agentRunStatusFailed;\n case EAgentRunStatus.CLARIFICATION_NEEDED:\n return OrchestratorIconProvider.agentRunStatusClarify;\n case EAgentRunStatus.PRERUNNING:\n return OrchestratorIconProvider.agentRunStatusPrerun;\n case EAgentRunStatus.POSTRUNNING:\n return OrchestratorIconProvider.agentRunStatusPostrun;\n default:\n return IconProvider.unknown;\n }\n }\n\n public static getIconClassesForStatus(status: EAgentRunStatus | undefined): string {\n if (!status) {\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\n }\n switch (status) {\n case EAgentRunStatus.INIT:\n return '';\n case EAgentRunStatus.RUNNING:\n return 'text-primary-600';\n case EAgentRunStatus.COMPLETED:\n return 'text-green-600';\n case EAgentRunStatus.FAILED:\n return 'text-red-600';\n case EAgentRunStatus.CLARIFICATION_NEEDED:\n return '';\n case EAgentRunStatus.PRERUNNING:\n return '';\n case EAgentRunStatus.POSTRUNNING:\n return '';\n default:\n return '';\n }\n }\n\n public static getIconForMessageType(messageType: string): IconDefinition {\n switch (messageType) {\n case 'system':\n return OrchestratorIconProvider.messageTypeSystem;\n case 'human':\n return OrchestratorIconProvider.messageTypeHuman;\n case 'ai':\n return OrchestratorIconProvider.messageTypeAI;\n default:\n return IconProvider.unknown;\n }\n }\n}\n","import { Component, EventEmitter, Output, SecurityContext, effect, inject, input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { FormErrorDisplayComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\nimport { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';\nimport { MessageService } from 'primeng/api';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputText } from 'primeng/inputtext';\nimport { Agent } from '../../../core/models/agent.model';\n\nimport { OrchestratorService } from '../../../core/service/orchestrator.service';\n\n@Component({\n selector: 'sftech-agent-chat-message-human-input-initial',\n imports: [FaIconComponent, FloatLabel, FormErrorDisplayComponent, InputText, ReactiveFormsModule],\n templateUrl: './agent-chat-message-human-input-initial.component.html',\n styleUrl: './agent-chat-message-human-input-initial.component.css',\n})\nexport class AgentChatMessageHumanInputInitialComponent {\n public agent = input<Agent>();\n\n @Output() agentRunIdReceived = new EventEmitter<number>();\n\n public messageService = inject(MessageService);\n public orchestratorService = inject(OrchestratorService);\n private sanitizer = inject(DomSanitizer);\n\n public form = new FormGroup({});\n public isSubmitting = false;\n\n protected readonly iconTextMapper = AgentRunIconTextDataprovider;\n protected readonly iconProvider = IconProvider;\n\n private _agentChanged$ = effect(() => {\n this.agent()!\n .llmUserPrompt?.template.match(/{{(.*?)}}/g)\n ?.forEach((m: string) => {\n const key = m.slice(2, -2);\n this.form.addControl(key, new FormControl('', [Validators.required]));\n });\n });\n\n public run(): void {\n if (this.form!.invalid || this.isSubmitting) {\n // Mark all fields as touched to show validation errors\n Object.keys(this.form.controls).forEach((key) => {\n this.form.get(key)?.markAsTouched();\n });\n return;\n }\n\n this.isSubmitting = true;\n\n this.orchestratorService\n .runAgent({\n agentIdentifier: this.agent()!.identifier,\n userInput: this.form!.value,\n })\n .subscribe({\n next: (res) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({\n severity: 'error',\n summary: 'Fehler',\n detail: res.messages.join(' | '),\n });\n this.isSubmitting = false;\n return;\n }\n this.agentRunIdReceived.emit(res);\n this.isSubmitting = false;\n },\n error: () => {\n this.isSubmitting = false;\n },\n });\n }\n\n public getInputFormControlNames(): string[] {\n return Object.keys(this.form!.controls);\n }\n\n public formatControlName(name: string): string {\n // Convert camelCase or snake_case to readable format\n return name\n .replace(/([A-Z])/g, ' $1')\n .replace(/_/g, ' ')\n .trim()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n }\n\n public getFormattedTemplate(): string | null {\n const template = this.agent()!.llmUserPrompt?.template || '';\n\n // First sanitize the template to remove any malicious content\n const sanitizedTemplate = this.sanitizer.sanitize(SecurityContext.HTML, template) || '';\n\n // Replace {{variable}} with highlighted spans (variables are now safe after sanitization)\n const formatted = sanitizedTemplate.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"inline-flex items-center px-2 py-1 mx-1 bg-primary-100 text-primary-700 rounded-md font-semibold text-sm border border-primary-200\">$1</span>');\n\n return this.sanitizer.sanitize(SecurityContext.HTML, formatted);\n }\n}\n","<div class=\"my-4 max-w-4xl mx-auto\">\n <!-- Welcome Card -->\n <div class=\"bg-gradient-to-br from-primary-50 to-white rounded-2xl shadow-lg border-2 border-primary-200 p-6 mb-4\">\n <div class=\"flex items-start gap-4\">\n <div class=\"flex-shrink-0\">\n <div class=\"w-12 h-12 rounded-xl bg-gradient-to-br from-primary-500 to-primary-600 flex items-center justify-center text-white shadow-md\">\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('human')\" size=\"lg\"></fa-icon>\n </div>\n </div>\n <div class=\"flex-grow\">\n <h3 class=\"text-xl font-bold text-gray-900 mb-2 flex items-center gap-2\">\n <fa-icon [icon]=\"iconProvider.sparkles\" class=\"text-primary-600\"></fa-icon>\n Chat starten mit {{ agent()!.name }}\n </h3>\n <p class=\"text-gray-600 text-sm mb-4\">\n Fülle die Felder aus, um die Konversation zu beginnen. Der Agent wird basierend auf deinen Eingaben antworten.\n </p>\n\n <!-- Template Display -->\n @if (agent()!.llmUserPrompt?.template) {\n <div class=\"bg-white rounded-lg p-4 border border-primary-100 shadow-sm\">\n <div class=\"flex items-center gap-2 mb-2\">\n <fa-icon [icon]=\"iconProvider.message\" class=\"text-primary-600 text-sm\"></fa-icon>\n <span class=\"text-xs font-semibold text-primary-700 uppercase tracking-wide\">Prompt Template</span>\n </div>\n <div class=\"text-gray-700 leading-relaxed\" [innerHTML]=\"getFormattedTemplate()\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Input Form Card -->\n <div class=\"bg-white rounded-2xl shadow-lg border border-gray-200 p-6\">\n <form [formGroup]=\"form!\" (ngSubmit)=\"run()\">\n <!-- Input Fields -->\n @if (getInputFormControlNames().length > 0) {\n <div class=\"mb-6\">\n <div class=\"flex items-center gap-2 mb-4\">\n <fa-icon [icon]=\"iconProvider.documentAdd\" class=\"text-gray-600\"></fa-icon>\n <h4 class=\"font-semibold text-gray-900\">Erforderliche Informationen</h4>\n </div>\n <div class=\"space-y-4\">\n @for (controlName of getInputFormControlNames(); track controlName) {\n <div class=\"relative\">\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input\n type=\"text\"\n id=\"{{ controlName }}\"\n formControlName=\"{{ controlName }}\"\n pInputText\n [class.border-red-500]=\"form!.get(controlName)?.invalid && form!.get(controlName)?.touched\"\n class=\"w-full px-4 py-3 border-2 border-gray-300 rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-600 focus:border-primary-600 transition-all bg-white\"\n [tabindex]=\"getInputFormControlNames().indexOf(controlName) + 1\"\n />\n <label for=\"{{ controlName }}\" class=\"text-gray-600\">\n {{ formatControlName(controlName) }}\n </label>\n </p-floatlabel>\n <sftech-form-error-display\n [control]=\"form!.get(controlName)!\"\n [label]=\"formatControlName(controlName)\"\n ></sftech-form-error-display>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Submit Button -->\n <div class=\"flex items-center justify-between pt-4 border-t border-gray-100\">\n <div class=\"text-sm text-gray-500\">\n <fa-icon [icon]=\"iconProvider.sparkles\" class=\"mr-1\"></fa-icon>\n @if (!isSubmitting) {\n <span>Bereit zum Senden</span>\n }\n @if (isSubmitting) {\n <span>Wird verarbeitet...</span>\n }\n </div>\n <button\n type=\"submit\"\n [disabled]=\"form!.invalid || isSubmitting\"\n class=\"px-6 py-3 bg-gradient-to-r from-primary-600 to-primary-700 text-white font-semibold rounded-xl shadow-md hover:shadow-lg hover:from-primary-700 hover:to-primary-800 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center gap-2\"\n [tabindex]=\"getInputFormControlNames().length + 1\"\n >\n @if (isSubmitting) {\n <fa-icon [icon]=\"iconProvider.loading\" [animation]=\"'spin'\"></fa-icon>\n <span>Wird gesendet...</span>\n } @else {\n <fa-icon [icon]=\"iconProvider.sparkles\"></fa-icon>\n <span>Chat starten</span>\n }\n </button>\n </div>\n </form>\n </div>\n </div>","import { Component, EventEmitter, Output, inject, input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { FormErrorDisplayComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\nimport { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';\nimport { MessageService } from 'primeng/api';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputText } from 'primeng/inputtext';\nimport { Agent } from '../../../core/models/agent.model';\nimport { OrchestratorService } from '../../../core/service/orchestrator.service';\n\n@Component({\n selector: 'sftech-agent-chat-message-human-input',\n imports: [FaIconComponent, FloatLabel, FormErrorDisplayComponent, InputText, ReactiveFormsModule],\n templateUrl: './agent-chat-message-human-input.component.html',\n styleUrl: './agent-chat-message-human-input.component.css',\n})\nexport class AgentChatMessageHumanInputComponent {\n public agent = input<Agent>();\n public agentRunId = input<number>();\n\n @Output() agentRunIdReceived = new EventEmitter<number>();\n\n public messageService = inject(MessageService);\n public orchestratorService = inject(OrchestratorService);\n\n public form = new FormGroup({\n message: new FormControl('', [Validators.required]),\n });\n\n public isSubmitting = false;\n\n protected readonly iconTextMapper = AgentRunIconTextDataprovider;\n protected readonly iconProvider = IconProvider;\n\n public run(): void {\n if (this.form.invalid || this.isSubmitting) {\n this.form.get('message')?.markAsTouched();\n return;\n }\n\n this.isSubmitting = true;\n this.form.get('message')?.disable();\n const message = this.form.value.message as string;\n\n this.orchestratorService.chatAgent(this.agentRunId()!, message).subscribe({\n next: (res) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({ severity: 'error', summary: 'Fehler', detail: res.messages.join('|') });\n this.form.get('message')?.enable();\n this.isSubmitting = false;\n return;\n }\n this.form.reset();\n this.form.get('message')?.enable();\n this.isSubmitting = false;\n this.agentRunIdReceived.emit(res);\n },\n error: () => {\n this.form.get('message')?.enable();\n this.isSubmitting = false;\n },\n });\n }\n}\n","<div class=\"my-4 max-w-4xl mx-auto\">\n <div class=\"bg-white rounded-2xl shadow-lg border border-gray-200 p-6\">\n <form [formGroup]=\"form\" (ngSubmit)=\"run()\">\n <div class=\"flex gap-4 items-start\">\n <div class=\"flex-shrink-0\">\n <div class=\"w-12 h-12 rounded-xl bg-gradient-to-br from-primary-500 to-primary-600 flex items-center justify-center shadow-md\">\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('human')\" size=\"lg\" class=\"text-white\"></fa-icon>\n </div>\n </div>\n <div class=\"flex-grow space-y-4\">\n <div class=\"relative\">\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input\n type=\"text\"\n id=\"message\"\n formControlName=\"message\"\n pInputText\n [class.border-red-500]=\"form.get('message')?.invalid && form.get('message')?.touched\"\n class=\"w-full px-4 py-3 border-2 border-gray-300 rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-600 focus:border-primary-600 transition-all bg-white\"\n />\n <label for=\"message\" class=\"text-gray-600\">Deine Nachricht</label>\n </p-floatlabel>\n <sftech-form-error-display\n [control]=\"form.get('message')!\"\n label=\"Nachricht\"\n ></sftech-form-error-display>\n </div>\n <div class=\"flex items-center justify-between\">\n <div class=\"text-sm text-gray-500\">\n <fa-icon [icon]=\"iconProvider.message\" class=\"mr-1\"></fa-icon>\n @if (!isSubmitting) {\n <span>Bereit zum Senden</span>\n } @else {\n <span>Wird verarbeitet...</span>\n }\n </div>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid || isSubmitting\"\n class=\"px-6 py-3 bg-gradient-to-r from-primary-600 to-primary-700 text-white font-semibold rounded-xl shadow-md hover:shadow-lg hover:from-primary-700 hover:to-primary-800 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center gap-2\"\n >\n @if (isSubmitting) {\n <fa-icon [icon]=\"iconProvider.loading\" [animation]=\"'spin'\"></fa-icon>\n <span>Wird gesendet...</span>\n } @else {\n <fa-icon [icon]=\"iconProvider.arrowRight\"></fa-icon>\n <span>Senden</span>\n }\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { NgClass } from '@angular/common';\nimport { Component, input } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';\n\n@Component({\n selector: 'sftech-agent-chat-message',\n imports: [NgClass, FaIconComponent, MarkdownComponent],\n templateUrl: './agent-chat-message.component.html',\n styleUrl: './agent-chat-message.component.css',\n})\nexport class AgentChatMessageComponent {\n public message = input('message');\n public type = input('type');\n\n public iconTextMapper = AgentRunIconTextDataprovider;\n\n public extractJson(message: string): string {\n const jsonMatch = message.match(/```json\\s*([\\s\\S]*?)\\s*```/);\n if (jsonMatch && jsonMatch[1]) {\n try {\n const data = JSON.parse(jsonMatch[1]);\n const md = this._toMarkdownFromJson(data);\n return md;\n } catch {\n return 'Invalid JSON';\n }\n }\n return 'No JSON found';\n }\n\n private _toMarkdownFromJson(obj: any): string {\n let md = '';\n\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n\n // Überschrift für jede Kategorie\n md += `\\n### ${key}\\n\\n`;\n\n if (Array.isArray(value) && value.length && typeof value[0] === 'object') {\n // Tabellen-Header\n const headers = Object.keys(value[0]);\n md += `| ${headers.join(' | ')} |\\n`;\n md += `| ${headers.map(() => '---').join(' | ')} |\\n`;\n\n // Tabellen-Zeilen\n for (const row of value) {\n md += `| ${headers.map((h) => row[h]).join(' | ')} |\\n`;\n }\n md += '\\n';\n } else if (typeof value === 'object') {\n // Rekursiver Aufruf bei verschachtelten Objekten\n md += this._toMarkdownFromJson(value);\n } else {\n // Einfaches Feld\n md += `- **${key}:** ${value}\\n`;\n }\n }\n\n return md;\n }\n}\n","@if (type() === 'ai_loading') {\n <div class=\"my-2 sm:my-4 max-w-4xl mx-auto\">\n <div class=\"bg-white rounded-xl sm:rounded-2xl shadow-lg border border-gray-200 p-4 sm:p-6\">\n <div class=\"flex items-start gap-3 sm:gap-4\">\n <div class=\"flex-shrink-0\">\n <div class=\"w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gradient-to-br from-green-500 to-green-600 flex items-center justify-center shadow-md\">\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" class=\"text-white text-sm sm:text-lg\"></fa-icon>\n </div>\n </div>\n <div class=\"flex items-center space-x-3 text-gray-600 mt-1 sm:mt-2\">\n <span class=\"text-xs sm:text-sm font-medium\">Die Antwort wird ermittelt...</span>\n <div class=\"flex space-x-1\">\n <div class=\"w-2 h-2 sm:w-2.5 sm:h-2.5 bg-green-600 rounded-full animate-bounceDelay\"></div>\n <div class=\"w-2 h-2 sm:w-2.5 sm:h-2.5 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.32s]\"></div>\n <div class=\"w-2 h-2 sm:w-2.5 sm:h-2.5 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.16s]\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n\n@else if (type() === 'ai_failed') {\n <div class=\"my-2 sm:my-4 max-w-4xl mx-auto\">\n <div class=\"bg-white rounded-xl sm:rounded-2xl shadow-lg border-2 border-red-300 p-4 sm:p-6\">\n <div class=\"flex items-start gap-3 sm:gap-4\">\n <div class=\"flex-shrink-0\">\n <div class=\"w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl bg-gradient-to-br from-red-500 to-red-600 flex items-center justify-center shadow-md\">\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" class=\"text-white text-sm sm:text-lg\"></fa-icon>\n </div>\n </div>\n <div class=\"flex-grow\">\n <div class=\"text-xs sm:text-sm text-red-700 font-medium\">\n {{ message() }}\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n\n@else {\n <div class=\"my-2 sm:my-4 max-w-4xl mx-auto\">\n <div\n class=\"rounded-xl sm:rounded-2xl shadow-lg p-3 sm:p-6 flex gap-3 sm:gap-4 border-2\"\n [ngClass]=\"{\n 'bg-white border-gray-200': type() === 'ai',\n 'bg-primary-50 border-primary-200 flex-row-reverse': type() === 'human',\n 'bg-yellow-50 border-yellow-300': type() === 'system'\n }\"\n >\n <div class=\"flex-shrink-0\">\n <div\n class=\"w-10 h-10 sm:w-12 sm:h-12 rounded-lg sm:rounded-xl flex items-center justify-center shadow-md bg-gradient-to-br\"\n [ngClass]=\"{\n 'from-green-500 to-green-600': type() === 'ai',\n 'from-primary-500 to-primary-600': type() === 'human',\n 'from-yellow-500 to-yellow-600': type() === 'system'\n }\"\n >\n <fa-icon\n [icon]=\"iconTextMapper.getIconForMessageType(type())\"\n class=\"text-white text-sm sm:text-lg\"\n ></fa-icon>\n </div>\n </div>\n\n <div\n class=\"flex-grow text-xs sm:text-sm leading-relaxed min-w-0\"\n [ngClass]=\"{\n 'text-left': type() === 'ai' || type() === 'system',\n 'text-right': type() === 'human'\n }\"\n >\n @if (message().includes('```json')) {\n <div class=\"p-2 sm:p-4 bg-gray-50 rounded-lg sm:rounded-xl border border-gray-200 overflow-x-auto\">\n <markdown class=\"markdown-body\">{{ extractJson(message()) }}</markdown>\n </div>\n } @else {\n <div class=\"text-gray-700 break-words\">\n <markdown class=\"markdown-body\">{{ message() }}</markdown>\n </div>\n }\n </div>\n </div>\n </div>\n}","import { DatePipe } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, ViewChild, computed, effect, inject, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { EFilterOperator, EFilterTypes, ESortDirection, IconProvider, MappedApiError, MappedOdataResponse, OData, OdataFilter } from '@sftech/ng-shared';\nimport { MessageService } from 'primeng/api';\nimport { ButtonDirective } from 'primeng/button';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Tooltip } from 'primeng/tooltip';\nimport { Subscription, map } from 'rxjs';\nimport { AgentRagUploadComponent } from '../../admin/agents/components/agent/agent-rag-upload/agent-rag-upload.component';\nimport { IChatMessageResponseDto } from '../../core/dtos/chat-message-response.dto';\nimport { EAgentRunStatus } from '../../core/enums/agent-run-status.enum';\nimport { AgentRun } from '../../core/models/agent-run.model';\nimport { Agent } from '../../core/models/agent.model';\nimport { ChatMessage } from '../../core/models/chat-message.model';\nimport { Chat } from '../../core/models/chat.model';\nimport { AgentRunService } from '../../core/service/agent-run.service';\nimport { AgentService } from '../../core/service/agent.service';\nimport { ChatService } from '../../core/service/chat.service';\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\nimport { AgentRunIconTextDataprovider } from '../core/dataprovider/agent-run-icon-text.dataprovider';\nimport { AgentChatMessageHumanInputInitialComponent } from './agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component';\nimport { AgentChatMessageHumanInputComponent } from './agent-chat-message-human-input/agent-chat-message-human-input.component';\nimport { AgentChatMessageComponent } from './agent-chat-message/agent-chat-message.component';\n\n@Component({\n selector: 'sftech-agent-chat',\n imports: [ButtonDirective, AgentChatMessageComponent, DatePipe, FaIconComponent, AgentChatMessageHumanInputInitialComponent, AgentChatMessageHumanInputComponent, Tooltip],\n providers: [DialogService],\n templateUrl: './agent-chat.component.html',\n styleUrl: './agent-chat.component.css',\n})\nexport class AgentChatComponent implements OnInit, OnDestroy {\n protected readonly activeRoute = inject(ActivatedRoute);\n protected readonly router = inject(Router);\n\n protected readonly agentService = inject(AgentService);\n protected readonly agentRunService = inject(AgentRunService);\n protected readonly chatService = inject(ChatService);\n protected readonly orchestratorService = inject(OrchestratorService);\n protected readonly messageService = inject(MessageService);\n private readonly dialogService = inject(DialogService);\n\n protected agent!: Agent;\n\n protected readonly agentRuns = signal<AgentRun[] | undefined>(undefined);\n\n protected selectedAgentRun = signal<AgentRun | undefined>(undefined);\n protected selectedAgent = signal<Agent | undefined>(undefined);\n\n @ViewChild('chatContainer') chatContainer?: ElementRef;\n\n public iconProvider = IconProvider;\n public iconTextMapper = AgentRunIconTextDataprovider;\n public agentRunStatus = EAgentRunStatus;\n\n // Mobile sidebar visibility\n public sidebarVisible = signal(false);\n\n public subscriptions: Subscription[] = [];\n\n public toggleSidebar(): void {\n this.sidebarVisible.update((v) => !v);\n }\n\n public closeSidebar(): void {\n this.sidebarVisible.set(false);\n }\n\n protected selectedAgentRunChanged$ = effect(() => {\n if (!this.selectedAgentRun()) {\n return;\n }\n this._loadChat();\n });\n\n protected chatMessagesChanged$ = effect(() => {\n const messages = this.selectedAgentRun()?.chat?.messages;\n if (messages && messages.length > 0) {\n this.startScrollingStrategy();\n }\n });\n\n public loading = computed(() => {\n if (!this.selectedAgentRun()?.status) {\n return false;\n }\n return ![EAgentRunStatus.COMPLETED, EAgentRunStatus.CLARIFICATION_NEEDED, EAgentRunStatus.FAILED, EAgentRunStatus.INIT].includes(this.selectedAgentRun()!.status);\n });\n\n public ngOnInit(): void {\n const agentId = Number(this.activeRoute.snapshot.paramMap.get('agentId'));\n const agentRunId = Number(this.activeRoute.snapshot.paramMap.get('agentRunId'));\n if (agentId) {\n const odata = new OData();\n odata.filter.addAnd(new OdataFilter('agentId', agentId, EFilterOperator.EQUALS, EFilterTypes.NUMERIC));\n odata.order.column = 'updatedAt';\n odata.order.direction = ESortDirection.DESC;\n this.agentRunService\n .odata(odata)\n .pipe(\n map((res: MappedOdataResponse<AgentRun> | MappedApiError) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Fehler beim Laden der Chat-Daten',\n });\n throw new Error(res.messages.join('|'));\n }\n this.selectedAgentRun.set(res.data.items.find((ar) => agentRunId == ar.id));\n this.agentRuns.set(res.data.items);\n }),\n )\n .subscribe();\n this.agentService.get(agentId, true).subscribe((res) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Fehler beim Laden des Agenten-Daten',\n });\n throw new Error(res.messages.join('|'));\n }\n this.selectedAgent.set(res.data as Agent);\n });\n } else {\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Laden des Agenten' });\n // this.router.navigate(['../chats']);\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n public startNewRun(): void {\n if (!this.selectedAgent()) {\n return;\n }\n const agentRun = new AgentRun();\n agentRun.agentId = this.selectedAgent()!.id;\n agentRun.agent = this.selectedAgent();\n agentRun.status = EAgentRunStatus.INIT;\n agentRun.createdAt = new Date();\n agentRun.chat = new Chat();\n const systemContextMessage = new ChatMessage();\n systemContextMessage.messageType = 'system';\n systemContextMessage.message = `${this.selectedAgent()!.llmSystemPrompt?.template}Antworte nach folgender Spezifikation:<br>${this.selectedAgent()?.answerSpecification}`;\n agentRun.chat.messages = [systemContextMessage];\n this.selectedAgentRun.set(agentRun);\n }\n\n public selectAgentRun(agentRun: AgentRun): void {\n this.selectedAgentRun.set(agentRun);\n\n if (this.selectedAgentRun()!.id) {\n this._setRelativeUrl();\n }\n }\n\n public startObservingAgentRun(agentRunId: number) {\n this.subscriptions.push(\n this.orchestratorService.observeAgentRun(agentRunId).subscribe({\n next: (update: AgentRun | MappedApiError) => {\n if (update instanceof MappedApiError) {\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\n return;\n }\n this.selectedAgentRun.update((agentRun) => {\n return this._mapUpdateOnAgentRun(agentRun!, update);\n });\n if (update.id && this.agentRuns()?.filter((ars) => ars.id === update.id).length === 0) {\n this.agentRuns.update((ars) => {\n ars?.unshift(update);\n return ars;\n });\n }\n },\n error: () => {\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\n },\n complete: () => {},\n }),\n );\n }\n\n public goBack() {\n const index = this.router.url.indexOf('/agent/');\n const result = this.router.url.substring(0, index);\n this.router.navigateByUrl(result);\n }\n\n private _loadChat(): void {\n if (!this.selectedAgentRun() || !this.selectedAgentRun()!.chatId) {\n return;\n }\n this.chatService.get(this.selectedAgentRun()!.chatId!, true).subscribe((res) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Fehler beim Laden der Chat-Daten',\n });\n return;\n }\n this.selectedAgentRun.update((ar) => {\n ar!.chat = res.data as Chat;\n return ar;\n });\n this.startScrollingStrategy();\n });\n }\n\n private _setRelativeUrl() {\n let relativeUrl: string;\n if (this.router.url.includes('/r/')) {\n const index = this.router.url.indexOf('/r/') + 3; // 3 = Länge von \"/r/\"\n const result = this.router.url.substring(0, index);\n\n relativeUrl = `${result}${this.selectedAgentRun()!.id}`;\n } else {\n relativeUrl = `r/${this.selectedAgentRun()!.id}`;\n }\n this.router.navigate([relativeUrl], {\n relativeTo: this.activeRoute,\n replaceUrl: true, // überschreibt den Verlauf\n skipLocationChange: false, // false = URL sichtbar, true = nur intern\n });\n }\n\n private _mapUpdateOnAgentRun(agentRun: AgentRun, update: AgentRun): AgentRun {\n if (!agentRun.chat?.messages && !update.chat?.messages) {\n return update;\n }\n\n if (!update.chat && agentRun.chat) {\n update.chat = agentRun.chat;\n }\n\n if (agentRun.chat?.messages && update.chat!.messages.length <= agentRun.chat!.messages.length) {\n update.chat!.messages = agentRun.chat!.messages;\n }\n return update;\n }\n\n public openRagUploadModal(): void {\n const agent = this.selectedAgent();\n const chatId = this.selectedAgentRun()?.chatId;\n\n if (!agent) {\n this.messageService.add({\n severity: 'error',\n summary: 'Fehler',\n detail: 'Agent nicht gefunden',\n });\n return;\n }\n\n const header = chatId ? 'RAG-Dokumente für Chat hochladen' : 'RAG-Dokumente für Agent hochladen';\n\n this.dialogService.open(AgentRagUploadComponent, {\n inputValues: { agentId: agent.id, chatId },\n focusOnShow: false,\n modal: true,\n dismissableMask: true,\n header: header,\n width: '50%',\n contentStyle: { overflow: 'auto' },\n });\n }\n\n private startScrollingStrategy(): void {\n this.scrollToBottom();\n\n // Fallback-Scrolls für langsames Markdown-Rendering\n [100, 500, 1000, 2000].forEach((delay) => {\n setTimeout(() => this.scrollToBottom(), delay);\n });\n }\n\n private scrollToBottom(): void {\n if (!this.chatContainer?.nativeElement) {\n return;\n }\n\n const container = this.chatContainer.nativeElement;\n container.scrollTop = container.scrollHeight - container.clientHeight;\n }\n\n protected getFirstUserMessage(agentRun: AgentRun): string {\n if (!agentRun.chat?.messages || agentRun.chat.messages.length === 0) {\n return 'Neuer Chat';\n }\n\n const firstUserMessage = agentRun.chat.messages.find((msg) => msg.messageType === 'human' || msg.messageType === 'user');\n\n if (!firstUserMessage?.message) {\n return 'Chat gestartet';\n }\n\n // Remove HTML tags and limit length\n const cleanText = firstUserMessage.message.replace(/<[^>]*>/g, '').trim();\n // Bei 220px Breite mit text-xs passen ca. 40-45 Zeichen gut\n return cleanText.length > 42 ? `${cleanText.substring(0, 42)}...` : cleanText;\n }\n\n protected getMessageCount(agentRun: AgentRun): number {\n if (!agentRun.chat?.messages) {\n return 0;\n }\n // Count only human and AI messages, exclude system messages\n return agentRun.chat.messages.filter((msg) => msg.messageType === 'human' || msg.messageType === 'user' || msg.messageType === 'ai').length;\n }\n}\n","<div class=\"flex flex-col h-full shadow-lg\">\n <!-- Header über gesamte Breite -->\n @if (selectedAgent()) {\n <div class=\"border-b border-gray-300 px-3 sm:px-4 py-3 flex items-center bg-white gap-2\">\n <!-- Mobile Sidebar Toggle -->\n <div class=\"relative lg:hidden flex-shrink-0\">\n <button pButton\n type=\"button\"\n class=\"p-button-text p-button-rounded\"\n (click)=\"toggleSidebar()\"\n [pTooltip]=\"'Chat-Verlauf (' + (agentRuns()?.length ?? 0) + ')'\"\n tooltipPosition=\"bottom\">\n <fa-icon [icon]=\"iconProvider.chat\" size=\"lg\"></fa-icon>\n </button>\n @if (agentRuns()?.length) {\n <span class=\"absolute -top-1 -right-1 bg-primary-500 text-white text-xs font-bold rounded-full min-w-5 h-5 flex items-center justify-center px-1 pointer-events-none\">\n {{ agentRuns()!.length }}\n </span>\n }\n </div>\n\n <div class=\"flex items-center gap-2 sm:gap-3 flex-1 min-w-0\">\n <button pButton\n type=\"button\"\n class=\"p-button-text p-button-rounded flex-shrink-0\"\n (click)=\"goBack()\"\n [pTooltip]=\"'Zurück'\"\n tooltipPosition=\"bottom\"\n tabindex=\"2\">\n <fa-icon [icon]=\"iconProvider.back\" size=\"lg\"></fa-icon>\n </button>\n @if (selectedAgentRun()) {\n <h2 class=\"text-base sm:text-xl font-semibold truncate\">\n <span class=\"hidden sm:inline\">Agent: </span>{{ selectedAgent()?.name }}\n <span class=\"hidden md:inline text-gray-500 font-normal\">\n vom {{ (selectedAgentRun()?.createdAt ?? selectedAgentRun()?.startedAt | date:'dd.MM.yyyy - HH:mm') }}\n </span>\n </h2>\n } @else {\n <h2 class=\"text-base sm:text-xl font-semibold truncate\">\n <span class=\"hidden sm:inline\">Agent: </span>{{ selectedAgent()?.name }}\n </h2>\n }\n </div>\n <div class=\"flex items-center gap-2 sm:gap-3 flex-shrink-0\">\n <button pButton\n type=\"button\"\n class=\"p-button-sm\"\n (click)=\"startNewRun()\"\n tabindex=\"3\">\n <fa-icon [icon]=\"iconProvider.add\" class=\"sm:mr-2\"></fa-icon>\n <span class=\"hidden sm:inline\">Neuer Chat</span>\n </button>\n\n @if (selectedAgentRun()) {\n @if (selectedAgent()?.ragProvider && selectedAgent()?.ragModel) {\n <button pButton\n type=\"button\"\n class=\"p-button-text p-button-rounded\"\n (click)=\"openRagUploadModal()\"\n [pTooltip]=\"'RAG-Dokumente hochladen'\"\n tooltipPosition=\"bottom\">\n <fa-icon [icon]=\"iconProvider.documentAdd\" size=\"lg\"></fa-icon>\n </button>\n }\n <div [pTooltip]=\"'Status: ' + iconTextMapper.getTextForStatus(selectedAgentRun()?.status)\"\n tooltipPosition=\"bottom\"\n class=\"cursor-help\">\n <fa-icon [icon]=\"iconTextMapper.getIconForStatus(selectedAgentRun()?.status)\"\n [classList]=\"iconTextMapper.getIconClassesForStatus(selectedAgentRun()?.status)\"\n [animation]=\"selectedAgentRun()?.status === 'running' ? 'spin' : undefined\"\n size=\"lg\"></fa-icon>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Sidebar + Chat nebeneinander -->\n <div class=\"flex flex-1 min-h-0 overflow-hidden relative\">\n <!-- Mobile Overlay -->\n @if (sidebarVisible()) {\n <div class=\"fixed inset-0 bg-black/50 z-40 lg:hidden\"\n (click)=\"closeSidebar()\"></div>\n }\n\n <!-- Sidebar -->\n <div class=\"chats-panel border-r border-gray-200 bg-gradient-to-b from-gray-50 to-white p-3 h-full flex-shrink-0 overflow-y-auto\n fixed lg:relative inset-y-0 left-0 z-50 lg:z-auto\n w-[280px] sm:w-[300px] lg:w-[220px]\n transform transition-transform duration-300 ease-in-out\n lg:transform-none\"\n [class.-translate-x-full]=\"!sidebarVisible()\"\n [class.translate-x-0]=\"sidebarVisible()\"\n [class.lg:translate-x-0]=\"true\">\n\n <!-- Mobile Close Button -->\n <div class=\"flex items-center justify-between mb-3 lg:hidden\">\n <h3 class=\"text-sm font-semibold text-gray-700\">Chat-Verlauf</h3>\n <button class=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n (click)=\"closeSidebar()\">\n <fa-icon [icon]=\"iconProvider.close\" class=\"text-gray-500\"></fa-icon>\n </button>\n </div>\n\n <div class=\"mb-3 hidden lg:block\">\n <h3 class=\"text-xs font-semibold text-gray-500 uppercase tracking-wider px-2\">Chat Verlauf</h3>\n </div>\n @if (agentRuns() === undefined) {\n <div class=\"flex items-center justify-center py-8\">\n <div class=\"text-center\">\n <fa-icon [icon]=\"iconProvider.loading\" [animation]=\"'spin'\" size=\"2x\" class=\"text-gray-400 mb-2\"></fa-icon>\n <p class=\"text-sm text-gray-500 m-0\">Chats werden geladen...</p>\n </div>\n </div>\n } @else if (!agentRuns()?.length) {\n <div class=\"flex items-center justify-center py-8\">\n <div class=\"text-center\">\n <fa-icon [icon]=\"iconProvider.chat\" size=\"2x\" class=\"text-gray-300 mb-2\"></fa-icon>\n <p class=\"text-sm text-gray-500 m-0\">Noch keine Chats</p>\n </div>\n </div>\n } @else {\n <div class=\"flex flex-col gap-2\">\n @for (agentRun of agentRuns(); track agentRun) {\n <div class=\"chat-item group relative rounded-xl p-3 cursor-pointer transition-all duration-200 border active:scale-[0.98]\"\n (click)=\"selectAgentRun(agentRun); closeSidebar()\"\n [class.active]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.bg-white]=\"selectedAgentRun()?.id !== agentRun.id\"\n [class.shadow-sm]=\"selectedAgentRun()?.id !== agentRun.id\"\n [class.hover:shadow-md]=\"selectedAgentRun()?.id !== agentRun.id\"\n [class.border-gray-200]=\"selectedAgentRun()?.id !== agentRun.id\"\n [class.bg-primary-50]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.border-primary-300]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.shadow-md]=\"selectedAgentRun()?.id === agentRun.id\">\n <div class=\"flex items-start justify-between mb-2\">\n <div class=\"flex items-center gap-2 flex-1 min-w-0\">\n <fa-icon [icon]=\"iconTextMapper.getIconForStatus(agentRun.status)\"\n [classList]=\"iconTextMapper.getIconClassesForStatus(agentRun.status)\"\n [animation]=\"agentRun.status === 'running' ? 'spin' : undefined\"\n class=\"flex-shrink-0\"\n size=\"sm\"></fa-icon>\n <span class=\"text-xs font-medium truncate\"\n [class.text-primary-700]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-700]=\"selectedAgentRun()?.id !== agentRun.id\">\n {{ agentRun.createdAt | date:'dd.MM.yy' }}\n </span>\n </div>\n <span class=\"text-xs font-medium flex-shrink-0 ml-2\"\n [class.text-primary-600]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-500]=\"selectedAgentRun()?.id !== agentRun.id\">\n {{ agentRun.createdAt | date:'HH:mm' }}\n </span>\n </div>\n @if (agentRun.chat && agentRun.chat.messages && agentRun.chat.messages.length > 0) {\n <div class=\"text-xs truncate leading-relaxed\"\n [class.text-primary-600]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-600]=\"selectedAgentRun()?.id !== agentRun.id\">\n {{ getFirstUserMessage(agentRun) }}\n </div>\n } @else {\n <div class=\"text-xs italic truncate\"\n [class.text-primary-500]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-400]=\"selectedAgentRun()?.id !== agentRun.id\">\n Neuer Chat\n </div>\n }\n @if (agentRun.chat && agentRun.chat.messages) {\n <div class=\"flex items-center gap-2 mt-2 pt-2 border-t\"\n [class.border-primary-200]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.border-gray-100]=\"selectedAgentRun()?.id !== agentRun.id\">\n <fa-icon [icon]=\"iconProvider.message\" size=\"xs\"\n [class.text-primary-500]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-400]=\"selectedAgentRun()?.id !== agentRun.id\"></fa-icon>\n <span class=\"text-xs\"\n [class.text-primary-600]=\"selectedAgentRun()?.id === agentRun.id\"\n [class.text-gray-500]=\"selectedAgentRun()?.id !== agentRun.id\">\n {{ getMessageCount(agentRun) }} Nachrichten\n </span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Chat Area -->\n <div class=\"chat bg-gray-50 flex-1 relative min-w-0\">\n @if (selectedAgentRun() === undefined) {\n <div class=\"flex items-center justify-center h-full p-4\">\n <p class=\"m-0 text-gray-500 text-center\">\n <span class=\"hidden lg:inline\">Bitte einen Chat aus der linken Liste auswählen</span>\n <span class=\"lg:hidden\">Tippe auf das Menü-Icon um einen Chat auszuwählen</span>\n </p>\n </div>\n } @else if (selectedAgent() === undefined) {\n <div class=\"flex items-center justify-center h-full\">\n <p class=\"m-0 text-gray-500\">\n Die Chat-Daten werden geladen...\n </p>\n </div>\n } @else {\n <div class=\"absolute inset-0 overflow-y-auto p-2 sm:p-3\" #chatContainer>\n @if (selectedAgentRun()!.chat) {\n @for (message of selectedAgentRun()!.chat!.messages; track message.id) {\n <div class=\"mb-2\">\n <sftech-agent-chat-message [message]=\"message.message\"\n [type]=\"message.messageType\"></sftech-agent-chat-message>\n </div>\n }\n }\n @if (selectedAgentRun()!.status === agentRunStatus.INIT) {\n <sftech-agent-chat-message-human-input-initial [agent]=\"selectedAgent()\"\n (agentRunIdReceived)=\"startObservingAgentRun($event)\"></sftech-agent-chat-message-human-input-initial>\n }\n @if (loading()) {\n <div class=\"mb-2\">\n <sftech-agent-chat-message [message]=\"'Am Überlegen'\"\n [type]=\"'ai_loading'\"></sftech-agent-chat-message>\n </div>\n }\n @if (selectedAgentRun()?.status === agentRunStatus.FAILED) {\n <div class=\"mb-2\">\n <sftech-agent-chat-message\n [message]=\"'Es ist ein Fehler aufgetreten! Bitte versuche es zu einem späteren Zeitpunkt erneut.'\"\n [type]=\"'ai_failed'\"></sftech-agent-chat-message>\n </div>\n }\n @if (selectedAgentRun()!.status === agentRunStatus.COMPLETED) {\n <sftech-agent-chat-message-human-input [agent]=\"selectedAgent()\"\n [agentRunId]=\"selectedAgentRun()!.id\"\n (agentRunIdReceived)=\"startObservingAgentRun(selectedAgentRun()!.id!)\"></sftech-agent-chat-message-human-input>\n }\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, OnInit, computed, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { BaseListComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\nimport { MessageService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IAgentCreateDto } from '../../core/dtos/agent-create-request.dto';\nimport { IAgentResponseDto } from '../../core/dtos/agent-response.dto';\nimport { Agent } from '../../core/models/agent.model';\nimport { McpTool } from '../../core/models/mcp-tool.model';\nimport { AgentService } from '../../core/service/agent.service';\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\n\n@Component({\n selector: 'sftech-agent-selection',\n imports: [RouterLink, FaIconComponent, FormsModule],\n providers: [DialogService],\n templateUrl: './agent-selection.component.html',\n styleUrl: './agent-selection.component.css',\n})\nexport class AgentSelectionComponent extends BaseListComponent<Agent, IAgentCreateDto, IAgentCreateDto, IAgentResponseDto> implements OnInit {\n protected _repo = inject(AgentService);\n protected _route = 'chats/agents';\n\n protected orchestratorService = inject(OrchestratorService);\n protected messageService = inject(MessageService);\n protected iconProvider = IconProvider;\n\n public tools = signal<McpTool[] | undefined>(undefined);\n public searchTerm = '';\n public filteredAgents = signal<Agent[]>([]);\n\n constructor() {\n super();\n\n // Watch for data changes and update filtered agents\n effect(() => {\n const agents = this.data();\n if (agents !== undefined) {\n this.filterAgents();\n }\n });\n }\n\n public override ngOnInit() {\n super.ngOnInit();\n this.orchestratorService.getTools().subscribe((res) => {\n if (res instanceof MappedApiError) {\n this.messageService.add({ severity: 'error', summary: 'Fehler', detail: res.messages.join('|') });\n return;\n }\n this.tools.set(res.data);\n });\n }\n\n public filterAgents(): void {\n const agents = this.data() || [];\n if (!this.searchTerm.trim()) {\n this.filteredAgents.set(agents);\n return;\n }\n\n const term = this.searchTerm.toLowerCase();\n const filtered = agents.filter((agent) => {\n // Search in name\n if (agent.name.toLowerCase().includes(term)) {\n return true;\n }\n\n // Search in description\n if (agent.description?.toLowerCase().includes(term)) {\n return true;\n }\n\n // Search in tools\n const toolNames = this.getToolNames(agent).toLowerCase();\n if (toolNames.includes(term)) {\n return true;\n }\n\n return false;\n });\n\n this.filteredAgents.set(filtered);\n }\n\n public clearSearch(): void {\n this.searchTerm = '';\n this.filterAgents();\n }\n\n public getToolName(toolIdentifier: string): string {\n return this.tools()?.find((t) => t.identifier === toolIdentifier)?.name || toolIdentifier;\n }\n\n public getToolNames(agent: Agent): string {\n if (!agent.tools || agent.tools.length === 0) {\n return 'Keine Tools';\n }\n return agent.tools\n .map((tool) => this.tools()?.find((t) => t.identifier === tool)?.name)\n .filter((name) => !!name)\n .join(' | ');\n }\n}\n","<div class=\"h-full overflow-y-auto px-4 sm:px-6 py-6 bg-gradient-to-b from-gray-50 to-white\">\n <!-- Header Section -->\n <div class=\"max-w-7xl mx-auto mb-6 sm:mb-8\">\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3\">\n <div>\n <h1 class=\"text-2xl sm:text-3xl font-bold text-gray-900 flex items-center gap-3\">\n <fa-icon [icon]=\"iconProvider.robot\" class=\"text-primary-600\"></fa-icon>\n Agenten Auswahl\n </h1>\n <p class=\"text-gray-600 mt-1 text-sm sm:text-base\">Wähle einen KI-Agenten für deine Aufgabe</p>\n </div>\n @if (data() && data()!.length > 0) {\n <div class=\"text-sm text-gray-500 bg-white px-3 sm:px-4 py-2 rounded-lg border border-gray-200 self-start sm:self-auto\">\n <span class=\"font-semibold text-primary-600\">{{ filteredAgents().length }}</span>\n {{ filteredAgents().length === 1 ? 'Agent' : 'Agenten' }} verfügbar\n </div>\n }\n </div>\n\n <!-- Search Bar -->\n @if (data() && data()!.length > 0) {\n <div class=\"relative\">\n <fa-icon [icon]=\"iconProvider.search\"\n class=\"absolute left-4 top-1/2 transform -translate-y-1/2 text-gray-400\"></fa-icon>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"filterAgents()\"\n placeholder=\"Suche nach Agenten, Beschreibung oder Tools...\"\n class=\"w-full pl-12 pr-4 py-3 bg-white border border-gray-300 rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-600 focus:border-primary-600 transition-all\"\n />\n @if (searchTerm) {\n <button\n (click)=\"clearSearch()\"\n class=\"absolute right-4 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 transition-colors\">\n <fa-icon [icon]=\"iconProvider.close\"></fa-icon>\n </button>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Loading State -->\n @if (data() === undefined) {\n <div class=\"flex items-center justify-center py-20\">\n <div class=\"text-center\">\n <fa-icon [icon]=\"iconProvider.loading\" [animation]=\"'spin'\" size=\"3x\" class=\"text-primary-500 mb-4\"></fa-icon>\n <p class=\"text-gray-600 text-lg\">Agenten werden geladen...</p>\n </div>\n </div>\n }\n\n <!-- Empty State -->\n @else if (!data()?.length) {\n <div class=\"flex items-center justify-center py-20\">\n <div class=\"text-center max-w-md\">\n <fa-icon [icon]=\"iconProvider.robot\" size=\"4x\" class=\"text-gray-300 mb-4\"></fa-icon>\n <h3 class=\"text-xl font-semibold text-gray-700 mb-2\">Keine Agenten vorhanden</h3>\n <p class=\"text-gray-500\">Es wurden noch keine KI-Agenten konfiguriert.</p>\n </div>\n </div>\n }\n\n <!-- No Results State -->\n @else if (filteredAgents().length === 0) {\n <div class=\"flex items-center justify-center py-20\">\n <div class=\"text-center max-w-md\">\n <fa-icon [icon]=\"iconProvider.search\" size=\"4x\" class=\"text-gray-300 mb-4\"></fa-icon>\n <h3 class=\"text-xl font-semibold text-gray-700 mb-2\">Keine Ergebnisse gefunden</h3>\n <p class=\"text-gray-500\">Versuche einen anderen Suchbegriff.</p>\n <button\n (click)=\"clearSearch()\"\n class=\"mt-4 px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors\">\n Suche zurücksetzen\n </button>\n </div>\n </div>\n }\n\n <!-- Agents Grid -->\n @else {\n <div class=\"max-w-7xl mx-auto grid gap-4 sm:gap-6 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n @for (agent of filteredAgents(); track agent.id) {\n <div\n class=\"group relative flex flex-col p-4 sm:p-6 rounded-xl sm:rounded-2xl bg-white border-2 border-gray-300 shadow-sm hover:shadow-xl hover:border-primary-400 hover:-translate-y-1 transition-all duration-300 cursor-pointer overflow-hidden active:scale-[0.98]\"\n [routerLink]=\"['agent/' + agent.id]\"\n >\n <!-- Gradient Overlay on Hover -->\n <div class=\"absolute inset-0 bg-gradient-to-br from-primary-50/0 to-primary-100/0 group-hover:from-primary-50/30 group-hover:to-primary-100/20 transition-all duration-300 rounded-2xl\"></div>\n\n <!-- Content -->\n <div class=\"relative z-10 flex flex-col h-full\">\n <!-- Header with Avatar and RAG Badge -->\n <div class=\"flex items-start justify-between mb-4\">\n <div class=\"flex items-center gap-3\">\n <div class=\"w-12 h-12 rounded-xl bg-gradient-to-br from-primary-500 to-primary-600 text-white flex items-center justify-center font-bold text-xl shadow-md group-hover:scale-110 transition-transform\">\n {{ agent.name[0].toUpperCase() }}\n </div>\n <div>\n <h3 class=\"text-lg font-bold text-gray-900 group-hover:text-primary-700 transition-colors line-clamp-1\">\n {{ agent.name }}\n </h3>\n </div>\n </div>\n @if (agent.ragProvider && agent.ragModel) {\n <div class=\"flex-shrink-0 px-2 py-1 bg-green-100 text-green-700 text-xs font-semibold rounded-lg border border-green-200\">\n <fa-icon [icon]=\"iconProvider.database\" class=\"mr-1\"></fa-icon>\n RAG\n </div>\n }\n </div>\n\n <!-- Description -->\n <p class=\"text-gray-600 text-sm leading-relaxed mb-4 line-clamp-3 flex-grow\">\n {{ agent.description }}\n </p>\n\n <!-- Tools Section -->\n <div class=\"pt-4 border-t border-gray-100\">\n <div class=\"flex items-center gap-2 mb-2\">\n <fa-icon [icon]=\"iconProvider.tools\" class=\"text-gray-400 text-xs\"></fa-icon>\n <span class=\"text-xs font-semibold text-gray-500 uppercase tracking-wide\">Tools</span>\n </div>\n @if (!agent.tools || agent.tools.length === 0) {\n <span class=\"text-xs text-gray-400 italic\">Keine Tools konfiguriert</span>\n } @else {\n <div class=\"flex flex-wrap gap-1.5\">\n @for (toolIdentifier of agent.tools.slice(0, 3); track toolIdentifier) {\n <span class=\"px-2 py-1 bg-primary-50 text-primary-700 text-xs font-medium rounded-md border border-primary-100\">\n {{ getToolName(toolIdentifier) }}\n </span>\n }\n @if (agent.tools.length > 3) {\n <span class=\"px-2 py-1 bg-gray-100 text-gray-600 text-xs font-medium rounded-md\">\n +{{ agent.tools.length - 3 }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- Hover Arrow -->\n <div class=\"absolute bottom-4 right-4 opacity-0 group-hover:opacity-100 transition-opacity\">\n <fa-icon [icon]=\"iconProvider.arrowRight\" class=\"text-primary-600\"></fa-icon>\n </div>\n </div>\n </div>\n }\n </div>\n }\n</div>","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'sftech-chats',\n imports: [RouterOutlet],\n template: '<router-outlet></router-outlet>',\n styles: ':host { display: block; height: 100%; overflow: hidden; }',\n})\nexport class ChatsComponent {}\n","import { authenticationGuard } from '@sftech/ng-auth';\nimport { AgentChatComponent } from './agent-chat/agent-chat.component';\nimport { AgentSelectionComponent } from './agent-selection/agent-selection.component';\nimport { ChatsComponent } from './chats.component';\n\nexport const chatsRoutes = [\n {\n path: '',\n component: ChatsComponent,\n children: [\n {\n path: '',\n component: AgentSelectionComponent,\n },\n {\n path: 'agent/:agentId/r/:agentRunId',\n component: AgentChatComponent,\n },\n {\n path: 'agent/:agentId',\n component: AgentChatComponent,\n },\n ],\n canActivate: [authenticationGuard],\n },\n];\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { InputText } from 'primeng/inputtext';
|
|
|
12
12
|
import { Textarea } from 'primeng/textarea';
|
|
13
13
|
import { P as Prompt, a as PromptHistory } from './sftech-ng-orchestrator-prompt.model-DhASegzq.mjs';
|
|
14
14
|
import * as i1 from '@angular/common/http';
|
|
15
|
-
import { O as ORCHESTRATOR_CONFIGURATION } from './sftech-ng-orchestrator-sftech-ng-orchestrator-
|
|
15
|
+
import { O as ORCHESTRATOR_CONFIGURATION } from './sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs';
|
|
16
16
|
import { DatePipe } from '@angular/common';
|
|
17
17
|
import { Panel } from 'primeng/panel';
|
|
18
18
|
import * as i1$2 from 'primeng/table';
|
|
@@ -159,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
159
159
|
}], ctorParameters: () => [] });
|
|
160
160
|
|
|
161
161
|
export { PromptService as P, PromptDisplayComponent as a };
|
|
162
|
-
//# sourceMappingURL=sftech-ng-orchestrator-prompt-display.component-
|
|
162
|
+
//# sourceMappingURL=sftech-ng-orchestrator-prompt-display.component-DM5L2ykm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftech-ng-orchestrator-prompt-display.component-DM5L2ykm.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/prompt.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/prompt-history.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt-history/prompt-history-display/prompt-history-display.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt-history/prompt-history-display/prompt-history-display.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt-history/prompt-history-list/prompt-history-list.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt-history/prompt-history-list/prompt-history-list.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompt-display/prompt-display.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompt-display/prompt-display.component.html"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { BaseDbApiService } from '@sftech/ng-shared';\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\nimport { IPromptResponseDto } from '../dtos/prompt-request.dto';\nimport { IPromptUpdateDto } from '../dtos/prompt-update.dto';\nimport { Prompt } from '../models/prompt.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PromptService extends BaseDbApiService<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {\n constructor(\n protected override readonly http: HttpClient,\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\n ) {\n super(http, config);\n this.url = `${this.config.orchestratorDbUrl}/prompts`;\n }\n\n protected getNewModel(): Prompt {\n return new Prompt();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { BaseDbApiService } from '@sftech/ng-shared';\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\nimport { IPromptHistoryResponseDto } from '../dtos/prompt-history-response.dto';\nimport { IPromptHistoryUpdateDto } from '../dtos/prompt-history-update.dto';\nimport { PromptHistory } from '../models/prompt-history.model';\n\n@Injectable({ providedIn: 'root' })\nexport class PromptHistoryService extends BaseDbApiService<PromptHistory, IPromptHistoryUpdateDto, IPromptHistoryUpdateDto, IPromptHistoryResponseDto> {\n constructor(\n protected override readonly http: HttpClient,\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\n ) {\n super(http, config);\n this.url = `${this.config.orchestratorDbUrl}/prompts/histories`;\n }\n\n protected getNewModel(): PromptHistory {\n return new PromptHistory();\n }\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { BaseDialogComponent, BaseDisplayComponent } from '@sftech/ng-shared';\nimport { DatePicker } from 'primeng/datepicker';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputText } from 'primeng/inputtext';\nimport { Textarea } from 'primeng/textarea';\nimport { IPromptHistoryCreateDto } from '../../../../../core/dtos/prompt-history-create.dto';\nimport { IPromptHistoryResponseDto } from '../../../../../core/dtos/prompt-history-response.dto';\nimport { IPromptHistoryUpdateDto } from '../../../../../core/dtos/prompt-history-update.dto';\nimport { PromptHistory } from '../../../../../core/models/prompt-history.model';\nimport { PromptHistoryService } from '../../../../../core/service/prompt-history.service';\n\n@Component({\n selector: 'sftech-prompt-history-display',\n standalone: true,\n imports: [ReactiveFormsModule, BaseDialogComponent, DatePicker, FloatLabel, InputText, Textarea],\n templateUrl: './prompt-history-display.component.html',\n styleUrl: './prompt-history-display.component.css',\n})\nexport class PromptHistoryDisplayComponent extends BaseDisplayComponent<PromptHistory, IPromptHistoryCreateDto, IPromptHistoryUpdateDto, IPromptHistoryResponseDto> implements OnInit {\n protected override _repo = inject(PromptHistoryService);\n protected override _route = '/prompts/history';\n\n protected override initializeForm(): FormGroup {\n return new FormGroup({\n id: new FormControl({ value: this.model()!.id, disabled: true }),\n createdAt: new FormControl({ value: this.model()!.createdAt, disabled: true }),\n identifier: new FormControl({ value: this.model()!.identifier, disabled: true }),\n template: new FormControl({ value: this.model()!.template, disabled: this.canEdit }),\n name: new FormControl({ value: this.model()!.name, disabled: this.canEdit }),\n promptId: new FormControl({ value: this.model()!.promptId, disabled: this.canEdit }),\n });\n }\n protected override getNewModel(): PromptHistory {\n return new PromptHistory();\n }\n protected override mapFormToUpdateDto(): IPromptHistoryUpdateDto {\n throw new Error('Edit of PromptHistory is not supported');\n }\n protected override mapFormToCreateDto(): IPromptHistoryCreateDto {\n throw new Error('Manual creation of PromptHistory is not supported');\n }\n}\n","<sftech-base-dialog [hasHeader]=\"true\" (closed)=\"close({ operation: 'aborted' })\">\n <ng-template #header>\n <div class=\"flex justify-between\">\n <h2 class=\"text-xl font-semibold\">\n Prompt\n @if (model()) {\n <span class=\"ms-1\">{{ this.model()!.identifier }}</span>\n }\n </h2>\n </div>\n </ng-template>\n <ng-template #body>\n @if (model()) {\n <form [formGroup]=\"form\">\n <div class=\"grid grid-cols-4 mb-2 gap-2\">\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"id\" formControlName=\"id\" pInputText class=\"w-full\"/>\n <label for=\"id\">{{ this.model()!.getUiNameForProperty('id') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"promptId\" formControlName=\"promptId\" pInputText class=\"w-full\"/>\n <label for=\"promptId\">{{ this.model()!.getUiNameForProperty('promptId') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"identifier\" formControlName=\"identifier\" pInputText class=\"w-full\"/>\n <label for=\"identifier\">{{ this.model()!.getUiNameForProperty('identifier') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <p-datePicker id=\"createdAt\" formControlName=\"createdAt\" dateFormat=\"dd.mm.yy\" [showTime]=\"true\"\n [hourFormat]=\"'24'\" [style]=\"{'width': '100%'}\"></p-datePicker>\n <label for=\"createdAt\">{{ this.model()!.getUiNameForProperty('createdAt') }}</label>\n </p-floatlabel>\n </div>\n <div class=\"w-full mb-2\">\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"name\" formControlName=\"name\" pInputText class=\"w-full\"/>\n <label for=\"name\">{{ this.model()!.getUiNameForProperty('name') }}</label>\n </p-floatlabel>\n </div>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <textarea rows=\"5\" id=\"template\" formControlName=\"template\" pTextarea class=\"w-full\"></textarea>\n <label for=\"template\">{{ this.model()!.getUiNameForProperty('template') }}</label>\n </p-floatlabel>\n </form>\n }\n </ng-template>\n <ng-template #footer>\n </ng-template>\n</sftech-base-dialog>","import { DatePipe } from '@angular/common';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { BaseListComponent, PaginatorComponent } from '@sftech/ng-shared';\nimport { Panel } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { IPromptHistoryCreateDto } from '../../../../../core/dtos/prompt-history-create.dto';\nimport { IPromptHistoryResponseDto } from '../../../../../core/dtos/prompt-history-response.dto';\nimport { IPromptHistoryUpdateDto } from '../../../../../core/dtos/prompt-history-update.dto';\nimport { PromptHistory } from '../../../../../core/models/prompt-history.model';\nimport { PromptHistoryService } from '../../../../../core/service/prompt-history.service';\nimport { PromptHistoryDisplayComponent } from '../prompt-history-display/prompt-history-display.component';\n\n@Component({\n selector: 'sftech-prompt-history-list',\n standalone: true,\n imports: [PaginatorComponent, DatePipe, Panel, TableModule],\n templateUrl: './prompt-history-list.component.html',\n styleUrl: './prompt-history-list.component.scss',\n})\nexport class PromptHistoryListComponent extends BaseListComponent<PromptHistory, IPromptHistoryCreateDto, IPromptHistoryUpdateDto, IPromptHistoryResponseDto> implements OnInit {\n protected override _repo = inject(PromptHistoryService);\n protected override _route = '/prompting/prompt-history';\n protected override _modalComponent = PromptHistoryDisplayComponent;\n protected override detailModalHeaderText = 'Prompt-Details';\n}\n","@if (!data()) {\n <p-panel [toggleable]=\"false\">\n <p class=\"m-0\">\n Daten werden geladen...\n </p>\n </p-panel>\n} @else if (data()!.length === 0) {\n <p-panel [toggleable]=\"false\">\n <p class=\"m-0\">\n Es sind keine Prompts vorhanden.\n </p>\n </p-panel>\n} @else if (data()!.length > 0) {\n <p-table [value]=\"data()!\"\n stripedRows\n [tableStyle]=\"{ 'min-width': '50rem' }\"\n selectionMode=\"single\"\n [resizableColumns]=\"true\"\n dataKey=\"id\"\n >\n <ng-template #header>\n <tr>\n @for(column of data()![0].propertiesToShow; track column) {\n <th>\n {{ data()![0].getUiNameForProperty(column) }}\n </th>\n }\n </tr>\n </ng-template>\n <ng-template #body let-prompt>\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\">\n @for(column of data()![0].propertiesToShow; track column) {\n <td style=\"white-space: pre-wrap\">\n @if (column === 'createdAt') {\n {{ prompt.getPropertyValue(column) | date: 'dd.MM.yyyy - HH:mm' }}\n } @else {\n {{ prompt.getPropertyValue(column) }}\n }\n </td>\n }\n </tr>\n </ng-template>\n </p-table>\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\n}\n\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { BaseDialogComponent, BaseDisplayComponent, EFilterOperator, EFilterTypes, ESortDirection, OData, ODataOrder, OdataFilter, OdataFilterCollection } from '@sftech/ng-shared';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { Button } from 'primeng/button';\nimport { DatePicker } from 'primeng/datepicker';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputText } from 'primeng/inputtext';\nimport { Textarea } from 'primeng/textarea';\nimport { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';\nimport { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';\nimport { Prompt } from '../../../../../core/models/prompt.model';\nimport { PromptService } from '../../../../../core/service/prompt.service';\nimport { PromptHistoryListComponent } from '../../prompt-history/prompt-history-list/prompt-history-list.component';\n\n@Component({\n selector: 'sftech-prompt-display',\n imports: [ReactiveFormsModule, InputText, AutoFocus, FloatLabel, DatePicker, Textarea, Button, BaseDialogComponent, PromptHistoryListComponent],\n providers: [DialogService],\n templateUrl: './prompt-display.component.html',\n styleUrl: './prompt-display.component.css',\n})\nexport class PromptDisplayComponent extends BaseDisplayComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {\n protected override _repo = inject(PromptService);\n protected override _route = 'prompt';\n\n public odataForHistories = signal<OData | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.model()?.id) {\n this.odataForHistories.set(this.getOdataForHistories());\n }\n });\n }\n\n protected override initializeForm(): FormGroup {\n return new FormGroup({\n id: new FormControl({ value: this.model()!.id, disabled: true }),\n createdAt: new FormControl({ value: this.model()!.createdAt, disabled: true }),\n identifier: new FormControl({ value: this.model()!.identifier, disabled: true }),\n template: new FormControl(this.model()?.template),\n name: new FormControl(this.model()?.name),\n });\n }\n protected override getNewModel(): Prompt {\n return new Prompt();\n }\n protected override mapFormToUpdateDto(): IPromptUpdateDto {\n return {\n identifier: this.form.get('identifier')!.value,\n template: this.form.get('template')!.value,\n name: this.form.get('name')!.value,\n };\n }\n protected override mapFormToCreateDto(): IPromptUpdateDto {\n throw new Error('Method not implemented.');\n }\n\n public getOdataForHistories(): OData {\n const odata = new OData();\n odata.filter = new OdataFilterCollection();\n odata.filter.addAnd(new OdataFilter('promptId', this.model()!.id!, EFilterOperator.EQUALS, EFilterTypes.NUMERIC));\n odata.order = new ODataOrder();\n odata.order.column = 'createdAt';\n odata.order.direction = ESortDirection.DESC;\n return odata;\n }\n}\n","<sftech-base-dialog [hasHeader]=\"true\" (closed)=\"close({ operation: 'aborted' })\">\n <ng-template #header>\n <div class=\"flex justify-between\">\n <h2 class=\"text-xl font-semibold\">\n Prompt\n @if (model()) {\n <span class=\"ms-1\">{{ this.model()!.identifier }}</span>\n }\n </h2>\n </div>\n </ng-template>\n <ng-template #body>\n @if (model()) {\n <form [formGroup]=\"form\" [pAutoFocus]=\"true\" class=\"mb-5\">\n <div class=\"grid grid-cols-3 mb-2 gap-2\">\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"id\" formControlName=\"id\" pInputText class=\"w-full\" />\n <label for=\"id\">{{ this.model()!.getUiNameForProperty('id') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <input type=\"text\" id=\"identifier\" formControlName=\"identifier\" pInputText class=\"w-full\" />\n <label for=\"identifier\">{{ this.model()!.getUiNameForProperty('identifier') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <p-datePicker id=\"createdAt\" formControlName=\"createdAt\" dateFormat=\"dd.mm.yy\" [showTime]=\"true\"\n [hourFormat]=\"'24'\" [style]=\"{'width': '100%'}\"></p-datePicker>\n <label for=\"createdAt\">{{ this.model()!.getUiNameForProperty('createdAt') }}</label>\n </p-floatlabel>\n </div>\n <p-floatlabel variant=\"in\" class=\"w-full mb-2\">\n <input type=\"text\" id=\"name\" formControlName=\"name\" pInputText class=\"w-full\"/>\n <label for=\"name\">{{ this.model()!.getUiNameForProperty('name') }}</label>\n </p-floatlabel>\n <p-floatlabel variant=\"in\" class=\"w-full\">\n <textarea rows=\"5\" id=\"template\" formControlName=\"template\" pTextarea class=\"w-full\"></textarea>\n <label for=\"template\">{{ this.model()!.getUiNameForProperty('template') }}</label>\n </p-floatlabel>\n <div class=\"flex justify-end mt-2\">\n <p-button label=\"Speichern\" type=\"submit\" (onClick)=\"submitForm()\" (keyup.enter)=\"submitForm()\" [disabled]=\"!form.dirty\"></p-button>\n </div>\n </form>\n @if (odataForHistories()) {\n <hr class=\"text-gray-200 my-3 w-full\" />\n <h2 class=\"font-bold mt-2 mb-5\">Prompt-History</h2>\n <sftech-prompt-history-list [odata]=\"odataForHistories()!\" [canEdit]=\"false\" [openDisplayAsModal]=\"true\"></sftech-prompt-history-list>\n }\n }\n </ng-template>\n <ng-template #footer>\n\n </ng-template>\n</sftech-base-dialog>\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sftech-ng-orchestrator-prompt.model-DhASegzq.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/prompt-history.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/prompt.model.ts"],"sourcesContent":["import { BaseDbModel, IBaseDbResponseDto } from '@sftech/ng-shared';\
|
|
1
|
+
{"version":3,"file":"sftech-ng-orchestrator-prompt.model-DhASegzq.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/prompt-history.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/prompt.model.ts"],"sourcesContent":["import { BaseDbModel, IBaseDbResponseDto } from '@sftech/ng-shared';\nimport { IPromptHistoryResponseDto } from '../dtos/prompt-history-response.dto';\nimport { IPromptResponseDto } from '../dtos/prompt-request.dto';\n\nexport class PromptHistory extends BaseDbModel {\n public identifier!: string;\n public name!: string;\n public template!: string;\n public promptId!: number;\n\n public override propertiesToShow = ['name', 'identifier', 'template', 'promptId', 'createdAt'];\n\n public override propertyUINames = new Map<string, string>([\n ['name', 'name'],\n ['template', 'template'],\n ['histories', 'histories'],\n ['promptId', 'Prompt-ID'],\n ['createdAt', 'erstellt'],\n ]);\n\n public override fromDto(dto: IPromptHistoryResponseDto): PromptHistory {\n const model = new PromptHistory();\n model.id = dto.id;\n model.name = dto.name;\n model.createdAt = new Date(dto.createdAt);\n model.identifier = dto.identifier;\n model.template = dto.template;\n model.promptId = dto.promptId;\n return model;\n }\n}\n","import { BaseDbModel, EFilterTypes, IBaseDbResponseDto } from '@sftech/ng-shared';\nimport { IPromptResponseDto } from '../dtos/prompt-request.dto';\nimport { PromptHistory } from './prompt-history.model';\n\nexport class Prompt extends BaseDbModel {\n public identifier!: string;\n public name!: string;\n public template!: string;\n public histories: PromptHistory[] = [];\n\n public override propertiesToShow = ['name', 'identifier', 'template'];\n\n public override propertyUINames = new Map<string, string>([\n ['name', 'Name'],\n ['template', 'Template'],\n ['identifier', 'identifier'],\n ]);\n\n public override propertyFilterType = new Map<string, EFilterTypes>([\n ['name', EFilterTypes.STRING],\n ['template', EFilterTypes.STRING],\n ['identifier', EFilterTypes.STRING],\n ]);\n\n public override fromDto(dto: IPromptResponseDto): Prompt {\n const model = new Prompt();\n model.id = dto.id;\n model.createdAt = new Date(dto.createdAt);\n model.name = dto.name;\n model.identifier = dto.identifier;\n model.template = dto.template;\n model.histories = dto.histories ? (PromptHistory.fromDtos(dto.histories) as PromptHistory[]) : [];\n return model;\n }\n}\n"],"names":[],"mappings":";;AAIM,MAAO,aAAc,SAAQ,WAAW,CAAA;AACnC,IAAA,UAAU;AACV,IAAA,IAAI;AACJ,IAAA,QAAQ;AACR,IAAA,QAAQ;AAEC,IAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC;IAE9E,eAAe,GAAG,IAAI,GAAG,CAAiB;QACtD,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,WAAW,EAAE,WAAW,CAAC;QAC1B,CAAC,UAAU,EAAE,WAAW,CAAC;QACzB,CAAC,WAAW,EAAE,UAAU,CAAC;AAC5B,KAAA,CAAC;AAEc,IAAA,OAAO,CAAC,GAA8B,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE;AACjC,QAAA,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;AACjB,QAAA,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;QACrB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACzC,QAAA,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACjC,QAAA,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC7B,QAAA,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC7B,QAAA,OAAO,KAAK;IAChB;AACH;;AC1BK,MAAO,MAAO,SAAQ,WAAW,CAAA;AAC5B,IAAA,UAAU;AACV,IAAA,IAAI;AACJ,IAAA,QAAQ;IACR,SAAS,GAAoB,EAAE;IAEtB,gBAAgB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;IAErD,eAAe,GAAG,IAAI,GAAG,CAAiB;QACtD,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/B,KAAA,CAAC;IAEc,kBAAkB,GAAG,IAAI,GAAG,CAAuB;AAC/D,QAAA,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;AAC7B,QAAA,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;AACtC,KAAA,CAAC;AAEc,IAAA,OAAO,CAAC,GAAuB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,EAAE;AAC1B,QAAA,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;QACjB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACzC,QAAA,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACrB,QAAA,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACjC,QAAA,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;QAC7B,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,GAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAqB,GAAG,EAAE;AACjG,QAAA,OAAO,KAAK;IAChB;AACH;;;;"}
|
|
@@ -5,7 +5,7 @@ import { DialogService } from 'primeng/dynamicdialog';
|
|
|
5
5
|
import { Panel } from 'primeng/panel';
|
|
6
6
|
import * as i1 from 'primeng/table';
|
|
7
7
|
import { TableModule } from 'primeng/table';
|
|
8
|
-
import { P as PromptService, a as PromptDisplayComponent } from './sftech-ng-orchestrator-prompt-display.component-
|
|
8
|
+
import { P as PromptService, a as PromptDisplayComponent } from './sftech-ng-orchestrator-prompt-display.component-DM5L2ykm.mjs';
|
|
9
9
|
import { RouterOutlet } from '@angular/router';
|
|
10
10
|
|
|
11
11
|
class PromptsListComponent extends BaseListComponent {
|
|
@@ -48,4 +48,4 @@ const promptsRoutes = [
|
|
|
48
48
|
];
|
|
49
49
|
|
|
50
50
|
export { promptsRoutes };
|
|
51
|
-
//# sourceMappingURL=sftech-ng-orchestrator-prompts.routes-
|
|
51
|
+
//# sourceMappingURL=sftech-ng-orchestrator-prompts.routes-DThT4R9P.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftech-ng-orchestrator-prompts.routes-DThT4R9P.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';\nimport { BaseListComponent, IconProvider, PaginatorComponent } from '@sftech/ng-shared';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Panel } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';\nimport { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';\nimport { Prompt } from '../../../../../core/models/prompt.model';\nimport { PromptService } from '../../../../../core/service/prompt.service';\nimport { PromptDisplayComponent } from '../prompt-display/prompt-display.component';\n\n@Component({\n selector: 'sftech-prompts-list',\n imports: [PaginatorComponent, Panel, TableModule],\n providers: [DialogService],\n templateUrl: './prompts-list.component.html',\n styleUrl: './prompts-list.component.css',\n})\nexport class PromptsListComponent extends BaseListComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {\n protected _repo = inject(PromptService);\n protected _route = 'prompts';\n protected override _modalComponent = PromptDisplayComponent;\n protected override detailModalHeaderText = 'Prompt-Details';\n\n public iconProvider = IconProvider;\n\n constructor() {\n super();\n }\n}\n","<div class=\"h-full overflow-y-auto px-2 sm:px-4\">\n <h1 class=\"text-primary-900 font-bold text-lg sm:text-xl p-2 my-4\">Prompt-Übersicht</h1>\n\n @if (!data()) {\n <p-panel [toggleable]=\"false\">\n <p class=\"m-0\">\n Daten werden geladen...\n </p>\n </p-panel>\n } @else if (data()!.length === 0) {\n <p-panel [toggleable]=\"false\">\n <p class=\"m-0\">\n Es sind keine Prompts vorhanden.\n </p>\n </p-panel>\n } @else if (data()!.length > 0) {\n <div class=\"overflow-x-auto -mx-2 sm:mx-0\">\n <p-table [value]=\"data()!\"\n stripedRows\n [tableStyle]=\"{ 'min-width': '50rem' }\"\n selectionMode=\"single\"\n [resizableColumns]=\"true\"\n dataKey=\"id\"\n >\n <ng-template #header>\n <tr>\n @for(column of data()![0].propertiesToShow; track column) {\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\n }\n </tr>\n </ng-template>\n <ng-template #body let-prompt>\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\" class=\"cursor-pointer\">\n @for(column of data()![0].propertiesToShow; track column) {\n <td style=\"white-space: pre-wrap\">\n {{ prompt.getPropertyValue(column) }}\n </td>\n }\n </tr>\n </ng-template>\n </p-table>\n </div>\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\n }\n</div>\n\n","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'sftech-prompts',\n imports: [RouterOutlet],\n templateUrl: './prompts.component.html',\n styleUrl: './prompts.component.css',\n})\nexport class PromptsComponent {}\n","<router-outlet></router-outlet>\n\n","import { PromptsListComponent } from './components/prompt/prompts-list/prompts-list.component';\nimport { PromptsComponent } from './prompts.component';\n\nexport const promptsRoutes = [\n {\n path: '',\n component: PromptsComponent,\n children: [\n {\n path: '',\n component: PromptsListComponent,\n },\n ],\n },\n];\n"],"names":[],"mappings":"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"}
|
|
@@ -255,16 +255,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
255
255
|
const orchestratorRoutes = [
|
|
256
256
|
{
|
|
257
257
|
path: 'chats',
|
|
258
|
-
loadChildren: () => import('./sftech-ng-orchestrator-chats.routes-
|
|
258
|
+
loadChildren: () => import('./sftech-ng-orchestrator-chats.routes-DSlx52sA.mjs').then((m) => m.chatsRoutes),
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
path: 'admin/prompts',
|
|
262
|
-
loadChildren: () => import('./sftech-ng-orchestrator-prompts.routes-
|
|
262
|
+
loadChildren: () => import('./sftech-ng-orchestrator-prompts.routes-DThT4R9P.mjs').then((m) => m.promptsRoutes),
|
|
263
263
|
canActivate: [adminGuard],
|
|
264
264
|
},
|
|
265
265
|
{
|
|
266
266
|
path: 'admin/agents',
|
|
267
|
-
loadChildren: () => import('./sftech-ng-orchestrator-agents.routes-
|
|
267
|
+
loadChildren: () => import('./sftech-ng-orchestrator-agents.routes-a-biG3wv.mjs').then((m) => m.agentsRoutes),
|
|
268
268
|
canActivate: [adminGuard],
|
|
269
269
|
},
|
|
270
270
|
];
|
|
@@ -274,4 +274,4 @@ const orchestratorRoutes = [
|
|
|
274
274
|
*/
|
|
275
275
|
|
|
276
276
|
export { AgentRun as A, Chat as C, EAgentRunStatus as E, ORCHESTRATOR_CONFIGURATION as O, OrchestratorService as a, ChatMessage as b, OrchestratorModule as c, orchestratorRoutes as o };
|
|
277
|
-
//# sourceMappingURL=sftech-ng-orchestrator-sftech-ng-orchestrator-
|
|
277
|
+
//# sourceMappingURL=sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/configuration/orchestrator-config.mapper.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/configuration/orchestrator-configuration.token.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/enums/agent-run-status.enum.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/chat-message.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/chat.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/agent-run.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/mcp-tool.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/orchestrator.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/orchestrator.module.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/orchestrator.routes.ts","../../../../libs/ng-orchestrator/src/sftech-ng-orchestrator.ts"],"sourcesContent":["import { IAppConfig } from '@sftech/ng-shared';\nimport { IOrchestratorConfig } from './orchestrator-config.interface';\n\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\nexport class OrchestratorConfigMapper {\n public static map(config: IAppConfig): IOrchestratorConfig {\n return {\n orchestratorUrl: (config['ORCHESTRATOR_URL'] as string) ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator`,\n orchestratorDbUrl: (config['ORCHESTRATOR_DB_URL'] as string) ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator-db`,\n defaultConnectorUrl: config['DEFAULT_CONNECTOR_URL'] as string,\n defaultAnswerSpecification: config['DEFAULT_ANSWER_SPECIFICATION'] as string,\n defaultLlmProvider: config['DEFAULT_LLM_PROVIDER'] as string,\n defaultLlmModel: config['DEFAULT_LLM_MODEL'] as string,\n defaultLlmTemperature: config['DEFAULT_LLM_TEMPERATURE'] as number,\n defaultLlmTimeout: config['DEFAULT_LLM_TIMEOUT'] as number,\n defaultLlmRetries: config['DEFAULT_LLM_RETRIES'] as number,\n defaultLlmMaxTokens: config['DEFAULT_LLM_MAX_TOKENS'] as number,\n defaultRagModel: config['DEFAULT_RAG_MODEL'] as string,\n defaultRagProvider: config['DEFAULT_RAG_PROVIDER'] as string,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IOrchestratorConfig } from './orchestrator-config.interface';\n\nexport const ORCHESTRATOR_CONFIGURATION = new InjectionToken<IOrchestratorConfig>('ORCHESTRATOR_CONFIGURATION');\n","export enum EAgentRunStatus {\n INIT = 'init',\n PRERUNNING = 'pre_running',\n RUNNING = 'running',\n POSTRUNNING = 'post_running',\n CLARIFICATION_NEEDED = 'clarification_needed',\n COMPLETED = 'completed',\n FAILED = 'failed',\n}\n","import { BaseDbModel } from '@sftech/ng-shared';\nimport { IChatMessageResponseDto } from '../dtos/chat-message-response.dto';\nimport { Chat } from './chat.model';\n\nexport class ChatMessage extends BaseDbModel {\n public message!: string;\n\n public messageType!: string;\n\n public chatId!: number;\n\n public chat?: Chat;\n\n public override fromDto(dto: IChatMessageResponseDto): ChatMessage {\n const obj = new ChatMessage();\n obj.id = dto.id!;\n obj.createdAt = dto.createdAt!;\n\n obj.message = dto.message;\n obj.messageType = dto.messageType;\n obj.chatId = dto.chatId;\n return obj;\n }\n}\n","import { BaseDbModel } from '@sftech/ng-shared';\nimport { IChatMessageResponseDto } from '../dtos/chat-message-response.dto';\nimport { IChatResponseDto } from '../dtos/chat-response.dto';\nimport { ChatMessage } from './chat-message.model';\n\nexport class Chat extends BaseDbModel {\n public messages: ChatMessage[] = [];\n\n public agentId!: number;\n\n public override fromDto(dto: IChatResponseDto): Chat {\n const obj = new Chat();\n obj.id = dto.id!;\n obj.createdAt = dto.createdAt!;\n obj.agentId = dto.agentId;\n\n obj.messages = dto.messages.map((dto: IChatMessageResponseDto) => new ChatMessage().fromDto(dto));\n return obj;\n }\n}\n","import { BaseDbModel, EFilterTypes, IBaseDbResponseDto } from '@sftech/ng-shared';\nimport { IAgentResponseDto } from '../dtos/agent-response.dto';\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\nimport { IPromptHistoryResponseDto } from '../dtos/prompt-history-response.dto';\nimport { EAgentRunStatus } from '../enums/agent-run-status.enum';\nimport { Agent } from './agent.model';\nimport { Chat } from './chat.model';\nimport { PromptHistory } from './prompt-history.model';\nimport { Prompt } from './prompt.model';\n\nexport class AgentRun extends BaseDbModel {\n public status!: EAgentRunStatus;\n\n public step!: string;\n\n public startedAt?: Date;\n\n public endedAt?: Date;\n\n public agentId?: number;\n\n public agent?: Agent;\n\n public chatId?: number;\n\n public chat?: Chat;\n\n public override propertiesToShow = ['status', 'step', 'startedAt', 'endedAt'];\n\n public override propertyUINames = new Map<string, string>([\n ['status', 'Status'],\n ['step', 'Schritt'],\n ['startedAt', 'Start'],\n ['endedAt', 'Ende'],\n ]);\n\n public override propertyFilterType = new Map<string, EFilterTypes>([\n ['status', EFilterTypes.STRING],\n ['step', EFilterTypes.STRING],\n ['startedAt', EFilterTypes.DATE],\n ['endedAt', EFilterTypes.DATE],\n ]);\n\n public override fromDto(dto: IAgentRunResponseDto): AgentRun {\n const model = new AgentRun();\n model.id = dto.id;\n model.createdAt = new Date(dto.createdAt);\n model.agentId = dto.agentId;\n model.chatId = dto.chatId;\n model.status = dto.status;\n model.startedAt = dto.startedAt;\n model.endedAt = dto.endedAt;\n model.step = dto.step;\n\n if (dto.chat) {\n model.chat = new Chat().fromDto(dto.chat);\n }\n return model;\n }\n}\n","import { IMcpToolResponseDto } from '../dtos/mcp-tool-response.dto';\n\nexport class McpTool {\n name!: string;\n identifier!: string;\n desceription!: string;\n\n public static fromDto(dto: IMcpToolResponseDto): McpTool {\n const tool = new McpTool();\n tool.name = dto.name;\n tool.identifier = dto.identifier;\n tool.desceription = dto.description;\n return tool;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, NgZone } from '@angular/core';\nimport { IApiResponse, MappedApiError, MappedApiResponseRaw } from '@sftech/ng-shared';\nimport { Observable, catchError, map, of } from 'rxjs';\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\nimport { IMcpToolResponseDto } from '../dtos/mcp-tool-response.dto';\nimport { IOrchestratorRunDto } from '../dtos/orchestrator-run.dto';\nimport { IRagInfoDto } from '../dtos/rag-ingest-config.dto';\nimport { EAgentRunStatus } from '../enums/agent-run-status.enum';\nimport { AgentRun } from '../models/agent-run.model';\nimport { McpTool } from '../models/mcp-tool.model';\n\n@Injectable()\nexport class OrchestratorService {\n public constructor(\n private readonly http: HttpClient,\n private readonly zone: NgZone,\n @Inject(ORCHESTRATOR_CONFIGURATION) private readonly config: IOrchestratorConfig,\n ) {}\n\n public runAgent(runConfig: IOrchestratorRunDto): Observable<MappedApiError | number> {\n const url = `${this.config.orchestratorUrl}/generic/run`;\n return this.http.post<IApiResponse<number>>(url, runConfig).pipe(\n map((res) => {\n return res.data as number;\n }),\n catchError((err) => {\n const error = new MappedApiError();\n error.messages = err.messages ? err.messages : [];\n return of(new MappedApiError());\n }),\n );\n }\n\n public observeAgentRun(agentRunId: number): Observable<MappedApiError | AgentRun> {\n return new Observable<AgentRun>((observer) => {\n const eventSource = new EventSource(`${this.config.orchestratorUrl}/generic/stream/${agentRunId}`);\n\n eventSource.onmessage = (event) => {\n this.zone.run(() => {\n const agentRun = new AgentRun();\n const result = agentRun.fromDto(JSON.parse(event.data) as IAgentRunResponseDto);\n observer.next(result);\n\n // Close EventSource when agent run is completed\n if (result.status === EAgentRunStatus.COMPLETED || result.status === EAgentRunStatus.FAILED) {\n eventSource.close();\n observer.complete();\n }\n });\n };\n\n eventSource.onerror = (error) => {\n this.zone.run(() => {\n eventSource.close();\n observer.error(error);\n });\n };\n\n // Cleanup, wenn unsubscribed wird\n return () => eventSource.close();\n });\n }\n\n public getTools(): Observable<MappedApiResponseRaw<McpTool[]>> {\n const url = `${this.config.orchestratorUrl}/tools`;\n return this.http.get<IApiResponse<IMcpToolResponseDto[]>>(url).pipe(\n map((res) => {\n const apiResponse = new MappedApiResponseRaw<McpTool[]>();\n apiResponse.status = res.status;\n apiResponse.messages = res.messages ? res.messages : [];\n apiResponse.isError = false;\n apiResponse.data = (res.data as IMcpToolResponseDto[]).map((t) => McpTool.fromDto(t));\n return apiResponse;\n }),\n catchError((err) => {\n const error = new MappedApiError();\n error.messages = err.messages ? err.messages : [];\n error.status = err.status ? err.status : 500;\n error.isError = true;\n return of(error);\n }),\n );\n }\n\n public storeRagDocuments(files: File[], ragInfo: IRagInfoDto): Observable<MappedApiError | boolean> {\n const url = `${this.config.orchestratorUrl}/rag/store`;\n const formData = new FormData();\n\n // Add all files to FormData\n files.forEach((file) => {\n formData.append('files', file);\n });\n\n // Add ragInfo as JSON string or separate fields\n formData.append('agentIdentifier', ragInfo.agentIdentifier);\n if (ragInfo.chatId) {\n formData.append('chatId', ragInfo.chatId.toString());\n }\n\n return this.http.post<IApiResponse<boolean>>(url, formData).pipe(\n map((res) => {\n return res.data as boolean;\n }),\n catchError((err) => {\n const error = new MappedApiError();\n error.messages = err.messages ? err.messages : [];\n error.status = err.status ? err.status : 500;\n error.isError = true;\n return of(error);\n }),\n );\n }\n\n public chatAgent(agentRunId: number, message: string): Observable<MappedApiError | number> {\n const url = `${this.config.orchestratorUrl}/generic/chat/${agentRunId}`;\n return this.http.post<IApiResponse<number>>(url, { message }).pipe(\n map((res) => {\n return res.data as number;\n }),\n catchError((err) => {\n const error = new MappedApiError();\n error.messages = err.messages ? err.messages : [];\n error.status = err.status ? err.status : 500;\n error.isError = true;\n return of(error);\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IAppConfig } from '@sftech/ng-shared';\nimport { OrchestratorConfigMapper } from './core/configuration/orchestrator-config.mapper';\nimport { ORCHESTRATOR_CONFIGURATION } from './core/configuration/orchestrator-configuration.token';\n\nimport { MarkdownModule } from 'ngx-markdown';\nimport { OrchestratorService } from './core/service/orchestrator.service';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, MarkdownModule],\n})\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\nexport class OrchestratorModule {\n public static forRoot(config: IAppConfig): ModuleWithProviders<OrchestratorModule> {\n return {\n ngModule: OrchestratorModule,\n providers: [\n {\n provide: ORCHESTRATOR_CONFIGURATION,\n useValue: OrchestratorConfigMapper.map(config),\n },\n OrchestratorService,\n ],\n };\n }\n}\n","import { Route } from '@angular/router';\nimport { adminGuard } from '@sftech/ng-auth';\n\nexport const orchestratorRoutes: Route[] = [\n {\n path: 'chats',\n loadChildren: () => import('./chats/chats.routes').then((m) => m.chatsRoutes),\n },\n {\n path: 'admin/prompts',\n loadChildren: () => import('./admin/prompts/prompts.routes').then((m) => m.promptsRoutes),\n canActivate: [adminGuard],\n },\n {\n path: 'admin/agents',\n loadChildren: () => import('./admin/agents/agents.routes').then((m) => m.agentsRoutes),\n canActivate: [adminGuard],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { c as OrchestratorModule, o as orchestratorRoutes } from './sftech-ng-orchestrator-sftech-ng-orchestrator-
|
|
1
|
+
export { c as OrchestratorModule, o as orchestratorRoutes } from './sftech-ng-orchestrator-sftech-ng-orchestrator-BquR89lx.mjs';
|
|
2
2
|
//# sourceMappingURL=sftech-ng-orchestrator.mjs.map
|