@sftech/ng-orchestrator 1.0.1 → 1.0.2

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 (23) hide show
  1. package/README.md +89 -89
  2. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-DRmF3l76.mjs +188 -0
  3. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-DRmF3l76.mjs.map +1 -0
  4. package/fesm2022/sftech-ng-orchestrator-agents.routes-bBcxJpUD.mjs +284 -0
  5. package/fesm2022/sftech-ng-orchestrator-agents.routes-bBcxJpUD.mjs.map +1 -0
  6. package/fesm2022/sftech-ng-orchestrator-chats.routes-B3UPU3v9.mjs +743 -0
  7. package/fesm2022/sftech-ng-orchestrator-chats.routes-B3UPU3v9.mjs.map +1 -0
  8. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-CXGtE_Ui.mjs → sftech-ng-orchestrator-prompt-display.component-Cf16yAfr.mjs} +4 -4
  9. package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-CXGtE_Ui.mjs.map → sftech-ng-orchestrator-prompt-display.component-Cf16yAfr.mjs.map} +1 -1
  10. package/fesm2022/sftech-ng-orchestrator-prompts.routes-lV1Np2KD.mjs +51 -0
  11. package/fesm2022/sftech-ng-orchestrator-prompts.routes-lV1Np2KD.mjs.map +1 -0
  12. package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs → sftech-ng-orchestrator-sftech-ng-orchestrator-CzwZe61l.mjs} +4 -4
  13. package/fesm2022/{sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs.map → sftech-ng-orchestrator-sftech-ng-orchestrator-CzwZe61l.mjs.map} +1 -1
  14. package/fesm2022/sftech-ng-orchestrator.mjs +1 -1
  15. package/package.json +1 -1
  16. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs +0 -188
  17. package/fesm2022/sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs.map +0 -1
  18. package/fesm2022/sftech-ng-orchestrator-agents.routes-DH_0cd5T.mjs +0 -284
  19. package/fesm2022/sftech-ng-orchestrator-agents.routes-DH_0cd5T.mjs.map +0 -1
  20. package/fesm2022/sftech-ng-orchestrator-chats.routes-CqFuG3l5.mjs +0 -743
  21. package/fesm2022/sftech-ng-orchestrator-chats.routes-CqFuG3l5.mjs.map +0 -1
  22. package/fesm2022/sftech-ng-orchestrator-prompts.routes-CvMtYkTK.mjs +0 -51
  23. package/fesm2022/sftech-ng-orchestrator-prompts.routes-CvMtYkTK.mjs.map +0 -1
