@sftech/ng-orchestrator 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-iqEbrzkb.mjs +189 -0
  2. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-iqEbrzkb.mjs.map +1 -0
  3. package/fesm2022/{sftech-ng-orchestrator-agents.routes-B9GSWOIz.mjs → sftech-ng-orchestrator-agents.routes-CVcxzNAE.mjs} +70 -13
  4. package/fesm2022/sftech-ng-orchestrator-agents.routes-CVcxzNAE.mjs.map +1 -0
  5. package/fesm2022/sftech-ng-orchestrator-chats.routes-BDe9JC4m.mjs +625 -0
  6. package/fesm2022/sftech-ng-orchestrator-chats.routes-BDe9JC4m.mjs.map +1 -0
  7. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-Cd6Ff3KE.mjs → sftech-ng-orchestrator-prompt-display.component-BkSLQgGU.mjs} +2 -2
  8. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-Cd6Ff3KE.mjs.map → sftech-ng-orchestrator-prompt-display.component-BkSLQgGU.mjs.map} +1 -1
  9. package/fesm2022/{sftech-ng-orchestrator-prompts.routes-DQZ_Hmjs.mjs → sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs} +2 -2
  10. package/fesm2022/{sftech-ng-orchestrator-prompts.routes-DQZ_Hmjs.mjs.map → sftech-ng-orchestrator-prompts.routes-DeR6lppF.mjs.map} +1 -1
  11. package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs → sftech-ng-orchestrator-sftech-ng-orchestrator-D9fLhC24.mjs} +66 -7
  12. package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-D9fLhC24.mjs.map +1 -0
  13. package/fesm2022/sftech-ng-orchestrator.mjs +1 -1
  14. package/lib/ng-orchestrator/admin/agents/components/agent/agent-rag-upload/agent-rag-upload.component.d.ts +21 -0
  15. package/lib/ng-orchestrator/admin/agents/components/agent/agents-list/agents-list.component.d.ts +2 -0
  16. package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input/agent-chat-message-human-input.component.d.ts +6 -5
  17. package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input-initial/agent-chat-message-human-input-initial.component.d.ts +20 -0
  18. package/lib/ng-orchestrator/chats/agent-chat/agent-chat.component.d.ts +7 -1
  19. package/lib/ng-orchestrator/core/configuration/orchestrator-config.interface.d.ts +2 -0
  20. package/lib/ng-orchestrator/core/dtos/agent-create-request.dto.d.ts +2 -0
  21. package/lib/ng-orchestrator/core/dtos/agent-response.dto.d.ts +2 -0
  22. package/lib/ng-orchestrator/core/dtos/agent-update-request.dto.d.ts +2 -0
  23. package/lib/ng-orchestrator/core/dtos/rag-ingest-config.dto.d.ts +4 -0
  24. package/lib/ng-orchestrator/core/models/agent.model.d.ts +2 -0
  25. package/lib/ng-orchestrator/core/service/orchestrator.service.d.ts +3 -0
  26. package/lib/ng-orchestrator/core/validators/rag.validator.d.ts +2 -0
  27. package/package.json +1 -1
  28. package/fesm2022/sftech-ng-orchestrator-agent.service-DPJMw8a4.mjs +0 -106
  29. package/fesm2022/sftech-ng-orchestrator-agent.service-DPJMw8a4.mjs.map +0 -1
  30. package/fesm2022/sftech-ng-orchestrator-agents.routes-B9GSWOIz.mjs.map +0 -1
  31. package/fesm2022/sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs +0 -556
  32. package/fesm2022/sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs.map +0 -1
  33. package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/enums/agent-run-status.enum.ts","../../../../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/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":["export enum EAgentRunStatus {\r\n INIT = 'init',\r\n PRERUNNING = 'pre_running',\r\n RUNNING = 'running',\r\n POSTRUNNING = 'post_running',\r\n CLARIFICATION_NEEDED = 'clarification_needed',\r\n COMPLETED = 'completed',\r\n FAILED = 'failed',\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BaseDbApiService, MappedApiError, MappedApiResponse } from '@sftech/ng-shared';\r\nimport { Observable } from 'rxjs';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IAgentRunCreateRequestDto } from '../dtos/agent-run-create-request.dto';\r\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\r\nimport { AgentRun } from '../models/agent-run.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AgentRunService extends BaseDbApiService<AgentRun, IAgentRunCreateRequestDto, IAgentRunResponseDto, IAgentRunResponseDto> {\r\n constructor(\r\n protected override readonly http: HttpClient,\r\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\r\n ) {\r\n super(http, config);\r\n this.url = `${this.config.orchestratorDbUrl}/agent-runs`;\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override insert(dto: IAgentRunCreateRequestDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override update(id: number, dto: IAgentRunResponseDto): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n override delete(id: number): Observable<MappedApiResponse<AgentRun> | MappedApiError> {\r\n throw new Error('Method not implemented');\r\n }\r\n\r\n protected getNewModel(): AgentRun {\r\n return new AgentRun();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BaseDbApiService, IApiResponse, IOdataResponseDto, MappedApiError, MappedApiResponse, MappedOdataResponse, OData } from '@sftech/ng-shared';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IChatCreateRequestDto } from '../dtos/chat-create-request.dto';\r\nimport { IChatResponseDto } from '../dtos/chat-response.dto';\r\nimport { IChatUpdateRequestDto } from '../dtos/chat-update-request.dto';\r\nimport { Chat } from '../models/chat.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChatService extends BaseDbApiService<Chat, IChatCreateRequestDto, IChatUpdateRequestDto, IChatResponseDto> {\r\n constructor(\r\n protected override readonly http: HttpClient,\r\n @Inject(ORCHESTRATOR_CONFIGURATION) protected override readonly config: IOrchestratorConfig,\r\n ) {\r\n super(http, config);\r\n this.url = `${this.config.orchestratorDbUrl}/chats`;\r\n }\r\n\r\n public override odata(odataQuery: OData): Observable<MappedOdataResponse<Chat> | MappedApiError> {\r\n return this.http.get<IApiResponse<IOdataResponseDto<IChatResponseDto>>>(`${this.url}/${odataQuery.toGetParameter()}`).pipe(\r\n map((response: IApiResponse<IOdataResponseDto<IChatResponseDto>>) => this.responseOdataMapping(response)),\r\n catchError((error) => {\r\n return this.httpErrorToApiResponse(error);\r\n }),\r\n );\r\n }\r\n\r\n public override insert(dto: IChatCreateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\r\n return this.http.post<IApiResponse<IChatResponseDto>>(this.url, dto).pipe(\r\n map((response: IApiResponse<IChatResponseDto>) => this.responseMapping(response)),\r\n catchError((error) => {\r\n return this.httpErrorToApiResponse(error);\r\n }),\r\n );\r\n }\r\n\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n public override update(id: number, dto: IChatUpdateRequestDto): Observable<MappedApiResponse<Chat> | MappedApiError> {\r\n throw new Error('update of a chat is not allowed');\r\n }\r\n\r\n protected override getNewModel(): Chat {\r\n return new Chat();\r\n }\r\n}\r\n","import { faBrain, faCheck, faCircleQuestion, faClipboardCheck, faCog, faLaptop, faNetworkWired, faNoteSticky, faSpinner, faUser, faXmark } from '@fortawesome/free-solid-svg-icons';\r\nimport { IconProvider } from '@sftech/ng-shared';\r\n\r\nexport class OrchestratorIconProvider extends IconProvider {\r\n public static readonly agentRunStatusInit = faNoteSticky;\r\n public static readonly agentRunStatusRunning = faCog;\r\n public static readonly agentRunStatusCompleted = faCheck;\r\n public static readonly agentRunStatusFailed = faXmark;\r\n public static readonly agentRunStatusPrerun = faSpinner;\r\n public static readonly agentRunStatusPostrun = faClipboardCheck;\r\n public static readonly agentRunStatusClarify = faCircleQuestion;\r\n\r\n public static readonly messageTypeAI = faBrain;\r\n public static readonly messageTypeHuman = faUser;\r\n public static readonly messageTypeSystem = faNetworkWired;\r\n}\r\n","import { IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport { IconProvider } from '@sftech/ng-shared';\r\nimport { OrchestratorIconProvider } from '../../../core/dataprovider/orchestrator-icon.provider';\r\nimport { EAgentRunStatus } from '../../../core/enums/agent-run-status.enum';\r\n\r\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\r\nexport class AgentRunIconTextDataprovider {\r\n private static readonly UNKNOWN_TEXT = 'Unbekannt';\r\n\r\n public static getTextForStatus(status: EAgentRunStatus | undefined): string {\r\n if (!status) {\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return 'Anlage';\r\n case EAgentRunStatus.RUNNING:\r\n return 'In Bearbeitung';\r\n case EAgentRunStatus.COMPLETED:\r\n return 'Abgeschlossen';\r\n case EAgentRunStatus.FAILED:\r\n return 'Fehlgeschlagen';\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return 'Rückfrage';\r\n case EAgentRunStatus.PRERUNNING:\r\n return 'Vorbereitung';\r\n case EAgentRunStatus.POSTRUNNING:\r\n return 'Nachbereitung';\r\n default:\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n }\r\n\r\n public static getIconForStatus(status: EAgentRunStatus | undefined): IconDefinition {\r\n if (!status) {\r\n return IconProvider.unknown;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return OrchestratorIconProvider.agentRunStatusInit;\r\n case EAgentRunStatus.RUNNING:\r\n return OrchestratorIconProvider.agentRunStatusRunning;\r\n case EAgentRunStatus.COMPLETED:\r\n return OrchestratorIconProvider.agentRunStatusCompleted;\r\n case EAgentRunStatus.FAILED:\r\n return OrchestratorIconProvider.agentRunStatusFailed;\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return OrchestratorIconProvider.agentRunStatusClarify;\r\n case EAgentRunStatus.PRERUNNING:\r\n return OrchestratorIconProvider.agentRunStatusPrerun;\r\n case EAgentRunStatus.POSTRUNNING:\r\n return OrchestratorIconProvider.agentRunStatusPostrun;\r\n default:\r\n return IconProvider.unknown;\r\n }\r\n }\r\n\r\n public static getIconClassesForStatus(status: EAgentRunStatus | undefined): string {\r\n if (!status) {\r\n return AgentRunIconTextDataprovider.UNKNOWN_TEXT;\r\n }\r\n switch (status) {\r\n case EAgentRunStatus.INIT:\r\n return '';\r\n case EAgentRunStatus.RUNNING:\r\n return 'text-primary-600';\r\n case EAgentRunStatus.COMPLETED:\r\n return 'text-green-600';\r\n case EAgentRunStatus.FAILED:\r\n return 'text-red-600';\r\n case EAgentRunStatus.CLARIFICATION_NEEDED:\r\n return '';\r\n case EAgentRunStatus.PRERUNNING:\r\n return '';\r\n case EAgentRunStatus.POSTRUNNING:\r\n return '';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n public static getIconForMessageType(messageType: string): IconDefinition {\r\n switch (messageType) {\r\n case 'system':\r\n return OrchestratorIconProvider.messageTypeSystem;\r\n case 'human':\r\n return OrchestratorIconProvider.messageTypeHuman;\r\n case 'ai':\r\n return OrchestratorIconProvider.messageTypeAI;\r\n default:\r\n return IconProvider.unknown;\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, effect, inject, input } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { FormErrorDisplayComponent, MappedApiError } from '@sftech/ng-shared';\r\nimport { AgentRunIconTextDataprovider } from 'libs/ng-orchestrator/src/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Button } from 'primeng/button';\r\nimport { FloatLabel } from 'primeng/floatlabel';\r\nimport { InputText } from 'primeng/inputtext';\r\nimport { Agent } from '../../../core/models/agent.model';\r\n\r\nimport { OrchestratorService } from '../../../core/service/orchestrator.service';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat-message-human-input',\r\n imports: [FaIconComponent, Button, FloatLabel, FormErrorDisplayComponent, InputText, ReactiveFormsModule],\r\n templateUrl: './agent-chat-message-human-input.component.html',\r\n styleUrl: './agent-chat-message-human-input.component.css',\r\n})\r\nexport class AgentChatMessageHumanInputComponent {\r\n public agent = input<Agent>();\r\n\r\n @Output() agentRunIdReceived = new EventEmitter<number>();\r\n\r\n public messageService = inject(MessageService);\r\n public orchestratorService = inject(OrchestratorService);\r\n\r\n public form = new FormGroup({});\r\n\r\n private _agentChanged$ = effect(() => {\r\n this.agent()!\r\n .llmUserPrompt?.template.match(/{{(.*?)}}/g)\r\n ?.forEach((m: string) => {\r\n const key = m.slice(2, -2);\r\n this.form.addControl(key, new FormControl('', [Validators.required]));\r\n });\r\n });\r\n\r\n protected readonly iconTextMapper = AgentRunIconTextDataprovider;\r\n\r\n public run(): void {\r\n if (this.form!.valid && this.form!.valid) {\r\n this.orchestratorService\r\n .runAgent({\r\n agentIdentifier: this.agent()!.identifier,\r\n userInput: this.form!.value,\r\n })\r\n .subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: res.messages.join('|') });\r\n return;\r\n }\r\n this.agentRunIdReceived.emit(res);\r\n });\r\n } else {\r\n console.error('Form is invalid');\r\n }\r\n }\r\n\r\n public getInputFormControlNames(): string[] {\r\n return Object.keys(this.form!.controls);\r\n }\r\n}\r\n","<div class=\"my-2 p-4 rounded bg-white flex border-1 flex-row items-center text-right border-gray-600 flex-row-reverse\">\r\n <div class=\"me-4 ms-4 text-gray-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('human')\" size=\"2x\"></fa-icon>\r\n </div>\r\n <div class=\"m-0 flex-grow\">\r\n <div class=\"template border-b-1 border-gray-600 p-3\">{{this.agent()!.llmUserPrompt?.template}}</div>\r\n <hr />\r\n <div class=\"inputs mt-2\">\r\n <form [formGroup]=\"form!\">\r\n <div class=\"flex justify-end\">\r\n @for (controlName of getInputFormControlNames(); track controlName) {\r\n <div>\r\n <p-floatlabel variant=\"in\" class=\"w-full\">\r\n <input type=\"text\" id=\"{{ controlName}}\" formControlName=\"{{ controlName }}\" pInputText\r\n class=\"w-full\"/>\r\n <label for=\"{{ controlName }}\">{{ controlName }}</label>\r\n </p-floatlabel>\r\n <sftech-form-error-display [control]=\"form!.get(controlName)!\"\r\n [label]=\"controlName\"></sftech-form-error-display>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mt-2\">\r\n <p-button type=\"submit\" label=\"Senden\" (onClick)=\"run()\" tabindex=\"1\"/>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>","import { JsonPipe, NgClass } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { MarkdownComponent } from 'ngx-markdown';\r\nimport { Skeleton } from 'primeng/skeleton';\r\nimport { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat-message',\r\n imports: [NgClass, FaIconComponent, MarkdownComponent, JsonPipe, Skeleton],\r\n templateUrl: './agent-chat-message.component.html',\r\n styleUrl: './agent-chat-message.component.css',\r\n})\r\nexport class AgentChatMessageComponent {\r\n public message = input('message');\r\n public type = input('type');\r\n\r\n public iconTextMapper = AgentRunIconTextDataprovider;\r\n\r\n public extractJson(message: string): string {\r\n const jsonMatch = message.match(/```json\\s*([\\s\\S]*?)\\s*```/);\r\n if (jsonMatch && jsonMatch[1]) {\r\n try {\r\n const data = JSON.parse(jsonMatch[1]);\r\n const md = this._toMarkdownFromJson(data);\r\n return md;\r\n } catch (e) {\r\n console.error('Failed to parse JSON:', e);\r\n return 'Invalid JSON';\r\n }\r\n }\r\n return 'No JSON found';\r\n }\r\n\r\n private _toMarkdownFromJson(obj: any): string {\r\n let md = '';\r\n\r\n for (const key of Object.keys(obj)) {\r\n const value = obj[key];\r\n\r\n // Überschrift für jede Kategorie\r\n md += `\\n### ${key}\\n\\n`;\r\n\r\n if (Array.isArray(value) && value.length && typeof value[0] === 'object') {\r\n // Tabellen-Header\r\n const headers = Object.keys(value[0]);\r\n md += `| ${headers.join(' | ')} |\\n`;\r\n md += `| ${headers.map(() => '---').join(' | ')} |\\n`;\r\n\r\n // Tabellen-Zeilen\r\n for (const row of value) {\r\n md += `| ${headers.map((h) => row[h]).join(' | ')} |\\n`;\r\n }\r\n md += '\\n';\r\n } else if (typeof value === 'object') {\r\n // Rekursiver Aufruf bei verschachtelten Objekten\r\n md += this._toMarkdownFromJson(value);\r\n } else {\r\n // Einfaches Feld\r\n md += `- **${key}:** ${value}\\n`;\r\n }\r\n }\r\n\r\n return md;\r\n }\r\n}\r\n","@if (type() === 'ai_loading') {\r\n <div class=\"p-4 rounded bg-white flex border-1 flex-row items-center\">\r\n <div class=\"me-4 ms-4 text-green-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" size=\"2x\"></fa-icon>\r\n </div>\r\n <div class=\"m-0 w-full\">\r\n <div class=\"flex space-x-2 justify-start items-center\">\r\n <div class=\"me-4\">Die Antwort wird ermittelt</div>\r\n <div class=\"w-3 h-3 bg-green-600 rounded-full animate-bounceDelay\"></div>\r\n <div class=\"w-3 h-3 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.32s]\"></div>\r\n <div class=\"w-3 h-3 bg-green-600 rounded-full animate-bounceDelay [animation-delay:-0.16s]\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n} @else if (type() === 'ai_failed') {\r\n <div class=\"p-4 rounded bg-red-100 flex border-1 flex-row items-center\">\r\n <div class=\"me-4 ms-4 text-green-600\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType('ai')\" size=\"2x\"></fa-icon>\r\n </div>\r\n <div class=\"m-0 w-full\">\r\n {{\r\n message()\r\n }}\r\n </div>\r\n\r\n </div>\r\n\r\n} @else {\r\n <div class=\"p-4 rounded bg-white flex border-1 flex-row items-center\" [ngClass]=\"{\r\n 'border-green-600 bg-green-200': type() === 'ai',\r\n 'text-right border-gray-600 flex-row-reverse': type() === 'human',\r\n 'border-yellow-600 bg-yellow-100': type() === 'system',\r\n }\">\r\n <div class=\"me-4 ms-4\" [ngClass]=\"{\r\n 'text-green-600': type() === 'ai',\r\n 'text-gray-600': type() === 'human',\r\n 'text-yellow-600': type() === 'system',\r\n }\">\r\n <fa-icon [icon]=\"iconTextMapper.getIconForMessageType(type())\" size=\"2x\"></fa-icon>\r\n </div>\r\n @if (message().includes('```json')) {\r\n <div class=\"m-0 prose prose-sm max-w-none\" markdown>{{ extractJson(message()) }}</div>\r\n } @else {\r\n <div class=\"m-0\" markdown>{{ message() }}</div>\r\n }\r\n </div>\r\n}\r\n\r\n\r\n\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, computed, effect, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { EFilterOperator, EFilterTypes, ESortDirection, IconProvider, MappedApiError, MappedOdataResponse, OData, OdataFilter } from '@sftech/ng-shared';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ButtonDirective } from 'primeng/button';\r\nimport { Panel } from 'primeng/panel';\r\nimport { Subscription, map } from 'rxjs';\r\nimport { IChatMessageResponseDto } from '../../core/dtos/chat-message-response.dto';\r\nimport { EAgentRunStatus } from '../../core/enums/agent-run-status.enum';\r\nimport { AgentRun } from '../../core/models/agent-run.model';\r\nimport { Agent } from '../../core/models/agent.model';\r\nimport { ChatMessage } from '../../core/models/chat-message.model';\r\nimport { Chat } from '../../core/models/chat.model';\r\nimport { AgentRunService } from '../../core/service/agent-run.service';\r\nimport { AgentService } from '../../core/service/agent.service';\r\nimport { ChatService } from '../../core/service/chat.service';\r\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\r\nimport { AgentRunIconTextDataprovider } from '../core/dataprovider/agent-run-icon-text.dataprovider';\r\nimport { AgentChatMessageHumanInputComponent } from './agent-chat-message-human-input/agent-chat-message-human-input.component';\r\nimport { AgentChatMessageComponent } from './agent-chat-message/agent-chat-message.component';\r\n\r\n@Component({\r\n selector: 'sftech-agent-chat',\r\n imports: [Panel, ButtonDirective, AgentChatMessageComponent, DatePipe, FaIconComponent, AgentChatMessageHumanInputComponent],\r\n templateUrl: './agent-chat.component.html',\r\n styleUrl: './agent-chat.component.css',\r\n})\r\nexport class AgentChatComponent implements OnInit, OnDestroy {\r\n protected readonly activeRoute = inject(ActivatedRoute);\r\n protected readonly router = inject(Router);\r\n\r\n protected readonly agentService = inject(AgentService);\r\n protected readonly agentRunService = inject(AgentRunService);\r\n protected readonly chatService = inject(ChatService);\r\n protected readonly orchestratorService = inject(OrchestratorService);\r\n protected readonly messageService = inject(MessageService);\r\n\r\n protected agent!: Agent;\r\n\r\n protected readonly agentRuns = signal<AgentRun[] | undefined>(undefined);\r\n\r\n protected selectedAgentRun = signal<AgentRun | undefined>(undefined);\r\n protected selectedAgent = signal<Agent | undefined>(undefined);\r\n\r\n public iconProvider = IconProvider;\r\n public iconTextMapper = AgentRunIconTextDataprovider;\r\n public agentRunStatus = EAgentRunStatus;\r\n\r\n public subscriptions: Subscription[] = [];\r\n\r\n protected selectedAgentRunChanged$ = effect(() => {\r\n if (!this.selectedAgentRun()) {\r\n return;\r\n }\r\n });\r\n\r\n public loading = computed(() => {\r\n if (!this.selectedAgentRun()?.status) {\r\n return false;\r\n }\r\n return ![EAgentRunStatus.COMPLETED, EAgentRunStatus.CLARIFICATION_NEEDED, EAgentRunStatus.FAILED, EAgentRunStatus.INIT].includes(this.selectedAgentRun()!.status);\r\n });\r\n\r\n public ngOnInit(): void {\r\n console.log('ngOnInit');\r\n const agentId = Number(this.activeRoute.snapshot.paramMap.get('agentId'));\r\n const agentRunId = Number(this.activeRoute.snapshot.paramMap.get('agentRunId'));\r\n if (agentId) {\r\n const odata = new OData();\r\n odata.filter.addAnd(new OdataFilter('agentId', agentId, EFilterOperator.EQUALS, EFilterTypes.NUMERIC));\r\n odata.order.column = 'updatedAt';\r\n odata.order.direction = ESortDirection.DESC;\r\n this.agentRunService\r\n .odata(odata)\r\n .pipe(\r\n map((res: MappedOdataResponse<AgentRun> | MappedApiError) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden der Chat-Daten',\r\n });\r\n throw new Error(res.messages.join('|'));\r\n }\r\n this.selectedAgentRun.set(res.data.items.find((ar) => agentRunId == ar.id));\r\n this.agentRuns.set(res.data.items);\r\n }),\r\n )\r\n .subscribe();\r\n this.agentService.get(agentId, true).subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden des Agenten-Daten',\r\n });\r\n throw new Error(res.messages.join('|'));\r\n }\r\n this.selectedAgent.set(res.data as Agent);\r\n });\r\n } else {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Laden des Agenten' });\r\n // this.router.navigate(['../chats']);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n }\r\n\r\n public startNewRun(): void {\r\n if (!this.selectedAgent()) {\r\n return;\r\n }\r\n const agentRun = new AgentRun();\r\n agentRun.agentId = this.selectedAgent()!.id;\r\n agentRun.agent = this.selectedAgent();\r\n agentRun.status = EAgentRunStatus.INIT;\r\n agentRun.createdAt = new Date();\r\n agentRun.chat = new Chat();\r\n const systemContextMessage = new ChatMessage();\r\n systemContextMessage.messageType = 'system';\r\n systemContextMessage.message = `${this.selectedAgent()!.llmSystemPrompt?.template}Antworte nach folgender Spezifikation:<br>${this.selectedAgent()?.answerSpecification}`;\r\n agentRun.chat.messages = [systemContextMessage];\r\n this.selectedAgentRun.set(agentRun);\r\n }\r\n\r\n public selectAgentRun(agentRun: AgentRun): void {\r\n this.selectedAgentRun.set(agentRun);\r\n this._loadChat();\r\n\r\n if (this.selectedAgentRun()!.id) {\r\n this._setRelativeUrl();\r\n }\r\n }\r\n\r\n public startObservingAgentRun(agentRunId: number) {\r\n this.subscriptions.push(\r\n this.orchestratorService.observeAgentRun(agentRunId).subscribe({\r\n next: (update: AgentRun | MappedApiError) => {\r\n if (update instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\r\n return;\r\n }\r\n // biome-ignore lint/correctness/noUnusedVariables: <explanation>\r\n this.selectedAgentRun.update((agentRun) => {\r\n return this._mapUpdateOnAgentRun(agentRun!, update);\r\n });\r\n if (update.id && this.agentRuns()?.filter((ars) => ars.id === update.id).length === 0) {\r\n this.agentRuns.update((ars) => {\r\n ars?.unshift(update);\r\n return ars;\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Fehler beim Beobachten des Agentenlaufs' });\r\n console.error('Error observing agent run:', err);\r\n },\r\n complete: () => {\r\n console.log('Completed observing agent run');\r\n },\r\n }),\r\n );\r\n }\r\n\r\n public goBack() {\r\n const index = this.router.url.indexOf('/agent/');\r\n const result = this.router.url.substring(0, index);\r\n this.router.navigateByUrl(result);\r\n }\r\n\r\n private _loadChat(): void {\r\n if (!this.selectedAgentRun() || !this.selectedAgentRun()!.chatId) {\r\n return;\r\n }\r\n this.chatService.get(this.selectedAgentRun()!.chatId!, true).subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: 'Fehler beim Laden der Chat-Daten',\r\n });\r\n }\r\n this.selectedAgentRun.update((ar) => {\r\n ar!.chat = res.data as Chat;\r\n return ar;\r\n });\r\n });\r\n }\r\n\r\n private _setRelativeUrl() {\r\n let relativeUrl: string;\r\n if (this.router.url.includes('/r/')) {\r\n const index = this.router.url.indexOf('/r/') + 3; // 3 = Länge von \"/r/\"\r\n const result = this.router.url.substring(0, index);\r\n\r\n relativeUrl = `${result}${this.selectedAgentRun()!.id}`;\r\n } else {\r\n relativeUrl = `r/${this.selectedAgentRun()!.id}`;\r\n }\r\n this.router.navigate([relativeUrl], {\r\n relativeTo: this.activeRoute,\r\n replaceUrl: true, // überschreibt den Verlauf\r\n skipLocationChange: false, // false = URL sichtbar, true = nur intern\r\n });\r\n }\r\n\r\n private _mapUpdateOnAgentRun(agentRun: AgentRun, update: AgentRun): AgentRun {\r\n if (!agentRun.chat?.messages && !update.chat?.messages) {\r\n return update;\r\n }\r\n\r\n if (!update.chat && agentRun.chat) {\r\n update.chat = agentRun.chat;\r\n }\r\n\r\n if (agentRun.chat?.messages && update.chat!.messages.length <= agentRun.chat!.messages.length) {\r\n update.chat!.messages = agentRun.chat!.messages;\r\n }\r\n console.log('Mapped AgentRun:', update.chat!.messages.length, agentRun.chat!.messages.length);\r\n return update;\r\n }\r\n}\r\n","<div class=\"flex h-full shadow-lg\">\r\n <div class=\"chats-panel border-r-1 border-gray-300 p-2 w-[250px] flex-shrink-0 h-full\">\r\n <div class=\"flex justify-between\">\r\n <div (click)=\"goBack()\" tabindex=\"2\">\r\n <fa-icon [icon]=\"iconProvider.back\" class=\"me-3\"></fa-icon>\r\n </div>\r\n <h2 class=\"text-2xl font-bold mb-4\">{{ selectedAgent()?.name }}</h2>\r\n </div>\r\n @if (selectedAgent()) {\r\n <div class=\"mt-0 mb-2\">\r\n <button pButton type=\"button\" class=\"w-full mt-4\" (click)=\"startNewRun()\" tabindex=\"3\">\r\n <fa-icon [icon]=\"iconProvider.add\"></fa-icon>\r\n neu\r\n </button>\r\n </div>\r\n }\r\n <div class=\"p-1 m-2 border-1 border-gray-300 rounded-lg bg-white max-h-[calc(100%-120px)] overflow-y-auto\">\r\n\r\n\r\n @if (agentRuns() === undefined) {\r\n\r\n <p class=\"m-0\">\r\n Die Chats werden geladen...\r\n </p>\r\n } @else if (!agentRuns()?.length) {\r\n <p class=\"m-0\">\r\n Bisher noch keine Chats vorhanden\r\n </p>\r\n } @else {\r\n <div class=\"my-2 mx-2 flex flex-col gap-1 overflow-y-auto\">\r\n @for (agentRun of agentRuns(); track agentRun) {\r\n <div class=\"border border-gray-300 rounded-lg p-4 hover:shadow-lg transition cursor-pointer\"\r\n (click)=\"selectAgentRun(agentRun)\"\r\n [class.bg-blue-100]=\"selectedAgentRun()?.id === agentRun.id\">\r\n <div class=\"text-sm text-gray-500\">{{ agentRun.createdAt | date:'dd.MM.YY - hh:mm' }}</div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"chat bg-gray-50 flex-grow-1 p-3 overflow-y-auto m-1\">\r\n @if (selectedAgentRun() === undefined) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Bitte einen Chat aus der linken Liste auswählen\r\n </p>\r\n </p-panel>\r\n } @else if (selectedAgent() === undefined) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Die Chat-Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n } @else {\r\n <div class=\"flex flex-col h-full\">\r\n <div class=\"border-b border-gray-300 pb-2 mb-2 flex justify-between\">\r\n <h2 class=\"text-xl font-semibold\">\r\n Agent: {{ selectedAgent()?.name }}\r\n vom {{ (selectedAgentRun()?.createdAt ?? selectedAgentRun()?.startedAt | date:'dd.MM.yyyy - hh:mm') }}</h2>\r\n <p class=\"text-gray-600 font-bold\">Status:\r\n <fa-icon [icon]=\"iconTextMapper.getIconForStatus(selectedAgentRun()?.status)\" size=\"2x\"\r\n [classList]=\"iconTextMapper.getIconClassesForStatus(selectedAgentRun()?.status)\"\r\n [animation]=\"selectedAgentRun()?.status === 'running' ? 'spin' : undefined\"\r\n class=\"ms-2\"></fa-icon>\r\n </p>\r\n </div>\r\n @if (selectedAgentRun()!.chat) {\r\n @for (message of selectedAgentRun()!.chat!.messages; track message.id) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message [message]=\"message.message\"\r\n [type]=\"message.messageType\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n }\r\n @if (selectedAgentRun()!.status === agentRunStatus.INIT) {\r\n <sftech-agent-chat-message-human-input [agent]=\"selectedAgent()\"\r\n (agentRunIdReceived)=\"startObservingAgentRun($event)\"></sftech-agent-chat-message-human-input>\r\n }\r\n @if (loading()) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message [message]=\"'Am Überlegen'\"\r\n [type]=\"'ai_loading'\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n @if (selectedAgentRun()?.status === agentRunStatus.FAILED) {\r\n <div class=\"mb-2\">\r\n <sftech-agent-chat-message\r\n [message]=\"'Es ist ein Fehler aufgetreten! Bitte versuche es zu einem späteren Zeitpunkt erneut.'\"\r\n [type]=\"'ai_failed'\"></sftech-agent-chat-message>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, OnInit, inject, signal } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { BaseListComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Panel } from 'primeng/panel';\r\nimport { IAgentCreateDto } from '../../core/dtos/agent-create-request.dto';\r\nimport { IAgentResponseDto } from '../../core/dtos/agent-response.dto';\r\nimport { Agent } from '../../core/models/agent.model';\r\nimport { McpTool } from '../../core/models/mcp-tool.model';\r\nimport { AgentService } from '../../core/service/agent.service';\r\nimport { OrchestratorService } from '../../core/service/orchestrator.service';\r\n\r\n@Component({\r\n selector: 'sftech-agent-selection',\r\n imports: [Panel, RouterLink],\r\n providers: [DialogService],\r\n templateUrl: './agent-selection.component.html',\r\n styleUrl: './agent-selection.component.css',\r\n})\r\nexport class AgentSelectionComponent extends BaseListComponent<Agent, IAgentCreateDto, IAgentCreateDto, IAgentResponseDto> implements OnInit {\r\n protected _repo = inject(AgentService);\r\n protected _route = 'chats/agents';\r\n\r\n protected orchestratorService = inject(OrchestratorService);\r\n protected messageService = inject(MessageService);\r\n protected iconProvider = IconProvider;\r\n\r\n public tools = signal<McpTool[] | undefined>(undefined);\r\n\r\n public override ngOnInit() {\r\n super.ngOnInit();\r\n this.orchestratorService.getTools().subscribe((res) => {\r\n if (res instanceof MappedApiError) {\r\n this.messageService.add({ severity: 'error', summary: 'Fehler', detail: res.messages.join('|') });\r\n return;\r\n }\r\n this.tools.set(res.data);\r\n });\r\n }\r\n\r\n public getToolNames(agent: Agent) {\r\n if (!agent.tools || agent.tools.length === 0) {\r\n return 'Keine Werkzeuge';\r\n }\r\n return agent.tools\r\n .map((tool) => this.tools()?.find((t) => t.identifier === tool)?.name)\r\n .filter((name) => !!name)\r\n .join(' | ');\r\n }\r\n}\r\n","<h2 class=\"mt-4 text-2xl font-bold mb-4\">Agenten Auswahl</h2>\r\n\r\n@if (data() === undefined) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n} @else if (!data()?.length) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Keine Daten vorhanden\r\n </p>\r\n </p-panel>\r\n} @else {\r\n <div class=\"grid grid-cols-4 gap-4\">\r\n @for (agent of data(); track agent) {\r\n <div class=\"aspect-square flex justify-between flex-col border border-gray-300 rounded-lg p-4 hover:shadow-lg transition cursor-pointer shadow-xl hover:shadow-sm\" [routerLink]=\"['agent/' + agent.id]\">\r\n <div>\r\n <h2 class=\"text-lg font-semibold mb-6\">{{ agent.name }}</h2>\r\n <p class=\"text-gray-600\">{{ agent.description }}</p>\r\n </div>\r\n <div class=\"text-sm text-gray-500\">Tools: {{ getToolNames(agent) }}</div>\r\n </div>\r\n }\r\n </div>\r\n}","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sftech-chats',\r\n imports: [RouterOutlet],\r\n template: '<router-outlet></router-outlet>',\r\n styles: '',\r\n})\r\nexport class ChatsComponent {}\r\n","import { AuthenticationGuard } from '@sftech/ng-auth';\r\nimport { AgentChatComponent } from './agent-chat/agent-chat.component';\r\nimport { AgentSelectionComponent } from './agent-selection/agent-selection.component';\r\nimport { ChatsComponent } from './chats.component';\r\n\r\nexport const chatsRoutes = [\r\n {\r\n path: '',\r\n component: ChatsComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: AgentSelectionComponent,\r\n },\r\n {\r\n path: 'agent/:agentId/r/:agentRunId',\r\n component: AgentChatComponent,\r\n },\r\n {\r\n path: 'agent/:agentId',\r\n component: AgentChatComponent,\r\n },\r\n ],\r\n canActivate: [AuthenticationGuard],\r\n },\r\n];\r\n"],"names":["AgentRunIconTextDataprovider","i1"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.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/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';\r\nimport { IOrchestratorConfig } from './orchestrator-config.interface';\r\n\r\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\r\nexport class OrchestratorConfigMapper {\r\n public static map(config: IAppConfig): IOrchestratorConfig {\r\n return {\r\n orchestratorUrl: (config['ORCHESTRATOR_URL'] as string) ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator`,\r\n orchestratorDbUrl: (config['ORCHESTRATOR_DB_URL'] as string) ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator-db`,\r\n defaultConnectorUrl: config['DEFAULT_CONNECTOR_URL'] as string,\r\n defaultAnswerSpecification: config['DEFAULT_ANSWER_SPECIFICATION'] as string,\r\n defaultLlmProvider: config['DEFAULT_LLM_PROVIDER'] as string,\r\n defaultLlmModel: config['DEFAULT_LLM_MODEL'] as string,\r\n defaultLlmTemperature: config['DEFAULT_LLM_TEMPERATURE'] as number,\r\n defaultLlmTimeout: config['DEFAULT_LLM_TIMEOUT'] as number,\r\n defaultLlmRetries: config['DEFAULT_LLM_RETRIES'] as number,\r\n defaultLlmMaxTokens: config['DEFAULT_LLM_MAX_TOKENS'] as number,\r\n };\r\n }\r\n}\r\n","import {InjectionToken} from \"@angular/core\";\r\nimport {IOrchestratorConfig} from \"./orchestrator-config.interface\";\r\n\r\nexport const ORCHESTRATOR_CONFIGURATION = new InjectionToken<IOrchestratorConfig>('ORCHESTRATOR_CONFIGURATION');","import { BaseDbModel } from '@sftech/ng-shared';\r\nimport { IChatMessageResponseDto } from '../dtos/chat-message-response.dto';\r\nimport { Chat } from './chat.model';\r\n\r\nexport class ChatMessage extends BaseDbModel {\r\n public message!: string;\r\n\r\n public messageType!: string;\r\n\r\n public chatId!: number;\r\n\r\n public chat?: Chat;\r\n\r\n public override fromDto(dto: IChatMessageResponseDto): ChatMessage {\r\n const obj = new ChatMessage();\r\n obj.id = dto.id!;\r\n obj.createdAt = dto.createdAt!;\r\n\r\n obj.message = dto.message;\r\n obj.messageType = dto.messageType;\r\n obj.chatId = dto.chatId;\r\n return obj;\r\n }\r\n}\r\n","import { BaseDbModel } from '@sftech/ng-shared';\r\nimport { IChatMessageResponseDto } from '../dtos/chat-message-response.dto';\r\nimport { IChatResponseDto } from '../dtos/chat-response.dto';\r\nimport { ChatMessage } from './chat-message.model';\r\n\r\nexport class Chat extends BaseDbModel {\r\n public messages: ChatMessage[] = [];\r\n\r\n public agentId!: number;\r\n\r\n public override fromDto(dto: IChatResponseDto): Chat {\r\n const obj = new Chat();\r\n obj.id = dto.id!;\r\n obj.createdAt = dto.createdAt!;\r\n obj.agentId = dto.agentId;\r\n\r\n obj.messages = dto.messages.map((dto: IChatMessageResponseDto) => new ChatMessage().fromDto(dto));\r\n return obj;\r\n }\r\n}\r\n","import { BaseDbModel, EFilterTypes, IBaseDbResponseDto } from '@sftech/ng-shared';\r\nimport { IAgentResponseDto } from '../dtos/agent-response.dto';\r\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\r\nimport { IPromptHistoryResponseDto } from '../dtos/prompt-history-response.dto';\r\nimport { EAgentRunStatus } from '../enums/agent-run-status.enum';\r\nimport { Agent } from './agent.model';\r\nimport { Chat } from './chat.model';\r\nimport { PromptHistory } from './prompt-history.model';\r\nimport { Prompt } from './prompt.model';\r\n\r\nexport class AgentRun extends BaseDbModel {\r\n public status!: EAgentRunStatus;\r\n\r\n public step!: string;\r\n\r\n public startedAt?: Date;\r\n\r\n public endedAt?: Date;\r\n\r\n public agentId?: number;\r\n\r\n public agent?: Agent;\r\n\r\n public chatId?: number;\r\n\r\n public chat?: Chat;\r\n\r\n public override propertiesToShow = ['status', 'step', 'startedAt', 'endedAt'];\r\n\r\n public override propertyUINames = new Map<string, string>([\r\n ['status', 'Status'],\r\n ['step', 'Schritt'],\r\n ['startedAt', 'Start'],\r\n ['endedAt', 'Ende'],\r\n ]);\r\n\r\n public override propertyFilterType = new Map<string, EFilterTypes>([\r\n ['status', EFilterTypes.STRING],\r\n ['step', EFilterTypes.STRING],\r\n ['startedAt', EFilterTypes.DATE],\r\n ['endedAt', EFilterTypes.DATE],\r\n ]);\r\n\r\n public override fromDto(dto: IAgentRunResponseDto): AgentRun {\r\n const model = new AgentRun();\r\n model.id = dto.id;\r\n model.createdAt = new Date(dto.createdAt);\r\n model.agentId = dto.agentId;\r\n model.chatId = dto.chatId;\r\n model.status = dto.status;\r\n model.startedAt = dto.startedAt;\r\n model.endedAt = dto.endedAt;\r\n model.step = dto.step;\r\n\r\n if (dto.chat) {\r\n model.chat = new Chat().fromDto(dto.chat);\r\n }\r\n return model;\r\n }\r\n}\r\n","import {IMcpToolResponseDto} from \"../dtos/mcp-tool-response.dto\";\r\n\r\nexport class McpTool {\r\n name!: string;\r\n identifier!: string;\r\n desceription!: string;\r\n\r\n public static fromDto(dto: IMcpToolResponseDto): McpTool {\r\n const tool = new McpTool();\r\n tool.name = dto.name;\r\n tool.identifier = dto.identifier;\r\n tool.desceription = dto.description;\r\n return tool;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, NgZone } from '@angular/core';\r\nimport { IApiResponse, MappedApiError, MappedApiResponseRaw } from '@sftech/ng-shared';\r\nimport { Observable, catchError, map, of } from 'rxjs';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IAgentRunResponseDto } from '../dtos/agent-run-response.dto';\r\nimport { IMcpToolResponseDto } from '../dtos/mcp-tool-response.dto';\r\nimport { IOrchestratorRunDto } from '../dtos/orchestrator-run.dto';\r\nimport { AgentRun } from '../models/agent-run.model';\r\nimport { McpTool } from '../models/mcp-tool.model';\r\n\r\n@Injectable()\r\nexport class OrchestratorService {\r\n public constructor(\r\n private readonly http: HttpClient,\r\n private readonly zone: NgZone,\r\n @Inject(ORCHESTRATOR_CONFIGURATION) private readonly config: IOrchestratorConfig,\r\n ) {}\r\n\r\n public runAgent(runConfig: IOrchestratorRunDto): Observable<MappedApiError | number> {\r\n const url = `${this.config.orchestratorUrl}/generic/run`;\r\n return this.http.post<IApiResponse<number>>(url, runConfig).pipe(\r\n map((res) => {\r\n return res.data as number;\r\n }),\r\n catchError((err) => {\r\n const error = new MappedApiError();\r\n error.messages = err.messages ? err.messages : [];\r\n return of(new MappedApiError());\r\n }),\r\n );\r\n }\r\n\r\n public observeAgentRun(agentRunId: number): Observable<MappedApiError | AgentRun> {\r\n return new Observable<AgentRun>((observer) => {\r\n const eventSource = new EventSource(`${this.config.orchestratorUrl}/generic/stream/${agentRunId}`);\r\n\r\n eventSource.onmessage = (event) => {\r\n this.zone.run(() => {\r\n const agentRun = new AgentRun();\r\n observer.next(agentRun.fromDto(JSON.parse(event.data) as IAgentRunResponseDto));\r\n });\r\n };\r\n\r\n eventSource.onerror = (error) => {\r\n this.zone.run(() => observer.error(error));\r\n };\r\n\r\n // Cleanup, wenn unsubscribed wird\r\n return () => eventSource.close();\r\n });\r\n }\r\n\r\n public getTools(): Observable<MappedApiResponseRaw<McpTool[]>> {\r\n const url = `${this.config.orchestratorUrl}/tools`;\r\n return this.http.get<IApiResponse<IMcpToolResponseDto[]>>(url).pipe(\r\n map((res) => {\r\n const apiResponse = new MappedApiResponseRaw<McpTool[]>();\r\n apiResponse.status = res.status;\r\n apiResponse.messages = res.messages ? res.messages : [];\r\n apiResponse.isError = false;\r\n apiResponse.data = (res.data as IMcpToolResponseDto[]).map((t) => McpTool.fromDto(t));\r\n return apiResponse;\r\n }),\r\n catchError((err) => {\r\n console.error('Error fetching tools:', err);\r\n const error = new MappedApiError();\r\n error.messages = err.messages ? err.messages : [];\r\n error.status = err.status ? err.status : 500;\r\n error.isError = true;\r\n return of(error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { IAppConfig } from '@sftech/ng-shared';\r\nimport { OrchestratorConfigMapper } from './core/configuration/orchestrator-config.mapper';\r\nimport { ORCHESTRATOR_CONFIGURATION } from './core/configuration/orchestrator-configuration.token';\r\n\r\nimport { MarkdownModule } from 'ngx-markdown';\r\nimport { OrchestratorService } from './core/service/orchestrator.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, MarkdownModule],\r\n})\r\n// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>\r\nexport class OrchestratorModule {\r\n public static forRoot(config: IAppConfig): ModuleWithProviders<OrchestratorModule> {\r\n return {\r\n ngModule: OrchestratorModule,\r\n providers: [\r\n {\r\n provide: ORCHESTRATOR_CONFIGURATION,\r\n useValue: OrchestratorConfigMapper.map(config),\r\n },\r\n OrchestratorService,\r\n ],\r\n };\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { AdminGuard } from '@sftech/ng-auth';\r\n\r\nexport const orchestratorRoutes: Route[] = [\r\n {\r\n path: 'chats',\r\n loadChildren: () => import('./chats/chats.routes').then((m) => m.chatsRoutes),\r\n },\r\n {\r\n path: 'admin/prompts',\r\n loadChildren: () => import('./admin/prompts/prompts.routes').then((m) => m.promptsRoutes),\r\n canActivate: [AdminGuard],\r\n },\r\n {\r\n path: 'admin/agents',\r\n loadChildren: () => import('./admin/agents/agents.routes').then((m) => m.agentsRoutes),\r\n canActivate: [AdminGuard],\r\n },\r\n];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}