@sftech/ng-orchestrator 0.0.13 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{sftech-ng-orchestrator-agent.service-B1eDDbBp.mjs → sftech-ng-orchestrator-agent.service-DPJMw8a4.mjs} +3 -6
- package/fesm2022/sftech-ng-orchestrator-agent.service-DPJMw8a4.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-agents.routes-DMY81ODI.mjs → sftech-ng-orchestrator-agents.routes-B9GSWOIz.mjs} +11 -16
- package/fesm2022/sftech-ng-orchestrator-agents.routes-B9GSWOIz.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs +556 -0
- package/fesm2022/sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-prompt-display.component-Cs98Is_J.mjs → sftech-ng-orchestrator-prompt-display.component-Cd6Ff3KE.mjs} +59 -11
- package/fesm2022/sftech-ng-orchestrator-prompt-display.component-Cd6Ff3KE.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator-prompt.model-DhASegzq.mjs +57 -0
- package/fesm2022/sftech-ng-orchestrator-prompt.model-DhASegzq.mjs.map +1 -0
- package/fesm2022/{sftech-ng-orchestrator-prompts.routes-C_K_TNaw.mjs → sftech-ng-orchestrator-prompts.routes-DQZ_Hmjs.mjs} +2 -3
- package/fesm2022/sftech-ng-orchestrator-prompts.routes-DQZ_Hmjs.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs +222 -0
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs.map +1 -0
- package/fesm2022/sftech-ng-orchestrator.mjs +1 -1
- package/lib/ng-orchestrator/{agents → admin/agents}/components/agent/agent-display/agent-display.component.d.ts +8 -8
- package/lib/ng-orchestrator/{agents → admin/agents}/components/agent/agents-list/agents-list.component.d.ts +4 -4
- package/lib/ng-orchestrator/{prompts → admin/prompts}/components/prompt/prompt-display/prompt-display.component.d.ts +4 -4
- package/lib/ng-orchestrator/{prompts → admin/prompts}/components/prompt/prompts-list/prompts-list.component.d.ts +4 -4
- package/lib/ng-orchestrator/{prompts → admin/prompts}/components/prompt-history/prompt-history-display/prompt-history-display.component.d.ts +5 -5
- package/lib/ng-orchestrator/{prompts → admin/prompts}/components/prompt-history/prompt-history-list/prompt-history-list.component.d.ts +5 -5
- package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message/agent-chat-message.component.d.ts +11 -0
- package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message-human-input/agent-chat-message-human-input.component.d.ts +20 -0
- package/lib/ng-orchestrator/chats/agent-chat/agent-chat.component.d.ts +44 -0
- package/lib/ng-orchestrator/chats/agent-selection/agent-selection.component.d.ts +22 -0
- package/lib/ng-orchestrator/chats/chats.component.d.ts +5 -0
- package/lib/ng-orchestrator/chats/chats.routes.d.ts +16 -0
- package/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider.d.ts +9 -0
- package/lib/ng-orchestrator/core/dataprovider/orchestrator-icon.provider.d.ts +13 -0
- package/lib/ng-orchestrator/{agents/core → core}/dtos/agent-create-request.dto.d.ts +0 -1
- package/lib/ng-orchestrator/{agents/core → core}/dtos/agent-response.dto.d.ts +1 -2
- package/lib/ng-orchestrator/core/dtos/agent-run-create-request.dto.d.ts +3 -0
- package/lib/ng-orchestrator/core/dtos/agent-run-response.dto.d.ts +12 -0
- package/lib/ng-orchestrator/{agents/core → core}/dtos/agent-update-request.dto.d.ts +0 -1
- package/lib/ng-orchestrator/core/dtos/chat-create-request.dto.d.ts +4 -0
- package/lib/ng-orchestrator/core/dtos/chat-message-response.dto.d.ts +6 -0
- package/lib/ng-orchestrator/core/dtos/chat-response.dto.d.ts +6 -0
- package/lib/ng-orchestrator/core/dtos/chat-update-request.dto.d.ts +3 -0
- package/lib/ng-orchestrator/core/enums/agent-run-status.enum.d.ts +9 -0
- package/lib/ng-orchestrator/core/models/agent-run.model.d.ts +19 -0
- package/lib/ng-orchestrator/{agents/core → core}/models/agent.model.d.ts +2 -3
- package/lib/ng-orchestrator/core/models/chat-message.model.d.ts +10 -0
- package/lib/ng-orchestrator/core/models/chat.model.d.ts +8 -0
- package/lib/ng-orchestrator/core/service/agent-run.service.d.ts +19 -0
- package/lib/ng-orchestrator/{agents/core/services → core/service}/agent.service.d.ts +1 -1
- package/lib/ng-orchestrator/core/service/chat.service.d.ts +20 -0
- package/lib/ng-orchestrator/core/service/orchestrator.service.d.ts +20 -0
- package/lib/ng-orchestrator/{prompts/core/services → core/service}/prompt-history.service.d.ts +1 -1
- package/lib/ng-orchestrator/{prompts/core/services → core/service}/prompt.service.d.ts +1 -1
- package/lib/ng-orchestrator/orchestrator.module.d.ts +2 -1
- package/package.json +2 -2
- package/fesm2022/sftech-ng-orchestrator-agent.service-B1eDDbBp.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-agents.routes-DMY81ODI.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-chat.routes-VZLqUmet.mjs +0 -154
- package/fesm2022/sftech-ng-orchestrator-chat.routes-VZLqUmet.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-prompt-display.component-Cs98Is_J.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-prompt.service-5pF5b4ys.mjs +0 -107
- package/fesm2022/sftech-ng-orchestrator-prompt.service-5pF5b4ys.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-prompts.routes-C_K_TNaw.mjs.map +0 -1
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-BVqY_Vj9.mjs +0 -158
- package/fesm2022/sftech-ng-orchestrator-sftech-ng-orchestrator-BVqY_Vj9.mjs.map +0 -1
- package/lib/ng-orchestrator/chat/chat.component.d.ts +0 -38
- package/lib/ng-orchestrator/chat/chat.routes.d.ts +0 -5
- package/lib/ng-orchestrator/core/dtos/llm-response.dto.d.ts +0 -10
- package/lib/ng-orchestrator/core/models/llm-response.model.d.ts +0 -12
- package/lib/ng-orchestrator/core/pipes/bold-input-vars.pipe.d.ts +0 -7
- package/lib/ng-orchestrator/core/service/orcherstrator.service.d.ts +0 -17
- /package/lib/ng-orchestrator/{agents → admin/agents}/agents.component.d.ts +0 -0
- /package/lib/ng-orchestrator/{agents → admin/agents}/agents.routes.d.ts +0 -0
- /package/lib/ng-orchestrator/{agents → admin/agents}/components/agent/agent-display/prompt-helper-modal/prompt-helper-modal.component.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts → admin/prompts}/prompts.component.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts → admin/prompts}/prompts.routes.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/dtos/prompt-history-create.dto.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/dtos/prompt-history-response.dto.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/dtos/prompt-history-update.dto.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/dtos/prompt-request.dto.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/dtos/prompt-update.dto.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/models/prompt-history.model.d.ts +0 -0
- /package/lib/ng-orchestrator/{prompts/core → core}/models/prompt.model.d.ts +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken, Inject, Injectable, NgModule } from '@angular/core';
|
|
4
|
+
import { MarkdownModule } from 'ngx-markdown';
|
|
5
|
+
import * as i1 from '@angular/common/http';
|
|
6
|
+
import { BaseDbModel, EFilterTypes, MappedApiError, MappedApiResponseRaw } from '@sftech/ng-shared';
|
|
7
|
+
import { map, catchError, of, Observable } from 'rxjs';
|
|
8
|
+
import { AdminGuard } from '@sftech/ng-auth';
|
|
9
|
+
|
|
10
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>
|
|
11
|
+
class OrchestratorConfigMapper {
|
|
12
|
+
static map(config) {
|
|
13
|
+
return {
|
|
14
|
+
orchestratorUrl: config['ORCHESTRATOR_URL'] ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator`,
|
|
15
|
+
orchestratorDbUrl: config['ORCHESTRATOR_DB_URL'] ?? `${window.location.protocol}//${window.location.hostname}:${window.location.port}/api/orchestrator-db`,
|
|
16
|
+
defaultConnectorUrl: config['DEFAULT_CONNECTOR_URL'],
|
|
17
|
+
defaultAnswerSpecification: config['DEFAULT_ANSWER_SPECIFICATION'],
|
|
18
|
+
defaultLlmProvider: config['DEFAULT_LLM_PROVIDER'],
|
|
19
|
+
defaultLlmModel: config['DEFAULT_LLM_MODEL'],
|
|
20
|
+
defaultLlmTemperature: config['DEFAULT_LLM_TEMPERATURE'],
|
|
21
|
+
defaultLlmTimeout: config['DEFAULT_LLM_TIMEOUT'],
|
|
22
|
+
defaultLlmRetries: config['DEFAULT_LLM_RETRIES'],
|
|
23
|
+
defaultLlmMaxTokens: config['DEFAULT_LLM_MAX_TOKENS'],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const ORCHESTRATOR_CONFIGURATION = new InjectionToken('ORCHESTRATOR_CONFIGURATION');
|
|
29
|
+
|
|
30
|
+
class ChatMessage extends BaseDbModel {
|
|
31
|
+
message;
|
|
32
|
+
messageType;
|
|
33
|
+
chatId;
|
|
34
|
+
chat;
|
|
35
|
+
fromDto(dto) {
|
|
36
|
+
const obj = new ChatMessage();
|
|
37
|
+
obj.id = dto.id;
|
|
38
|
+
obj.createdAt = dto.createdAt;
|
|
39
|
+
obj.message = dto.message;
|
|
40
|
+
obj.messageType = dto.messageType;
|
|
41
|
+
obj.chatId = dto.chatId;
|
|
42
|
+
return obj;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
class Chat extends BaseDbModel {
|
|
47
|
+
messages = [];
|
|
48
|
+
agentId;
|
|
49
|
+
fromDto(dto) {
|
|
50
|
+
const obj = new Chat();
|
|
51
|
+
obj.id = dto.id;
|
|
52
|
+
obj.createdAt = dto.createdAt;
|
|
53
|
+
obj.agentId = dto.agentId;
|
|
54
|
+
obj.messages = dto.messages.map((dto) => new ChatMessage().fromDto(dto));
|
|
55
|
+
return obj;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
class AgentRun extends BaseDbModel {
|
|
60
|
+
status;
|
|
61
|
+
step;
|
|
62
|
+
startedAt;
|
|
63
|
+
endedAt;
|
|
64
|
+
agentId;
|
|
65
|
+
agent;
|
|
66
|
+
chatId;
|
|
67
|
+
chat;
|
|
68
|
+
propertiesToShow = ['status', 'step', 'startedAt', 'endedAt'];
|
|
69
|
+
propertyUINames = new Map([
|
|
70
|
+
['status', 'Status'],
|
|
71
|
+
['step', 'Schritt'],
|
|
72
|
+
['startedAt', 'Start'],
|
|
73
|
+
['endedAt', 'Ende'],
|
|
74
|
+
]);
|
|
75
|
+
propertyFilterType = new Map([
|
|
76
|
+
['status', EFilterTypes.STRING],
|
|
77
|
+
['step', EFilterTypes.STRING],
|
|
78
|
+
['startedAt', EFilterTypes.DATE],
|
|
79
|
+
['endedAt', EFilterTypes.DATE],
|
|
80
|
+
]);
|
|
81
|
+
fromDto(dto) {
|
|
82
|
+
const model = new AgentRun();
|
|
83
|
+
model.id = dto.id;
|
|
84
|
+
model.createdAt = new Date(dto.createdAt);
|
|
85
|
+
model.agentId = dto.agentId;
|
|
86
|
+
model.chatId = dto.chatId;
|
|
87
|
+
model.status = dto.status;
|
|
88
|
+
model.startedAt = dto.startedAt;
|
|
89
|
+
model.endedAt = dto.endedAt;
|
|
90
|
+
model.step = dto.step;
|
|
91
|
+
if (dto.chat) {
|
|
92
|
+
model.chat = new Chat().fromDto(dto.chat);
|
|
93
|
+
}
|
|
94
|
+
return model;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
class McpTool {
|
|
99
|
+
name;
|
|
100
|
+
identifier;
|
|
101
|
+
desceription;
|
|
102
|
+
static fromDto(dto) {
|
|
103
|
+
const tool = new McpTool();
|
|
104
|
+
tool.name = dto.name;
|
|
105
|
+
tool.identifier = dto.identifier;
|
|
106
|
+
tool.desceription = dto.description;
|
|
107
|
+
return tool;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
class OrchestratorService {
|
|
112
|
+
http;
|
|
113
|
+
zone;
|
|
114
|
+
config;
|
|
115
|
+
constructor(http, zone, config) {
|
|
116
|
+
this.http = http;
|
|
117
|
+
this.zone = zone;
|
|
118
|
+
this.config = config;
|
|
119
|
+
}
|
|
120
|
+
runAgent(runConfig) {
|
|
121
|
+
const url = `${this.config.orchestratorUrl}/generic/run`;
|
|
122
|
+
return this.http.post(url, runConfig).pipe(map((res) => {
|
|
123
|
+
return res.data;
|
|
124
|
+
}), catchError((err) => {
|
|
125
|
+
const error = new MappedApiError();
|
|
126
|
+
error.messages = err.messages ? err.messages : [];
|
|
127
|
+
return of(new MappedApiError());
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
observeAgentRun(agentRunId) {
|
|
131
|
+
return new Observable((observer) => {
|
|
132
|
+
const eventSource = new EventSource(`${this.config.orchestratorUrl}/generic/stream/${agentRunId}`);
|
|
133
|
+
eventSource.onmessage = (event) => {
|
|
134
|
+
this.zone.run(() => {
|
|
135
|
+
const agentRun = new AgentRun();
|
|
136
|
+
observer.next(agentRun.fromDto(JSON.parse(event.data)));
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
eventSource.onerror = (error) => {
|
|
140
|
+
this.zone.run(() => observer.error(error));
|
|
141
|
+
};
|
|
142
|
+
// Cleanup, wenn unsubscribed wird
|
|
143
|
+
return () => eventSource.close();
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
getTools() {
|
|
147
|
+
const url = `${this.config.orchestratorUrl}/tools`;
|
|
148
|
+
return this.http.get(url).pipe(map((res) => {
|
|
149
|
+
const apiResponse = new MappedApiResponseRaw();
|
|
150
|
+
apiResponse.status = res.status;
|
|
151
|
+
apiResponse.messages = res.messages ? res.messages : [];
|
|
152
|
+
apiResponse.isError = false;
|
|
153
|
+
apiResponse.data = res.data.map((t) => McpTool.fromDto(t));
|
|
154
|
+
return apiResponse;
|
|
155
|
+
}), catchError((err) => {
|
|
156
|
+
console.error('Error fetching tools:', err);
|
|
157
|
+
const error = new MappedApiError();
|
|
158
|
+
error.messages = err.messages ? err.messages : [];
|
|
159
|
+
error.status = err.status ? err.status : 500;
|
|
160
|
+
error.isError = true;
|
|
161
|
+
return of(error);
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: ORCHESTRATOR_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorService });
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorService, decorators: [{
|
|
168
|
+
type: Injectable
|
|
169
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
170
|
+
type: Inject,
|
|
171
|
+
args: [ORCHESTRATOR_CONFIGURATION]
|
|
172
|
+
}] }] });
|
|
173
|
+
|
|
174
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>
|
|
175
|
+
class OrchestratorModule {
|
|
176
|
+
static forRoot(config) {
|
|
177
|
+
return {
|
|
178
|
+
ngModule: OrchestratorModule,
|
|
179
|
+
providers: [
|
|
180
|
+
{
|
|
181
|
+
provide: ORCHESTRATOR_CONFIGURATION,
|
|
182
|
+
useValue: OrchestratorConfigMapper.map(config),
|
|
183
|
+
},
|
|
184
|
+
OrchestratorService,
|
|
185
|
+
],
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
189
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorModule, imports: [CommonModule, MarkdownModule] });
|
|
190
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorModule, imports: [CommonModule, MarkdownModule] });
|
|
191
|
+
}
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OrchestratorModule, decorators: [{
|
|
193
|
+
type: NgModule,
|
|
194
|
+
args: [{
|
|
195
|
+
declarations: [],
|
|
196
|
+
imports: [CommonModule, MarkdownModule],
|
|
197
|
+
}]
|
|
198
|
+
}] });
|
|
199
|
+
|
|
200
|
+
const orchestratorRoutes = [
|
|
201
|
+
{
|
|
202
|
+
path: 'chats',
|
|
203
|
+
loadChildren: () => import('./sftech-ng-orchestrator-chats.routes-BLGhykMM.mjs').then((m) => m.chatsRoutes),
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
path: 'admin/prompts',
|
|
207
|
+
loadChildren: () => import('./sftech-ng-orchestrator-prompts.routes-DQZ_Hmjs.mjs').then((m) => m.promptsRoutes),
|
|
208
|
+
canActivate: [AdminGuard],
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
path: 'admin/agents',
|
|
212
|
+
loadChildren: () => import('./sftech-ng-orchestrator-agents.routes-B9GSWOIz.mjs').then((m) => m.agentsRoutes),
|
|
213
|
+
canActivate: [AdminGuard],
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Generated bundle index. Do not edit.
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
export { AgentRun as A, Chat as C, ORCHESTRATOR_CONFIGURATION as O, OrchestratorService as a, ChatMessage as b, OrchestratorModule as c, orchestratorRoutes as o };
|
|
222
|
+
//# sourceMappingURL=sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { c as OrchestratorModule, o as orchestratorRoutes } from './sftech-ng-orchestrator-sftech-ng-orchestrator-CJMmRHC-.mjs';
|
|
2
2
|
//# sourceMappingURL=sftech-ng-orchestrator.mjs.map
|
|
@@ -2,18 +2,18 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { BaseDisplayComponent } from '@sftech/ng-shared';
|
|
4
4
|
import { DialogService } from 'primeng/dynamicdialog';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
5
|
+
import { IAgentCreateDto } from '../../../../../core/dtos/agent-create-request.dto';
|
|
6
|
+
import { IAgentResponseDto } from '../../../../../core/dtos/agent-response.dto';
|
|
7
|
+
import { IAgentUpdateDto } from '../../../../../core/dtos/agent-update-request.dto';
|
|
8
|
+
import { Agent } from '../../../../../core/models/agent.model';
|
|
9
|
+
import { McpTool } from '../../../../../core/models/mcp-tool.model';
|
|
10
|
+
import { AgentService } from '../../../../../core/service/agent.service';
|
|
11
|
+
import { OrchestratorService } from '../../../../../core/service/orchestrator.service';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
export declare class AgentDisplayComponent extends BaseDisplayComponent<Agent, IAgentUpdateDto, IAgentUpdateDto, IAgentResponseDto> implements OnInit {
|
|
14
14
|
protected _repo: AgentService;
|
|
15
15
|
protected _route: string;
|
|
16
|
-
protected _orchestratorService:
|
|
16
|
+
protected _orchestratorService: OrchestratorService;
|
|
17
17
|
tools: import("@angular/core").WritableSignal<McpTool[] | undefined>;
|
|
18
18
|
protected dialog: DialogService;
|
|
19
19
|
private _options;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BaseListComponent, IconProvider } from '@sftech/ng-shared';
|
|
2
|
-
import { IAgentResponseDto } from '
|
|
3
|
-
import { IAgentUpdateDto } from '
|
|
4
|
-
import { Agent } from '
|
|
5
|
-
import { AgentService } from '
|
|
2
|
+
import { IAgentResponseDto } from '../../../../../core/dtos/agent-response.dto';
|
|
3
|
+
import { IAgentUpdateDto } from '../../../../../core/dtos/agent-update-request.dto';
|
|
4
|
+
import { Agent } from '../../../../../core/models/agent.model';
|
|
5
|
+
import { AgentService } from '../../../../../core/service/agent.service';
|
|
6
6
|
import { AgentDisplayComponent } from '../agent-display/agent-display.component';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class AgentsListComponent extends BaseListComponent<Agent, IAgentUpdateDto, IAgentUpdateDto, IAgentResponseDto> {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
2
|
import { BaseDisplayComponent, OData } from '@sftech/ng-shared';
|
|
3
|
-
import { IPromptResponseDto } from '
|
|
4
|
-
import { IPromptUpdateDto } from '
|
|
5
|
-
import { Prompt } from '
|
|
6
|
-
import { PromptService } from '
|
|
3
|
+
import { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';
|
|
4
|
+
import { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';
|
|
5
|
+
import { Prompt } from '../../../../../core/models/prompt.model';
|
|
6
|
+
import { PromptService } from '../../../../../core/service/prompt.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class PromptDisplayComponent extends BaseDisplayComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {
|
|
9
9
|
protected _repo: PromptService;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BaseListComponent, IconProvider } from '@sftech/ng-shared';
|
|
2
|
-
import { IPromptResponseDto } from '
|
|
3
|
-
import { IPromptUpdateDto } from '
|
|
4
|
-
import { Prompt } from '
|
|
5
|
-
import { PromptService } from '
|
|
2
|
+
import { IPromptResponseDto } from '../../../../../core/dtos/prompt-request.dto';
|
|
3
|
+
import { IPromptUpdateDto } from '../../../../../core/dtos/prompt-update.dto';
|
|
4
|
+
import { Prompt } from '../../../../../core/models/prompt.model';
|
|
5
|
+
import { PromptService } from '../../../../../core/service/prompt.service';
|
|
6
6
|
import { PromptDisplayComponent } from '../prompt-display/prompt-display.component';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class PromptsListComponent extends BaseListComponent<Prompt, IPromptUpdateDto, IPromptUpdateDto, IPromptResponseDto> {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { BaseDisplayComponent } from '@sftech/ng-shared';
|
|
4
|
-
import { IPromptHistoryCreateDto } from '
|
|
5
|
-
import { IPromptHistoryResponseDto } from '
|
|
6
|
-
import { IPromptHistoryUpdateDto } from '
|
|
7
|
-
import { PromptHistory } from '
|
|
8
|
-
import { PromptHistoryService } from '
|
|
4
|
+
import { IPromptHistoryCreateDto } from '../../../../../core/dtos/prompt-history-create.dto';
|
|
5
|
+
import { IPromptHistoryResponseDto } from '../../../../../core/dtos/prompt-history-response.dto';
|
|
6
|
+
import { IPromptHistoryUpdateDto } from '../../../../../core/dtos/prompt-history-update.dto';
|
|
7
|
+
import { PromptHistory } from '../../../../../core/models/prompt-history.model';
|
|
8
|
+
import { PromptHistoryService } from '../../../../../core/service/prompt-history.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class PromptHistoryDisplayComponent extends BaseDisplayComponent<PromptHistory, IPromptHistoryCreateDto, IPromptHistoryUpdateDto, IPromptHistoryResponseDto> implements OnInit {
|
|
11
11
|
protected _repo: PromptHistoryService;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { BaseListComponent } from '@sftech/ng-shared';
|
|
3
|
-
import { IPromptHistoryCreateDto } from '
|
|
4
|
-
import { IPromptHistoryResponseDto } from '
|
|
5
|
-
import { IPromptHistoryUpdateDto } from '
|
|
6
|
-
import { PromptHistory } from '
|
|
7
|
-
import { PromptHistoryService } from '
|
|
3
|
+
import { IPromptHistoryCreateDto } from '../../../../../core/dtos/prompt-history-create.dto';
|
|
4
|
+
import { IPromptHistoryResponseDto } from '../../../../../core/dtos/prompt-history-response.dto';
|
|
5
|
+
import { IPromptHistoryUpdateDto } from '../../../../../core/dtos/prompt-history-update.dto';
|
|
6
|
+
import { PromptHistory } from '../../../../../core/models/prompt-history.model';
|
|
7
|
+
import { PromptHistoryService } from '../../../../../core/service/prompt-history.service';
|
|
8
8
|
import { PromptHistoryDisplayComponent } from '../prompt-history-display/prompt-history-display.component';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class PromptHistoryListComponent extends BaseListComponent<PromptHistory, IPromptHistoryCreateDto, IPromptHistoryUpdateDto, IPromptHistoryResponseDto> implements OnInit {
|
package/lib/ng-orchestrator/chats/agent-chat/agent-chat-message/agent-chat-message.component.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AgentRunIconTextDataprovider } from '../../core/dataprovider/agent-run-icon-text.dataprovider';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AgentChatMessageComponent {
|
|
4
|
+
message: import("@angular/core").InputSignal<string>;
|
|
5
|
+
type: import("@angular/core").InputSignal<string>;
|
|
6
|
+
iconTextMapper: typeof AgentRunIconTextDataprovider;
|
|
7
|
+
extractJson(message: string): string;
|
|
8
|
+
private _toMarkdownFromJson;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentChatMessageComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AgentChatMessageComponent, "sftech-agent-chat-message", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { AgentRunIconTextDataprovider } from 'libs/ng-orchestrator/src/lib/ng-orchestrator/chats/core/dataprovider/agent-run-icon-text.dataprovider';
|
|
4
|
+
import { MessageService } from 'primeng/api';
|
|
5
|
+
import { Agent } from '../../../core/models/agent.model';
|
|
6
|
+
import { OrchestratorService } from '../../../core/service/orchestrator.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class AgentChatMessageHumanInputComponent {
|
|
9
|
+
agent: import("@angular/core").InputSignal<Agent | undefined>;
|
|
10
|
+
agentRunIdReceived: EventEmitter<number>;
|
|
11
|
+
messageService: MessageService;
|
|
12
|
+
orchestratorService: OrchestratorService;
|
|
13
|
+
form: FormGroup<{}>;
|
|
14
|
+
private _agentChanged$;
|
|
15
|
+
protected readonly iconTextMapper: typeof AgentRunIconTextDataprovider;
|
|
16
|
+
run(): void;
|
|
17
|
+
getInputFormControlNames(): string[];
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentChatMessageHumanInputComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AgentChatMessageHumanInputComponent, "sftech-agent-chat-message-human-input", never, { "agent": { "alias": "agent"; "required": false; "isSignal": true; }; }, { "agentRunIdReceived": "agentRunIdReceived"; }, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
+
import { IconProvider } from '@sftech/ng-shared';
|
|
4
|
+
import { MessageService } from 'primeng/api';
|
|
5
|
+
import { Subscription } from 'rxjs';
|
|
6
|
+
import { EAgentRunStatus } from '../../core/enums/agent-run-status.enum';
|
|
7
|
+
import { AgentRun } from '../../core/models/agent-run.model';
|
|
8
|
+
import { Agent } from '../../core/models/agent.model';
|
|
9
|
+
import { AgentRunService } from '../../core/service/agent-run.service';
|
|
10
|
+
import { AgentService } from '../../core/service/agent.service';
|
|
11
|
+
import { ChatService } from '../../core/service/chat.service';
|
|
12
|
+
import { OrchestratorService } from '../../core/service/orchestrator.service';
|
|
13
|
+
import { AgentRunIconTextDataprovider } from '../core/dataprovider/agent-run-icon-text.dataprovider';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
export declare class AgentChatComponent implements OnInit, OnDestroy {
|
|
16
|
+
protected readonly activeRoute: ActivatedRoute;
|
|
17
|
+
protected readonly router: Router;
|
|
18
|
+
protected readonly agentService: AgentService;
|
|
19
|
+
protected readonly agentRunService: AgentRunService;
|
|
20
|
+
protected readonly chatService: ChatService;
|
|
21
|
+
protected readonly orchestratorService: OrchestratorService;
|
|
22
|
+
protected readonly messageService: MessageService;
|
|
23
|
+
protected agent: Agent;
|
|
24
|
+
protected readonly agentRuns: import("@angular/core").WritableSignal<AgentRun[] | undefined>;
|
|
25
|
+
protected selectedAgentRun: import("@angular/core").WritableSignal<AgentRun | undefined>;
|
|
26
|
+
protected selectedAgent: import("@angular/core").WritableSignal<Agent | undefined>;
|
|
27
|
+
iconProvider: typeof IconProvider;
|
|
28
|
+
iconTextMapper: typeof AgentRunIconTextDataprovider;
|
|
29
|
+
agentRunStatus: typeof EAgentRunStatus;
|
|
30
|
+
subscriptions: Subscription[];
|
|
31
|
+
protected selectedAgentRunChanged$: import("@angular/core").EffectRef;
|
|
32
|
+
loading: import("@angular/core").Signal<boolean>;
|
|
33
|
+
ngOnInit(): void;
|
|
34
|
+
ngOnDestroy(): void;
|
|
35
|
+
startNewRun(): void;
|
|
36
|
+
selectAgentRun(agentRun: AgentRun): void;
|
|
37
|
+
startObservingAgentRun(agentRunId: number): void;
|
|
38
|
+
goBack(): void;
|
|
39
|
+
private _loadChat;
|
|
40
|
+
private _setRelativeUrl;
|
|
41
|
+
private _mapUpdateOnAgentRun;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentChatComponent, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AgentChatComponent, "sftech-agent-chat", never, {}, {}, never, never, true, never>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { BaseListComponent, IconProvider } from '@sftech/ng-shared';
|
|
3
|
+
import { MessageService } from 'primeng/api';
|
|
4
|
+
import { IAgentCreateDto } from '../../core/dtos/agent-create-request.dto';
|
|
5
|
+
import { IAgentResponseDto } from '../../core/dtos/agent-response.dto';
|
|
6
|
+
import { Agent } from '../../core/models/agent.model';
|
|
7
|
+
import { McpTool } from '../../core/models/mcp-tool.model';
|
|
8
|
+
import { AgentService } from '../../core/service/agent.service';
|
|
9
|
+
import { OrchestratorService } from '../../core/service/orchestrator.service';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export declare class AgentSelectionComponent extends BaseListComponent<Agent, IAgentCreateDto, IAgentCreateDto, IAgentResponseDto> implements OnInit {
|
|
12
|
+
protected _repo: AgentService;
|
|
13
|
+
protected _route: string;
|
|
14
|
+
protected orchestratorService: OrchestratorService;
|
|
15
|
+
protected messageService: MessageService;
|
|
16
|
+
protected iconProvider: typeof IconProvider;
|
|
17
|
+
tools: import("@angular/core").WritableSignal<McpTool[] | undefined>;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
getToolNames(agent: Agent): string;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentSelectionComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AgentSelectionComponent, "sftech-agent-selection", never, {}, {}, never, never, true, never>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticationGuard } from '@sftech/ng-auth';
|
|
2
|
+
import { AgentChatComponent } from './agent-chat/agent-chat.component';
|
|
3
|
+
import { AgentSelectionComponent } from './agent-selection/agent-selection.component';
|
|
4
|
+
import { ChatsComponent } from './chats.component';
|
|
5
|
+
export declare const chatsRoutes: {
|
|
6
|
+
path: string;
|
|
7
|
+
component: typeof ChatsComponent;
|
|
8
|
+
children: ({
|
|
9
|
+
path: string;
|
|
10
|
+
component: typeof AgentSelectionComponent;
|
|
11
|
+
} | {
|
|
12
|
+
path: string;
|
|
13
|
+
component: typeof AgentChatComponent;
|
|
14
|
+
})[];
|
|
15
|
+
canActivate: (typeof AuthenticationGuard)[];
|
|
16
|
+
}[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IconDefinition } from '@fortawesome/angular-fontawesome';
|
|
2
|
+
import { EAgentRunStatus } from '../../../core/enums/agent-run-status.enum';
|
|
3
|
+
export declare class AgentRunIconTextDataprovider {
|
|
4
|
+
private static readonly UNKNOWN_TEXT;
|
|
5
|
+
static getTextForStatus(status: EAgentRunStatus | undefined): string;
|
|
6
|
+
static getIconForStatus(status: EAgentRunStatus | undefined): IconDefinition;
|
|
7
|
+
static getIconClassesForStatus(status: EAgentRunStatus | undefined): string;
|
|
8
|
+
static getIconForMessageType(messageType: string): IconDefinition;
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IconProvider } from '@sftech/ng-shared';
|
|
2
|
+
export declare class OrchestratorIconProvider extends IconProvider {
|
|
3
|
+
static readonly agentRunStatusInit: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
4
|
+
static readonly agentRunStatusRunning: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
5
|
+
static readonly agentRunStatusCompleted: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
6
|
+
static readonly agentRunStatusFailed: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
7
|
+
static readonly agentRunStatusPrerun: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
8
|
+
static readonly agentRunStatusPostrun: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
9
|
+
static readonly agentRunStatusClarify: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
10
|
+
static readonly messageTypeAI: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
11
|
+
static readonly messageTypeHuman: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
12
|
+
static readonly messageTypeSystem: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
13
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IBaseDbResponseDto } from '@sftech/ng-shared';
|
|
2
|
-
import { IPromptHistoryResponseDto } from
|
|
2
|
+
import { IPromptHistoryResponseDto } from './prompt-history-response.dto';
|
|
3
3
|
export interface IAgentResponseDto extends IBaseDbResponseDto {
|
|
4
4
|
identifier: string;
|
|
5
5
|
description: string;
|
|
@@ -13,7 +13,6 @@ export interface IAgentResponseDto extends IBaseDbResponseDto {
|
|
|
13
13
|
llmTemperature: number;
|
|
14
14
|
llmTimeout?: number;
|
|
15
15
|
llmRetries?: number;
|
|
16
|
-
llmMaxTokens?: number;
|
|
17
16
|
llmUserPromptId: number;
|
|
18
17
|
llmUserPrompt?: IPromptHistoryResponseDto;
|
|
19
18
|
llmSystemPromptId: number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IBaseDbResponseDto } from '@sftech/ng-shared';
|
|
2
|
+
import { EAgentRunStatus } from '../enums/agent-run-status.enum';
|
|
3
|
+
import { IChatResponseDto } from './chat-response.dto';
|
|
4
|
+
export interface IAgentRunResponseDto extends IBaseDbResponseDto {
|
|
5
|
+
status: EAgentRunStatus;
|
|
6
|
+
step: string;
|
|
7
|
+
startedAt?: Date;
|
|
8
|
+
endedAt?: Date;
|
|
9
|
+
agentId?: number;
|
|
10
|
+
chatId?: number;
|
|
11
|
+
chat?: IChatResponseDto;
|
|
12
|
+
}
|