@@ -0,0 +1,51 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
+ import { BaseListComponent, IconProvider, PaginatorComponent } from '@sftech/ng-shared';
4
+ import { DialogService } from 'primeng/dynamicdialog';
5
+ import { Panel } from 'primeng/panel';
6
+ import * as i1 from 'primeng/table';
7
+ import { TableModule } from 'primeng/table';
8
+ import { P as PromptService, a as PromptDisplayComponent } from './sftech-ng-orchestrator-prompt-display.component-Cf16yAfr.mjs';
9
+ import { RouterOutlet } from '@angular/router';
10
+
11
+ class PromptsListComponent extends BaseListComponent {
12
+ _repo = inject(PromptService);
13
+ _route = 'prompts';
14
+ _modalComponent = PromptDisplayComponent;
15
+ detailModalHeaderText = 'Prompt-Details';
16
+ iconProvider = IconProvider;
17
+ constructor() {
18
+ super();
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: PromptsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: PromptsListComponent, isStandalone: true, selector: "sftech-prompts-list", providers: [DialogService], usesInheritance: true, ngImport: i0, template: "<div class=\"h-full overflow-y-auto px-2 sm:px-4\">\r\n <h1 class=\"text-primary-900 font-bold text-lg sm:text-xl p-2 my-4\">Prompt-\u00DCbersicht</h1>\r\n\r\n @if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length > 0) {\r\n <div class=\"overflow-x-auto -mx-2 sm:mx-0\">\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\" class=\"cursor-pointer\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n }\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: PaginatorComponent, selector: "sftech-paginator", inputs: ["pagination"], outputs: ["odataChanged"] }, { kind: "component", type: Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }] });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: PromptsListComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'sftech-prompts-list', imports: [PaginatorComponent, Panel, TableModule], providers: [DialogService], template: "<div class=\"h-full overflow-y-auto px-2 sm:px-4\">\r\n <h1 class=\"text-primary-900 font-bold text-lg sm:text-xl p-2 my-4\">Prompt-\u00DCbersicht</h1>\r\n\r\n @if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length > 0) {\r\n <div class=\"overflow-x-auto -mx-2 sm:mx-0\">\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\" class=\"cursor-pointer\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n }\r\n</div>\r\n\r\n" }]
26
+ }], ctorParameters: () => [] });
27
+
28
+ class PromptsComponent {
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: PromptsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: PromptsComponent, isStandalone: true, selector: "sftech-prompts", ngImport: i0, template: "<router-outlet></router-outlet>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: PromptsComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'sftech-prompts', imports: [RouterOutlet], template: "<router-outlet></router-outlet>\r\n\r\n" }]
35
+ }] });
36
+
37
+ const promptsRoutes = [
38
+ {
39
+ path: '',
40
+ component: PromptsComponent,
41
+ children: [
42
+ {
43
+ path: '',
44
+ component: PromptsListComponent,
45
+ },
46
+ ],
47
+ },
48
+ ];
49
+
50
+ export { promptsRoutes };
51
+ //# sourceMappingURL=sftech-ng-orchestrator-prompts.routes-lV1Np2KD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sftech-ng-orchestrator-prompts.routes-lV1Np2KD.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompts-list/prompts-list.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/components/prompt/prompts-list/prompts-list.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.component.html","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/prompts/prompts.routes.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\r\nimport { BaseListComponent, IconProvider, PaginatorComponent } from '@sftech/ng-shared';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { Panel } from 'primeng/panel';\r\nimport { TableModule } from 'primeng/table';\r\nimport { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';\r\nimport { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';\r\nimport { Prompt } from '../../../../../core/models/prompt.model';\r\nimport { PromptService } from '../../../../../core/service/prompt.service';\r\nimport { PromptDisplayComponent } from '../prompt-display/prompt-display.component';\r\n\r\n@Component({\r\n selector: 'sftech-prompts-list',\r\n imports: [PaginatorComponent, Panel, TableModule],\r\n providers: [DialogService],\r\n templateUrl: './prompts-list.component.html',\r\n styleUrl: './prompts-list.component.css',\r\n})\r\nexport class PromptsListComponent extends BaseListComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {\r\n protected _repo = inject(PromptService);\r\n protected _route = 'prompts';\r\n protected override _modalComponent = PromptDisplayComponent;\r\n protected override detailModalHeaderText = 'Prompt-Details';\r\n\r\n public iconProvider = IconProvider;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<div class=\"h-full overflow-y-auto px-2 sm:px-4\">\r\n <h1 class=\"text-primary-900 font-bold text-lg sm:text-xl p-2 my-4\">Prompt-Übersicht</h1>\r\n\r\n @if (!data()) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Daten werden geladen...\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length === 0) {\r\n <p-panel [toggleable]=\"false\">\r\n <p class=\"m-0\">\r\n Es sind keine Prompts vorhanden.\r\n </p>\r\n </p-panel>\r\n } @else if (data()!.length > 0) {\r\n <div class=\"overflow-x-auto -mx-2 sm:mx-0\">\r\n <p-table [value]=\"data()!\"\r\n stripedRows\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n selectionMode=\"single\"\r\n [resizableColumns]=\"true\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template #header>\r\n <tr>\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <th>{{ data()![0].getUiNameForProperty(column) }}</th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template #body let-prompt>\r\n <tr (click)=\"openDisplay(prompt.id)\" [pSelectableRow]=\"prompt\" class=\"cursor-pointer\">\r\n @for(column of data()![0].propertiesToShow; track column) {\r\n <td style=\"white-space: pre-wrap\">\r\n {{ prompt.getPropertyValue(column) }}\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n <sftech-paginator [pagination]=\"odata().pagination\" (odataChanged)=\"updatePagination($event)\"></sftech-paginator>\r\n }\r\n</div>\r\n\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sftech-prompts',\r\n imports: [RouterOutlet],\r\n templateUrl: './prompts.component.html',\r\n styleUrl: './prompts.component.css',\r\n})\r\nexport class PromptsComponent {}\r\n","<router-outlet></router-outlet>\r\n\r\n","import { PromptsListComponent } from './components/prompt/prompts-list/prompts-list.component';\r\nimport { PromptsComponent } from './prompts.component';\r\n\r\nexport const promptsRoutes = [\r\n {\r\n path: '',\r\n component: PromptsComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: PromptsListComponent,\r\n },\r\n ],\r\n },\r\n];\r\n"],"names":[],"mappings":"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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-CqFuG3l5.mjs').then((m) => m.chatsRoutes),
258
+ loadChildren: () => import('./sftech-ng-orchestrator-chats.routes-B3UPU3v9.mjs').then((m) => m.chatsRoutes),
259
259
  },
260
260
  {
261
261
  path: 'admin/prompts',
262
- loadChildren: () => import('./sftech-ng-orchestrator-prompts.routes-CvMtYkTK.mjs').then((m) => m.promptsRoutes),
262
+ loadChildren: () => import('./sftech-ng-orchestrator-prompts.routes-lV1Np2KD.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-DH_0cd5T.mjs').then((m) => m.agentsRoutes),
267
+ loadChildren: () => import('./sftech-ng-orchestrator-agents.routes-bBcxJpUD.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-C51KniGY.mjs.map
277
+ //# sourceMappingURL=sftech-ng-orchestrator-sftech-ng-orchestrator-CzwZe61l.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.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';\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 defaultRagModel: config['DEFAULT_RAG_MODEL'] as string,\r\n defaultRagProvider: config['DEFAULT_RAG_PROVIDER'] as string,\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');\r\n","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 { 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}\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 { IRagInfoDto } from '../dtos/rag-ingest-config.dto';\r\nimport { EAgentRunStatus } from '../enums/agent-run-status.enum';\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 const result = agentRun.fromDto(JSON.parse(event.data) as IAgentRunResponseDto);\r\n observer.next(result);\r\n\r\n // Close EventSource when agent run is completed\r\n if (result.status === EAgentRunStatus.COMPLETED || result.status === EAgentRunStatus.FAILED) {\r\n eventSource.close();\r\n observer.complete();\r\n }\r\n });\r\n };\r\n\r\n eventSource.onerror = (error) => {\r\n this.zone.run(() => {\r\n eventSource.close();\r\n observer.error(error);\r\n });\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 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 public storeRagDocuments(files: File[], ragInfo: IRagInfoDto): Observable<MappedApiError | boolean> {\r\n const url = `${this.config.orchestratorUrl}/rag/store`;\r\n const formData = new FormData();\r\n\r\n // Add all files to FormData\r\n files.forEach((file) => {\r\n formData.append('files', file);\r\n });\r\n\r\n // Add ragInfo as JSON string or separate fields\r\n formData.append('agentIdentifier', ragInfo.agentIdentifier);\r\n if (ragInfo.chatId) {\r\n formData.append('chatId', ragInfo.chatId.toString());\r\n }\r\n\r\n return this.http.post<IApiResponse<boolean>>(url, formData).pipe(\r\n map((res) => {\r\n return res.data as boolean;\r\n }),\r\n catchError((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 public chatAgent(agentRunId: number, message: string): Observable<MappedApiError | number> {\r\n const url = `${this.config.orchestratorUrl}/generic/chat/${agentRunId}`;\r\n return this.http.post<IApiResponse<number>>(url, { message }).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 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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"}
1
+ {"version":3,"file":"sftech-ng-orchestrator-sftech-ng-orchestrator-CzwZe61l.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';\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 defaultRagModel: config['DEFAULT_RAG_MODEL'] as string,\r\n defaultRagProvider: config['DEFAULT_RAG_PROVIDER'] as string,\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');\r\n","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 { 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}\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 { IRagInfoDto } from '../dtos/rag-ingest-config.dto';\r\nimport { EAgentRunStatus } from '../enums/agent-run-status.enum';\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 const result = agentRun.fromDto(JSON.parse(event.data) as IAgentRunResponseDto);\r\n observer.next(result);\r\n\r\n // Close EventSource when agent run is completed\r\n if (result.status === EAgentRunStatus.COMPLETED || result.status === EAgentRunStatus.FAILED) {\r\n eventSource.close();\r\n observer.complete();\r\n }\r\n });\r\n };\r\n\r\n eventSource.onerror = (error) => {\r\n this.zone.run(() => {\r\n eventSource.close();\r\n observer.error(error);\r\n });\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 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 public storeRagDocuments(files: File[], ragInfo: IRagInfoDto): Observable<MappedApiError | boolean> {\r\n const url = `${this.config.orchestratorUrl}/rag/store`;\r\n const formData = new FormData();\r\n\r\n // Add all files to FormData\r\n files.forEach((file) => {\r\n formData.append('files', file);\r\n });\r\n\r\n // Add ragInfo as JSON string or separate fields\r\n formData.append('agentIdentifier', ragInfo.agentIdentifier);\r\n if (ragInfo.chatId) {\r\n formData.append('chatId', ragInfo.chatId.toString());\r\n }\r\n\r\n return this.http.post<IApiResponse<boolean>>(url, formData).pipe(\r\n map((res) => {\r\n return res.data as boolean;\r\n }),\r\n catchError((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 public chatAgent(agentRunId: number, message: string): Observable<MappedApiError | number> {\r\n const url = `${this.config.orchestratorUrl}/generic/chat/${agentRunId}`;\r\n return this.http.post<IApiResponse<number>>(url, { message }).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 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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"}
@@ -1,2 +1,2 @@
1
- export { c as OrchestratorModule, o as orchestratorRoutes } from './sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs';
1
+ export { c as OrchestratorModule, o as orchestratorRoutes } from './sftech-ng-orchestrator-sftech-ng-orchestrator-CzwZe61l.mjs';
2
2
  //# sourceMappingURL=sftech-ng-orchestrator.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sftech/ng-orchestrator",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=19.0.0",
6
6
  "@angular/core": ">=19.0.0",
@@ -1,188 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Inject, Injectable, input, signal, inject, Component } from '@angular/core';
3
- import { FaIconComponent } from '@fortawesome/angular-fontawesome';
4
- import { BaseDbModel, EFilterTypes, BaseDbApiService, BaseDialogComponent, MappedApiError } from '@sftech/ng-shared';
5
- import { Button } from 'primeng/button';
6
- import * as i1$1 from 'primeng/fileupload';
7
- import { FileUploadModule } from 'primeng/fileupload';
8
- import * as i1 from '@angular/common/http';
9
- import { O as ORCHESTRATOR_CONFIGURATION, a as OrchestratorService } from './sftech-ng-orchestrator-sftech-ng-orchestrator-C51KniGY.mjs';
10
- import { P as Prompt } from './sftech-ng-orchestrator-prompt.model-DhASegzq.mjs';
11
-
12
- class Agent extends BaseDbModel {
13
- identifier;
14
- description;
15
- name;
16
- connectorUrl;
17
- isGeneric;
18
- answerSpecification;
19
- tools;
20
- llmProvider;
21
- llmModel;
22
- llmTemperature;
23
- llmTimeout;
24
- llmRetries;
25
- llmUserPromptId;
26
- llmUserPrompt;
27
- llmSystemPromptId;
28
- llmSystemPrompt;
29
- llmUserPromptHistoryId;
30
- llmUserPromptHistory;
31
- llmSystemPromptHistoryId;
32
- llmSystemPromptHistory;
33
- ragModel;
34
- ragProvider;
35
- propertiesToShow = ['name', 'identifier', 'description'];
36
- propertyUINames = new Map([
37
- ['name', 'Name'],
38
- ['description', 'Beschreibung'],
39
- ['identifier', 'identifier'],
40
- ['llmUserPromptTemplateIdentifier', 'User Prompt Identifier'],
41
- ['connectorUrl', 'Connector-Url'],
42
- ['answerSpecification', 'Answer Specification'],
43
- ['isGeneric', 'Benutzerdefinierter Agent'],
44
- ['tools', 'LLM-Tools'],
45
- ['llmProvider', 'LLM-Provider'],
46
- ['llmModel', 'LLM-Model'],
47
- ['llmTemperature', 'LLM-Temperature'],
48
- ['llmTimeout', 'LLM-Timeout'],
49
- ['llmRetries', 'LLM-Retries'],
50
- ['llmUserPromptId', 'User Prompt ID'],
51
- ['llmUserPrompt', 'User Prompt Template'],
52
- ['llmSystemPromptId', 'System Prompt ID'],
53
- ['llmSystemPrompt', 'System Prompt Template'],
54
- ['ragProvider', 'RAG - Provider'],
55
- ['ragModel', 'RAG - Embedding Model'],
56
- ]);
57
- propertyFilterType = new Map([
58
- ['name', EFilterTypes.STRING],
59
- ['template', EFilterTypes.STRING],
60
- ['identifier', EFilterTypes.STRING],
61
- ]);
62
- fromDto(dto) {
63
- const model = new Agent();
64
- model.id = dto.id;
65
- model.createdAt = new Date(dto.createdAt);
66
- model.name = dto.name;
67
- model.identifier = dto.identifier;
68
- model.description = dto.description;
69
- model.connectorUrl = dto.connectorUrl;
70
- model.isGeneric = dto.isGeneric;
71
- model.answerSpecification = dto.answerSpecification;
72
- model.tools = dto.tools ? dto.tools : [];
73
- model.llmProvider = dto.llmProvider;
74
- model.llmModel = dto.llmModel;
75
- model.llmTemperature = dto.llmTemperature;
76
- model.llmTimeout = dto.llmTimeout;
77
- model.llmRetries = dto.llmRetries;
78
- model.llmUserPrompt = dto.llmUserPrompt ? Prompt.fromDto(dto.llmUserPrompt) : undefined;
79
- model.llmUserPromptId = dto.llmUserPromptId;
80
- model.llmSystemPrompt = dto.llmSystemPrompt ? Prompt.fromDto(dto.llmSystemPrompt) : undefined;
81
- model.llmSystemPromptId = dto.llmSystemPromptId;
82
- model.llmUserPromptHistory = dto.llmUserPromptHistory ? Prompt.fromDto(dto.llmUserPromptHistory) : undefined;
83
- model.llmUserPromptHistoryId = dto.llmUserPromptHistoryId;
84
- model.llmSystemPromptHistory = dto.llmSystemPromptHistory ? Prompt.fromDto(dto.llmSystemPromptHistory) : undefined;
85
- model.llmSystemPromptHistoryId = dto.llmSystemPromptHistoryId;
86
- model.ragModel = dto.ragModel;
87
- model.ragProvider = dto.ragProvider;
88
- return model;
89
- }
90
- }
91
-
92
- class AgentService extends BaseDbApiService {
93
- http;
94
- config;
95
- constructor(http, config) {
96
- super(http, config);
97
- this.http = http;
98
- this.config = config;
99
- this.url = `${this.config.orchestratorDbUrl}/agents`;
100
- }
101
- getNewModel() {
102
- return new Agent();
103
- }
104
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AgentService, deps: [{ token: i1.HttpClient }, { token: ORCHESTRATOR_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
105
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AgentService, providedIn: 'root' });
106
- }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AgentService, decorators: [{
108
- type: Injectable,
109
- args: [{ providedIn: 'root' }]
110
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
111
- type: Inject,
112
- args: [ORCHESTRATOR_CONFIGURATION]
113
- }] }] });
114
-
115
- class AgentRagUploadComponent extends BaseDialogComponent {
116
- agentId = input(...(ngDevMode ? [undefined, { debugName: "agentId" }] : []));
117
- chatId = input(...(ngDevMode ? [undefined, { debugName: "chatId" }] : []));
118
- uploadedFiles = signal([], ...(ngDevMode ? [{ debugName: "uploadedFiles" }] : []));
119
- agent = signal(undefined, ...(ngDevMode ? [{ debugName: "agent" }] : []));
120
- isUploading = signal(false, ...(ngDevMode ? [{ debugName: "isUploading" }] : []));
121
- uploadError = signal(undefined, ...(ngDevMode ? [{ debugName: "uploadError" }] : []));
122
- agentService = inject(AgentService);
123
- orchestratorService = inject(OrchestratorService);
124
- ngOnInit() {
125
- if (this.agentId()) {
126
- this.agentService.get(this.agentId()).subscribe((result) => {
127
- if (result instanceof MappedApiError) {
128
- this.uploadError.set('Fehler beim Laden des Agents');
129
- return;
130
- }
131
- this.agent.set(result.data);
132
- });
133
- }
134
- }
135
- onFileSelect(event) {
136
- const files = event.currentFiles || [];
137
- this.uploadedFiles.set(files);
138
- }
139
- onFileRemove(event) {
140
- const files = this.uploadedFiles();
141
- const index = files.findIndex((f) => f.name === event.file.name);
142
- if (index > -1) {
143
- files.splice(index, 1);
144
- this.uploadedFiles.set([...files]);
145
- }
146
- }
147
- uploadFiles() {
148
- const agent = this.agent();
149
- if (!agent || !agent.identifier) {
150
- this.uploadError.set('Agent-Identifier nicht gefunden');
151
- return;
152
- }
153
- const files = this.uploadedFiles();
154
- if (files.length === 0) {
155
- return;
156
- }
157
- this.isUploading.set(true);
158
- this.uploadError.set(undefined);
159
- const ragInfo = {
160
- agentIdentifier: agent.identifier,
161
- chatId: this.chatId(),
162
- };
163
- this.orchestratorService.storeRagDocuments(files, ragInfo).subscribe({
164
- next: (result) => {
165
- this.isUploading.set(false);
166
- if (result instanceof MappedApiError) {
167
- this.uploadError.set('Fehler beim Hochladen der Dateien');
168
- }
169
- else {
170
- this.close();
171
- }
172
- },
173
- error: () => {
174
- this.isUploading.set(false);
175
- this.uploadError.set('Fehler beim Hochladen der Dateien');
176
- },
177
- });
178
- }
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AgentRagUploadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: AgentRagUploadComponent, isStandalone: true, selector: "sftech-agent-rag-upload", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, chatId: { classPropertyName: "chatId", publicName: "chatId", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<sftech-base-dialog (closed)=\"close()\">\n <ng-template #body>\n <div class=\"h-full overflow-auto\">\n <p class=\"mb-4 text-gray-600\">\n Laden Sie Dokumente hoch, die f\u00FCr die RAG-Funktion (Retrieval-Augmented Generation) verwendet werden sollen.\n </p>\n\n @if (uploadError()) {\n <div class=\"p-4 mb-4 bg-red-50 border border-red-200 rounded text-red-800\">\n <strong>Fehler:</strong> {{ uploadError() }}\n </div>\n }\n\n @if (isUploading()) {\n <div class=\"flex items-center justify-center p-8\">\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner text-4xl text-primary-500 mb-4\"></i>\n <p class=\"text-gray-600\">Dateien werden hochgeladen...</p>\n </div>\n </div>\n } @else {\n <div class=\"mt-4\">\n <p-fileupload\n mode=\"advanced\"\n [multiple]=\"true\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n [auto]=\"false\"\n chooseLabel=\"Dateien ausw\u00E4hlen\"\n chooseIcon=\"pi pi-upload\"\n [maxFileSize]=\"10000000\"\n accept=\".pdf,.txt,.doc,.docx\">\n <ng-template #content let-files>\n @if (uploadedFiles().length > 0) {\n <div class=\"p-4 bg-gray-50 rounded\">\n <h5 class=\"font-semibold mb-2\">Ausgew\u00E4hlte Dateien ({{ uploadedFiles().length }})</h5>\n <ul class=\"list-disc pl-4\">\n @for (file of uploadedFiles(); track file.name) {\n <li class=\"mb-1\">\n <span class=\"font-medium\">{{ file.name }}</span>\n <span class=\"text-gray-500 text-sm ml-2\">({{ (file.size / 1024).toFixed(2) }} KB)</span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n </p-fileupload>\n <small class=\"block mt-2 text-gray-600\">\n Unterst\u00FCtzte Formate: PDF, TXT, DOC, DOCX (max. 10MB pro Datei)\n </small>\n </div>\n }\n </div>\n </ng-template>\n <ng-template #footer>\n <div class=\"flex justify-end gap-2 mt-2\">\n <p-button\n label=\"Abbrechen\"\n (onClick)=\"close()\"\n [outlined]=\"true\"\n severity=\"secondary\">\n </p-button>\n <p-button\n label=\"Hochladen\"\n (onClick)=\"uploadFiles()\"\n [disabled]=\"uploadedFiles().length === 0 || isUploading()\"\n [loading]=\"isUploading()\">\n <fa-icon [icon]=\"iconProvider.upload\" class=\"mr-2\"></fa-icon>\n </p-button>\n </div>\n </ng-template>\n</sftech-base-dialog>\n", styles: [""], dependencies: [{ kind: "component", type: BaseDialogComponent, selector: "sftech-base-dialog", inputs: ["hasHeader", "hasFooter", "showButtons", "headerText"], outputs: ["closed"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i1$1.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] });
181
- }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AgentRagUploadComponent, decorators: [{
183
- type: Component,
184
- args: [{ selector: 'sftech-agent-rag-upload', imports: [BaseDialogComponent, FileUploadModule, Button, FaIconComponent], template: "<sftech-base-dialog (closed)=\"close()\">\n <ng-template #body>\n <div class=\"h-full overflow-auto\">\n <p class=\"mb-4 text-gray-600\">\n Laden Sie Dokumente hoch, die f\u00FCr die RAG-Funktion (Retrieval-Augmented Generation) verwendet werden sollen.\n </p>\n\n @if (uploadError()) {\n <div class=\"p-4 mb-4 bg-red-50 border border-red-200 rounded text-red-800\">\n <strong>Fehler:</strong> {{ uploadError() }}\n </div>\n }\n\n @if (isUploading()) {\n <div class=\"flex items-center justify-center p-8\">\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner text-4xl text-primary-500 mb-4\"></i>\n <p class=\"text-gray-600\">Dateien werden hochgeladen...</p>\n </div>\n </div>\n } @else {\n <div class=\"mt-4\">\n <p-fileupload\n mode=\"advanced\"\n [multiple]=\"true\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n [auto]=\"false\"\n chooseLabel=\"Dateien ausw\u00E4hlen\"\n chooseIcon=\"pi pi-upload\"\n [maxFileSize]=\"10000000\"\n accept=\".pdf,.txt,.doc,.docx\">\n <ng-template #content let-files>\n @if (uploadedFiles().length > 0) {\n <div class=\"p-4 bg-gray-50 rounded\">\n <h5 class=\"font-semibold mb-2\">Ausgew\u00E4hlte Dateien ({{ uploadedFiles().length }})</h5>\n <ul class=\"list-disc pl-4\">\n @for (file of uploadedFiles(); track file.name) {\n <li class=\"mb-1\">\n <span class=\"font-medium\">{{ file.name }}</span>\n <span class=\"text-gray-500 text-sm ml-2\">({{ (file.size / 1024).toFixed(2) }} KB)</span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n </p-fileupload>\n <small class=\"block mt-2 text-gray-600\">\n Unterst\u00FCtzte Formate: PDF, TXT, DOC, DOCX (max. 10MB pro Datei)\n </small>\n </div>\n }\n </div>\n </ng-template>\n <ng-template #footer>\n <div class=\"flex justify-end gap-2 mt-2\">\n <p-button\n label=\"Abbrechen\"\n (onClick)=\"close()\"\n [outlined]=\"true\"\n severity=\"secondary\">\n </p-button>\n <p-button\n label=\"Hochladen\"\n (onClick)=\"uploadFiles()\"\n [disabled]=\"uploadedFiles().length === 0 || isUploading()\"\n [loading]=\"isUploading()\">\n <fa-icon [icon]=\"iconProvider.upload\" class=\"mr-2\"></fa-icon>\n </p-button>\n </div>\n </ng-template>\n</sftech-base-dialog>\n" }]
185
- }], propDecorators: { agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: false }] }], chatId: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatId", required: false }] }] } });
186
-
187
- export { AgentService as A, AgentRagUploadComponent as a, Agent as b };
188
- //# sourceMappingURL=sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sftech-ng-orchestrator-agent-rag-upload.component-COPkzHNN.mjs","sources":["../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/models/agent.model.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/core/service/agent.service.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/agents/components/agent/agent-rag-upload/agent-rag-upload.component.ts","../../../../libs/ng-orchestrator/src/lib/ng-orchestrator/admin/agents/components/agent/agent-rag-upload/agent-rag-upload.component.html"],"sourcesContent":["import { BaseDbModel, EFilterTypes, IBaseDbResponseDto } from '@sftech/ng-shared';\r\nimport { IAgentResponseDto } from '../dtos/agent-response.dto';\r\nimport { IPromptHistoryResponseDto } from '../dtos/prompt-history-response.dto';\r\nimport { PromptHistory } from './prompt-history.model';\r\nimport { Prompt } from './prompt.model';\r\n\r\nexport class Agent extends BaseDbModel {\r\n public identifier!: string;\r\n\r\n public description!: string;\r\n\r\n public name!: string;\r\n\r\n public connectorUrl!: string;\r\n\r\n public isGeneric!: boolean;\r\n\r\n public answerSpecification!: string;\r\n\r\n public tools!: string[];\r\n\r\n public llmProvider!: string;\r\n\r\n public llmModel!: string;\r\n\r\n public llmTemperature!: number;\r\n\r\n public llmTimeout?: number;\r\n\r\n public llmRetries?: number;\r\n\r\n public llmUserPromptId!: number;\r\n\r\n public llmUserPrompt?: Prompt;\r\n\r\n public llmSystemPromptId!: number;\r\n\r\n public llmSystemPrompt?: Prompt;\r\n\r\n public llmUserPromptHistoryId?: number;\r\n\r\n public llmUserPromptHistory?: PromptHistory;\r\n\r\n public llmSystemPromptHistoryId?: number;\r\n\r\n public llmSystemPromptHistory?: PromptHistory;\r\n\r\n public ragModel?: string;\r\n\r\n public ragProvider?: string;\r\n\r\n public override propertiesToShow = ['name', 'identifier', 'description'];\r\n\r\n public override propertyUINames = new Map<string, string>([\r\n ['name', 'Name'],\r\n ['description', 'Beschreibung'],\r\n ['identifier', 'identifier'],\r\n ['llmUserPromptTemplateIdentifier', 'User Prompt Identifier'],\r\n ['connectorUrl', 'Connector-Url'],\r\n ['answerSpecification', 'Answer Specification'],\r\n ['isGeneric', 'Benutzerdefinierter Agent'],\r\n ['tools', 'LLM-Tools'],\r\n ['llmProvider', 'LLM-Provider'],\r\n ['llmModel', 'LLM-Model'],\r\n ['llmTemperature', 'LLM-Temperature'],\r\n ['llmTimeout', 'LLM-Timeout'],\r\n ['llmRetries', 'LLM-Retries'],\r\n ['llmUserPromptId', 'User Prompt ID'],\r\n ['llmUserPrompt', 'User Prompt Template'],\r\n ['llmSystemPromptId', 'System Prompt ID'],\r\n ['llmSystemPrompt', 'System Prompt Template'],\r\n ['ragProvider', 'RAG - Provider'],\r\n ['ragModel', 'RAG - Embedding Model'],\r\n ]);\r\n\r\n public override propertyFilterType = new Map<string, EFilterTypes>([\r\n ['name', EFilterTypes.STRING],\r\n ['template', EFilterTypes.STRING],\r\n ['identifier', EFilterTypes.STRING],\r\n ]);\r\n\r\n public override fromDto(dto: IAgentResponseDto): Agent {\r\n const model = new Agent();\r\n model.id = dto.id;\r\n model.createdAt = new Date(dto.createdAt);\r\n model.name = dto.name;\r\n model.identifier = dto.identifier;\r\n model.description = dto.description;\r\n model.connectorUrl = dto.connectorUrl;\r\n model.isGeneric = dto.isGeneric;\r\n model.answerSpecification = dto.answerSpecification;\r\n model.tools = dto.tools ? dto.tools : [];\r\n model.llmProvider = dto.llmProvider;\r\n model.llmModel = dto.llmModel;\r\n model.llmTemperature = dto.llmTemperature;\r\n model.llmTimeout = dto.llmTimeout;\r\n model.llmRetries = dto.llmRetries;\r\n model.llmUserPrompt = dto.llmUserPrompt ? (Prompt.fromDto(dto.llmUserPrompt) as Prompt) : undefined;\r\n model.llmUserPromptId = dto.llmUserPromptId;\r\n model.llmSystemPrompt = dto.llmSystemPrompt ? (Prompt.fromDto(dto.llmSystemPrompt) as Prompt) : undefined;\r\n model.llmSystemPromptId = dto.llmSystemPromptId;\r\n model.llmUserPromptHistory = dto.llmUserPromptHistory ? (Prompt.fromDto(dto.llmUserPromptHistory) as PromptHistory) : undefined;\r\n model.llmUserPromptHistoryId = dto.llmUserPromptHistoryId;\r\n model.llmSystemPromptHistory = dto.llmSystemPromptHistory ? (Prompt.fromDto(dto.llmSystemPromptHistory) as PromptHistory) : undefined;\r\n model.llmSystemPromptHistoryId = dto.llmSystemPromptHistoryId;\r\n model.ragModel = dto.ragModel;\r\n model.ragProvider = dto.ragProvider;\r\n return model;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BaseDbApiService } from '@sftech/ng-shared';\r\nimport { IOrchestratorConfig } from '../configuration/orchestrator-config.interface';\r\nimport { ORCHESTRATOR_CONFIGURATION } from '../configuration/orchestrator-configuration.token';\r\nimport { IAgentCreateDto } from '../dtos/agent-create-request.dto';\r\nimport { IAgentResponseDto } from '../dtos/agent-response.dto';\r\nimport { IAgentUpdateDto } from '../dtos/agent-update-request.dto';\r\nimport { Agent } from '../models/agent.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AgentService extends BaseDbApiService<Agent, IAgentCreateDto, IAgentUpdateDto, IAgentResponseDto> {\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}/agents`;\r\n }\r\n\r\n protected getNewModel(): Agent {\r\n return new Agent();\r\n }\r\n}\r\n","import { Component, OnInit, inject, input, signal } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { BaseDialogComponent, IconProvider, MappedApiError } from '@sftech/ng-shared';\r\nimport { Button } from 'primeng/button';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { FileRemoveEvent, FileSelectEvent, FileUploadModule } from 'primeng/fileupload';\r\nimport { IRagInfoDto } from '../../../../../core/dtos/rag-ingest-config.dto';\r\nimport { Agent } from '../../../../../core/models/agent.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-rag-upload',\r\n imports: [BaseDialogComponent, FileUploadModule, Button, FaIconComponent],\r\n templateUrl: './agent-rag-upload.component.html',\r\n styleUrl: './agent-rag-upload.component.css',\r\n})\r\nexport class AgentRagUploadComponent extends BaseDialogComponent implements OnInit {\r\n public agentId = input<number>();\r\n public chatId = input<number | undefined>();\r\n public uploadedFiles = signal<File[]>([]);\r\n public agent = signal<Agent | undefined>(undefined);\r\n public isUploading = signal<boolean>(false);\r\n public uploadError = signal<string | undefined>(undefined);\r\n\r\n private agentService = inject(AgentService);\r\n private orchestratorService = inject(OrchestratorService);\r\n\r\n public ngOnInit(): void {\r\n if (this.agentId()) {\r\n this.agentService.get(this.agentId()!).subscribe((result) => {\r\n if (result instanceof MappedApiError) {\r\n this.uploadError.set('Fehler beim Laden des Agents');\r\n return;\r\n }\r\n this.agent.set(result.data as Agent);\r\n });\r\n }\r\n }\r\n\r\n public onFileSelect(event: FileSelectEvent) {\r\n const files: File[] = event.currentFiles || [];\r\n this.uploadedFiles.set(files);\r\n }\r\n\r\n public onFileRemove(event: FileRemoveEvent) {\r\n const files = this.uploadedFiles();\r\n const index = files.findIndex((f) => f.name === event.file.name);\r\n if (index > -1) {\r\n files.splice(index, 1);\r\n this.uploadedFiles.set([...files]);\r\n }\r\n }\r\n\r\n public uploadFiles() {\r\n const agent = this.agent();\r\n if (!agent || !agent.identifier) {\r\n this.uploadError.set('Agent-Identifier nicht gefunden');\r\n return;\r\n }\r\n\r\n const files = this.uploadedFiles();\r\n if (files.length === 0) {\r\n return;\r\n }\r\n\r\n this.isUploading.set(true);\r\n this.uploadError.set(undefined);\r\n\r\n const ragInfo: IRagInfoDto = {\r\n agentIdentifier: agent.identifier,\r\n chatId: this.chatId(),\r\n };\r\n\r\n this.orchestratorService.storeRagDocuments(files, ragInfo).subscribe({\r\n next: (result) => {\r\n this.isUploading.set(false);\r\n if (result instanceof MappedApiError) {\r\n this.uploadError.set('Fehler beim Hochladen der Dateien');\r\n } else {\r\n this.close();\r\n }\r\n },\r\n error: () => {\r\n this.isUploading.set(false);\r\n this.uploadError.set('Fehler beim Hochladen der Dateien');\r\n },\r\n });\r\n }\r\n}\r\n","<sftech-base-dialog (closed)=\"close()\">\n <ng-template #body>\n <div class=\"h-full overflow-auto\">\n <p class=\"mb-4 text-gray-600\">\n Laden Sie Dokumente hoch, die für die RAG-Funktion (Retrieval-Augmented Generation) verwendet werden sollen.\n </p>\n\n @if (uploadError()) {\n <div class=\"p-4 mb-4 bg-red-50 border border-red-200 rounded text-red-800\">\n <strong>Fehler:</strong> {{ uploadError() }}\n </div>\n }\n\n @if (isUploading()) {\n <div class=\"flex items-center justify-center p-8\">\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner text-4xl text-primary-500 mb-4\"></i>\n <p class=\"text-gray-600\">Dateien werden hochgeladen...</p>\n </div>\n </div>\n } @else {\n <div class=\"mt-4\">\n <p-fileupload\n mode=\"advanced\"\n [multiple]=\"true\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n [auto]=\"false\"\n chooseLabel=\"Dateien auswählen\"\n chooseIcon=\"pi pi-upload\"\n [maxFileSize]=\"10000000\"\n accept=\".pdf,.txt,.doc,.docx\">\n <ng-template #content let-files>\n @if (uploadedFiles().length > 0) {\n <div class=\"p-4 bg-gray-50 rounded\">\n <h5 class=\"font-semibold mb-2\">Ausgewählte Dateien ({{ uploadedFiles().length }})</h5>\n <ul class=\"list-disc pl-4\">\n @for (file of uploadedFiles(); track file.name) {\n <li class=\"mb-1\">\n <span class=\"font-medium\">{{ file.name }}</span>\n <span class=\"text-gray-500 text-sm ml-2\">({{ (file.size / 1024).toFixed(2) }} KB)</span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n </p-fileupload>\n <small class=\"block mt-2 text-gray-600\">\n Unterstützte Formate: PDF, TXT, DOC, DOCX (max. 10MB pro Datei)\n </small>\n </div>\n }\n </div>\n </ng-template>\n <ng-template #footer>\n <div class=\"flex justify-end gap-2 mt-2\">\n <p-button\n label=\"Abbrechen\"\n (onClick)=\"close()\"\n [outlined]=\"true\"\n severity=\"secondary\">\n </p-button>\n <p-button\n label=\"Hochladen\"\n (onClick)=\"uploadFiles()\"\n [disabled]=\"uploadedFiles().length === 0 || isUploading()\"\n [loading]=\"isUploading()\">\n <fa-icon [icon]=\"iconProvider.upload\" class=\"mr-2\"></fa-icon>\n </p-button>\n </div>\n </ng-template>\n</sftech-base-dialog>\n"],"names":["i1"],"mappings":"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"}