@newheap/platform-ai-chat 0.14.0 → 0.16.0
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/README.md +27 -0
- package/admin/index.d.ts +764 -83
- package/agent-runs/index.d.ts +450 -17
- package/fesm2022/newheap-platform-ai-chat-admin.mjs +3839 -373
- package/fesm2022/newheap-platform-ai-chat-admin.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat-agent-runs.mjs +1288 -61
- package/fesm2022/newheap-platform-ai-chat-agent-runs.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat-testing.mjs +4509 -784
- package/fesm2022/newheap-platform-ai-chat-testing.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat.mjs +4254 -669
- package/fesm2022/newheap-platform-ai-chat.mjs.map +1 -1
- package/i18n/en.json +863 -31
- package/i18n/nl.json +863 -31
- package/index.d.ts +1706 -47
- package/package.json +1 -1
- package/testing/index.d.ts +438 -24
package/admin/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnInit } from '@angular/core';
|
|
3
3
|
import * as _newheap_platform_ai_chat from '@newheap/platform-ai-chat';
|
|
4
|
-
import { NhAssistantStore, NhAssistantError, ApplicationContext, ApplicationContextVersion, AdminAgent, ToolCatalogEntry, McpServer,
|
|
4
|
+
import { NhAssistantStore, NhAssistantError, ApplicationContext, ApplicationContextVersion, AdminAgent, ToolCatalogEntry, McpServer, RunCatalog, SetAgentStateRequest, AgentSkillState, AgentShadowMode, AgentShadowState, AssistantAutonomy, AssistantDataClassification, AgentEvaluation, AgentReplay, AgentEvaluationCost, AgentProposalFeedbackCategory, AgentFeedbackSummaryRow, AgentFeedbackItem, AgentFeedbackCategoryCount, StaleKind, AgentProposalFeedbackGroup, AgentSubjectType, AgentRunStatus, ɵnhAssistantCodeKeys as _nhAssistantCodeKeys, AgentRunHistoryItem, DataSkill, AgentRunConfiguration, DataTrigger, SkillComparison, DataSkillVersion, ɵNhAssistantPickerOption as _NhAssistantPickerOption, McpServerTestResult, McpConnectionsSummary, McpBuiltInAuthMode, McpCustomAuthMode, McpAuthMode, McpTransport, McpConnectionScope, McpHeadlessUse, McpDiscovery, McpTool, McpToolEffect } from '@newheap/platform-ai-chat';
|
|
5
|
+
import { ɵNhAssistantRunNowAgent as _NhAssistantRunNowAgent } from '@newheap/platform-ai-chat/agent-runs';
|
|
5
6
|
|
|
6
7
|
type NhAssistantAdminTab = 'context' | 'agents' | 'mcp-servers';
|
|
7
8
|
/**
|
|
@@ -11,6 +12,7 @@ type NhAssistantAdminTab = 'context' | 'agents' | 'mcp-servers';
|
|
|
11
12
|
*/
|
|
12
13
|
declare class NhAssistantAdminComponent {
|
|
13
14
|
private readonly host;
|
|
15
|
+
private readonly injector;
|
|
14
16
|
readonly store: NhAssistantStore;
|
|
15
17
|
/** Tab shown first. */
|
|
16
18
|
readonly initialTab: _angular_core.InputSignal<NhAssistantAdminTab>;
|
|
@@ -21,12 +23,53 @@ declare class NhAssistantAdminComponent {
|
|
|
21
23
|
constructor();
|
|
22
24
|
selected(): NhAssistantAdminTab;
|
|
23
25
|
select(tab: NhAssistantAdminTab): void;
|
|
26
|
+
/**
|
|
27
|
+
* Shows the MCP servers, for example from an agent's flow that explains why a server is not used in
|
|
28
|
+
* runs without a person, and moves the focus to their tab.
|
|
29
|
+
*/
|
|
30
|
+
showMcpServers(): void;
|
|
24
31
|
/** Arrow keys, Home and End move between tabs as the ARIA tabs pattern describes. */
|
|
25
32
|
onTabKeydown(event: KeyboardEvent): void;
|
|
26
33
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminComponent, never>;
|
|
27
34
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminComponent, "nh-assistant-admin", never, { "initialTab": { "alias": "initialTab"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
28
35
|
}
|
|
29
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The names the application knows for account ids, for the screens of the administration
|
|
39
|
+
* (internal). A screen shows the name only; it shows the id, labeled as an account ID, only while
|
|
40
|
+
* no name is known. When the lookup fails, `error` says why with the failure's code and `retry` asks
|
|
41
|
+
* for the names that are still missing, so a failure never hides behind the ids. Create it in an
|
|
42
|
+
* injection context, such as a component's field.
|
|
43
|
+
*/
|
|
44
|
+
declare class NhAssistantAccountNames {
|
|
45
|
+
private readonly admin;
|
|
46
|
+
private readonly translate;
|
|
47
|
+
private readonly subscriptions;
|
|
48
|
+
/** The ids whose names were asked for, also the ones the application does not know. */
|
|
49
|
+
private readonly asked;
|
|
50
|
+
/** The ids of failed lookups, which `retry` asks for again. */
|
|
51
|
+
private failed;
|
|
52
|
+
/** The names found so far, by account id. */
|
|
53
|
+
readonly names: _angular_core.WritableSignal<ReadonlyMap<string, string>>;
|
|
54
|
+
/** Why the latest lookup failed; `null` while none did. */
|
|
55
|
+
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
56
|
+
constructor();
|
|
57
|
+
/**
|
|
58
|
+
* The name of an account for a sentence, or its id labeled as an account ID ("account ID …")
|
|
59
|
+
* while the application knows no name for it.
|
|
60
|
+
*/
|
|
61
|
+
nameOf(actorId: string | null | undefined): string;
|
|
62
|
+
/**
|
|
63
|
+
* The account ID as a tooltip for a name shown in its place; `null` while no name is known,
|
|
64
|
+
* because the text shows the id then.
|
|
65
|
+
*/
|
|
66
|
+
idTitleOf(actorId: string | null | undefined): string | null;
|
|
67
|
+
/** Looks up the names of the ids that were not asked for yet. */
|
|
68
|
+
load(actorIds: readonly (string | null | undefined)[]): void;
|
|
69
|
+
/** Asks again for the names whose lookup failed. */
|
|
70
|
+
retry(): void;
|
|
71
|
+
}
|
|
72
|
+
|
|
30
73
|
/** Maximum length of the application context and of agent instructions. */
|
|
31
74
|
declare const NH_ASSISTANT_MAX_INSTRUCTIONS = 20000;
|
|
32
75
|
/**
|
|
@@ -52,40 +95,115 @@ declare class NhAssistantAdminContextComponent {
|
|
|
52
95
|
readonly canSave: _angular_core.Signal<boolean>;
|
|
53
96
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
54
97
|
readonly history: _angular_core.Signal<ApplicationContextVersion[]>;
|
|
98
|
+
/** The names of the people who changed the context, once known, and why they are not. */
|
|
99
|
+
readonly accountNames: NhAssistantAccountNames;
|
|
55
100
|
constructor();
|
|
56
101
|
/** Loads the latest version; with `keepDraft` the user's unsaved text stays in the editor. */
|
|
57
102
|
load(keepDraft: boolean): void;
|
|
103
|
+
/** A person's name, or the id when the application does not know it. */
|
|
104
|
+
nameOf(actorId: string | null | undefined): string;
|
|
105
|
+
/** The account ID as the tooltip of a name shown in its place. */
|
|
106
|
+
accountTitle(actorId: string | null | undefined): string | null;
|
|
58
107
|
onInput(event: Event): void;
|
|
59
108
|
save(): void;
|
|
60
109
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminContextComponent, never>;
|
|
61
110
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminContextComponent, "nh-assistant-admin-context", never, {}, {}, never, never, true, never>;
|
|
62
111
|
}
|
|
63
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Translation keys for the texts the administration shows about agents, skills and policies. Each
|
|
115
|
+
* list goes through `nhAssistantTranslate` with the text itself as fallback, so a missing
|
|
116
|
+
* translation shows what the server sent.
|
|
117
|
+
*/
|
|
118
|
+
/**
|
|
119
|
+
* The key of a text of an agent in code, which names and describes itself with translation keys;
|
|
120
|
+
* none for an agent created in the administration, whose texts are what the administrator typed.
|
|
121
|
+
*/
|
|
122
|
+
declare function codeTextKeys(source: string, text: string | null | undefined): string[];
|
|
123
|
+
/** The key an application may translate a skill's name with. */
|
|
124
|
+
declare function skillNameKeys(agentId: string, skillId: string): string[];
|
|
125
|
+
/**
|
|
126
|
+
* The key an application may translate a skill's description with. Skills in code describe
|
|
127
|
+
* themselves in the language triage reads; the screen shows a translation when there is one.
|
|
128
|
+
*/
|
|
129
|
+
declare function skillDescriptionKeys(agentId: string, skillId: string): string[];
|
|
130
|
+
/**
|
|
131
|
+
* The key of a warning about an agent or a skill that is saved and in effect but may not work as
|
|
132
|
+
* configured, such as `classification-not-permitted`; a code the screen does not know shows as sent.
|
|
133
|
+
*/
|
|
134
|
+
declare function warningKeys(kind: 'agent' | 'skill', code: string): string[];
|
|
135
|
+
/** The key an application may translate an authorization policy's name with. */
|
|
136
|
+
declare function policyKeys(policy: string | null | undefined): string[];
|
|
137
|
+
/** A readable name for a dash-case id: `task-follow-up` reads "Task follow up". */
|
|
138
|
+
declare function readableId(id: string): string;
|
|
139
|
+
/** What an agent works on, ready to show: object types by name, all objects and the application. */
|
|
140
|
+
interface WorksOnSummary {
|
|
141
|
+
/** The names of the object types it works on; empty with `all`. */
|
|
142
|
+
types: string[];
|
|
143
|
+
/** It works on every object type. */
|
|
144
|
+
all: boolean;
|
|
145
|
+
/** It works on the whole application. */
|
|
146
|
+
application: boolean;
|
|
147
|
+
perDivision: boolean;
|
|
148
|
+
/** An agent in code that does not say what it works on. */
|
|
149
|
+
undeclared: boolean;
|
|
150
|
+
/** The names of the object types it is known to work on, as a hint next to "All objects". */
|
|
151
|
+
known: string[];
|
|
152
|
+
runPolicy: string | null;
|
|
153
|
+
viewPolicy: string | null;
|
|
154
|
+
}
|
|
155
|
+
|
|
64
156
|
type AgentStateAction = SetAgentStateRequest['state'];
|
|
157
|
+
/** A state change being entered, of the agent or one of its skills, with the state it changes from. */
|
|
158
|
+
interface StateChange {
|
|
159
|
+
agentId: string;
|
|
160
|
+
skillId?: string;
|
|
161
|
+
state: AgentStateAction;
|
|
162
|
+
from: AdminAgent['runState'] | AgentSkillState['runState'];
|
|
163
|
+
}
|
|
65
164
|
/**
|
|
66
165
|
* Agent administration: code agents (override, reset) and agents created here (edit, delete),
|
|
67
|
-
* and for every agent its run state with pause,
|
|
166
|
+
* and for every agent and skill its run state with pause, switch off, stop and resume (switch on
|
|
167
|
+
* for one that is off), its shadow mode and that of each
|
|
68
168
|
* skill, and the technical account of an agent that answers to one, each with an optional reason.
|
|
69
169
|
* Editing opens `nh-assistant-admin-agent-editor`; the feedback action opens
|
|
70
170
|
* `nh-assistant-agent-feedback-report` for the agent, the evaluation action of an agent with
|
|
71
171
|
* shadow variants opens `nh-assistant-agent-evaluation`, and the run configuration action opens
|
|
72
172
|
* `nh-assistant-agent-run-configuration` for the skills, triggers and run settings defined as data.
|
|
173
|
+
* "Run now" on an agent that runs on its own opens the run-now dialog: the whole application (or a
|
|
174
|
+
* division of it) or an object of one of its types, and an optional instruction; the receipt opens
|
|
175
|
+
* the agent's conversation in the assistant panel. "Runs" opens `nh-assistant-agent-run-history`, the
|
|
176
|
+
* agent's runs with their results. When the run catalog cannot be read, the page says why with its
|
|
177
|
+
* code and offers to read it again; until then it offers no "Run now" and the editor leaves what an
|
|
178
|
+
* agent works on and its groups as they are. The run configuration opens with the agent's flow, whose
|
|
179
|
+
* entry points open the editor, the runs and the technical account here and return to the run
|
|
180
|
+
* configuration afterwards; `openMcpServers` asks the host to show the MCP servers.
|
|
73
181
|
*/
|
|
74
182
|
declare class NhAssistantAdminAgentsComponent {
|
|
75
183
|
private readonly admin;
|
|
76
184
|
private readonly store;
|
|
185
|
+
private readonly panel;
|
|
186
|
+
private readonly translate;
|
|
77
187
|
private readonly injector;
|
|
78
188
|
private readonly host;
|
|
79
189
|
private readonly backButton;
|
|
80
190
|
private readonly reasonInput;
|
|
81
191
|
private subscription?;
|
|
82
192
|
private actionSubscription?;
|
|
193
|
+
private catalogSubscription?;
|
|
83
194
|
readonly id: string;
|
|
84
195
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
85
196
|
readonly loadFailed: _angular_core.WritableSignal<boolean>;
|
|
86
197
|
readonly agents: _angular_core.WritableSignal<AdminAgent[]>;
|
|
87
198
|
readonly tools: _angular_core.WritableSignal<ToolCatalogEntry[]>;
|
|
88
199
|
readonly servers: _angular_core.WritableSignal<McpServer[]>;
|
|
200
|
+
/** The run catalog: object types by name, policies and divisions; `null` when it could not be read. */
|
|
201
|
+
readonly catalog: _angular_core.WritableSignal<RunCatalog | null>;
|
|
202
|
+
/** Why the run catalog could not be read; `null` once it was. */
|
|
203
|
+
readonly catalogError: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
204
|
+
readonly catalogErrorKeys: _angular_core.Signal<string[]>;
|
|
205
|
+
/** The run catalog is being read again after a failure. */
|
|
206
|
+
readonly catalogLoading: _angular_core.WritableSignal<boolean>;
|
|
89
207
|
/** `undefined`: list; `null`: new agent; an agent: editing that agent. */
|
|
90
208
|
readonly editing: _angular_core.WritableSignal<AdminAgent | null | undefined>;
|
|
91
209
|
/** The agent whose feedback report is shown instead of the list. */
|
|
@@ -94,17 +212,22 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
94
212
|
readonly evaluating: _angular_core.WritableSignal<AdminAgent | null>;
|
|
95
213
|
/** The agent whose run configuration is shown instead of the list. */
|
|
96
214
|
readonly configuring: _angular_core.WritableSignal<AdminAgent | null>;
|
|
215
|
+
/** The agent whose runs are shown instead of the list. */
|
|
216
|
+
readonly viewingRuns: _angular_core.WritableSignal<AdminAgent | null>;
|
|
217
|
+
/**
|
|
218
|
+
* The agent whose run configuration opened the editor or the runs from its flow; closing them
|
|
219
|
+
* returns to its run configuration instead of the list.
|
|
220
|
+
*/
|
|
221
|
+
readonly returnTo: _angular_core.WritableSignal<string | null>;
|
|
222
|
+
/** The flow of a run configuration asks to show the MCP servers, whose background use it explains. */
|
|
223
|
+
readonly openMcpServers: _angular_core.OutputEmitterRef<void>;
|
|
97
224
|
readonly confirming: _angular_core.WritableSignal<{
|
|
98
225
|
agentId: string;
|
|
99
226
|
action: "delete" | "reset";
|
|
100
227
|
} | null>;
|
|
101
228
|
readonly busyAgentId: _angular_core.WritableSignal<string | null>;
|
|
102
229
|
/** The state change whose reason is being entered, of the agent or one of its skills. */
|
|
103
|
-
readonly changingState: _angular_core.WritableSignal<
|
|
104
|
-
agentId: string;
|
|
105
|
-
skillId?: string;
|
|
106
|
-
state: AgentStateAction;
|
|
107
|
-
} | null>;
|
|
230
|
+
readonly changingState: _angular_core.WritableSignal<StateChange | null>;
|
|
108
231
|
/** The shadow mode change whose reason is being entered, of the agent or one of its skills. */
|
|
109
232
|
readonly changingShadow: _angular_core.WritableSignal<{
|
|
110
233
|
agentId: string;
|
|
@@ -117,12 +240,41 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
117
240
|
mode: "set" | "code";
|
|
118
241
|
} | null>;
|
|
119
242
|
readonly accountId: _angular_core.WritableSignal<string>;
|
|
243
|
+
/** Why the account of the open account form was refused, shown at the account field. */
|
|
244
|
+
readonly accountError: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
245
|
+
/** The text of the account field's error: the refused field value, then the code. */
|
|
246
|
+
readonly accountErrorKeys: _angular_core.Signal<string[]>;
|
|
247
|
+
/** Whether the application offers an account search for the technical account. */
|
|
248
|
+
readonly accountSearch: _angular_core.WritableSignal<boolean>;
|
|
249
|
+
/**
|
|
250
|
+
* The names of the technical accounts and of the people who changed an agent, once known, and why
|
|
251
|
+
* they are not.
|
|
252
|
+
*/
|
|
253
|
+
readonly accountNameLookup: NhAssistantAccountNames;
|
|
254
|
+
/** The names of the technical accounts in the list, by account id. */
|
|
255
|
+
readonly accountNames: _angular_core.Signal<ReadonlyMap<string, string>>;
|
|
256
|
+
/** The agent whose last action failed, so its error shows on its card. */
|
|
257
|
+
readonly errorAgentId: _angular_core.WritableSignal<string | null>;
|
|
258
|
+
/** The agent the run-now dialog runs; `null` while it is closed. */
|
|
259
|
+
readonly runningNow: _angular_core.WritableSignal<AdminAgent | null>;
|
|
260
|
+
/** The agent of the run-now dialog as the dialog needs it: its name and what it works on. */
|
|
261
|
+
readonly runNowAgent: _angular_core.Signal<_NhAssistantRunNowAgent | null>;
|
|
262
|
+
/** The run configuration opens with the guided setup, for an agent created to work on its own. */
|
|
263
|
+
readonly setupOnOpen: _angular_core.WritableSignal<boolean>;
|
|
120
264
|
readonly stateReason: _angular_core.WritableSignal<string>;
|
|
121
265
|
readonly maxReason = 500;
|
|
122
266
|
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
123
267
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
268
|
+
readonly codeTextKeys: typeof codeTextKeys;
|
|
269
|
+
readonly skillNameKeys: typeof skillNameKeys;
|
|
270
|
+
readonly warningKeys: typeof warningKeys;
|
|
271
|
+
readonly skillDescriptionKeys: typeof skillDescriptionKeys;
|
|
272
|
+
readonly policyKeys: typeof policyKeys;
|
|
273
|
+
readonly readableId: typeof readableId;
|
|
124
274
|
constructor();
|
|
125
275
|
load(): void;
|
|
276
|
+
/** Reads the run catalog again after it could not be read. */
|
|
277
|
+
retryCatalog(): void;
|
|
126
278
|
create(): void;
|
|
127
279
|
edit(agent: AdminAgent): void;
|
|
128
280
|
/** Shows what people said when they rejected the agent's proposals. */
|
|
@@ -136,19 +288,67 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
136
288
|
* or any agent created here, which gets run settings as data.
|
|
137
289
|
*/
|
|
138
290
|
hasRunConfiguration(agent: AdminAgent): boolean;
|
|
291
|
+
/**
|
|
292
|
+
* Whether the agent can be run now: it runs on its own, so it has a run configuration, it is
|
|
293
|
+
* neither stopped nor disabled in code, and the run catalog names what it can run on. An agent
|
|
294
|
+
* that is off still runs for a person. The server decides the rest when the run starts.
|
|
295
|
+
*/
|
|
296
|
+
canRunNow(agent: AdminAgent): boolean;
|
|
297
|
+
/** Opens the run-now dialog of the agent. */
|
|
298
|
+
runNow(agent: AdminAgent): void;
|
|
299
|
+
/** Opens the conversation the run works in, in the assistant panel. */
|
|
300
|
+
openConversation(conversationId: string): void;
|
|
139
301
|
/** Shows the agent's skills, triggers and run settings defined as data. */
|
|
140
|
-
openRunConfiguration(agent: AdminAgent): void;
|
|
302
|
+
openRunConfiguration(agent: AdminAgent, setup?: boolean): void;
|
|
141
303
|
/** Returns to the list, refreshed, and to the run configuration action of the agent. */
|
|
142
304
|
closeRunConfiguration(): void;
|
|
305
|
+
/** Shows the agent's runs with their results. */
|
|
306
|
+
openRuns(agent: AdminAgent): void;
|
|
307
|
+
/**
|
|
308
|
+
* Returns to the run configuration whose flow opened the runs, or to the list and the runs action of
|
|
309
|
+
* the agent whose runs were open.
|
|
310
|
+
*/
|
|
311
|
+
closeRuns(): void;
|
|
143
312
|
/** Returns to the list and to the evaluation action of the agent whose comparison was open. */
|
|
144
313
|
closeEvaluation(): void;
|
|
145
314
|
/** Returns to the list and to the feedback action of the agent whose report was open. */
|
|
146
315
|
closeReport(): void;
|
|
316
|
+
/** A new agent meant to work on its own continues in its run configuration's guided setup. */
|
|
317
|
+
onWorkRequested(agent: AdminAgent): void;
|
|
318
|
+
/** The flow of the agent's run configuration opens the editor; saving or cancelling returns there. */
|
|
319
|
+
editFromRunConfiguration(agent: AdminAgent): void;
|
|
320
|
+
/** The flow of the agent's run configuration opens its runs; going back returns there. */
|
|
321
|
+
runsFromRunConfiguration(agent: AdminAgent): void;
|
|
322
|
+
/** The flow of an agent in code opens the form that replaces its technical account on its card. */
|
|
323
|
+
accountFromRunConfiguration(agent: AdminAgent): void;
|
|
324
|
+
/** The editor saved: back to the run configuration that opened it, or to the list. */
|
|
325
|
+
onEditorSaved(agent: AdminAgent): void;
|
|
326
|
+
/** The editor closed without saving: back to the run configuration that opened it, or to the list. */
|
|
327
|
+
onEditorCancelled(): void;
|
|
328
|
+
/** Opens the run configuration again when its flow opened what closes now; `false` otherwise. */
|
|
329
|
+
private returnToRunConfiguration;
|
|
330
|
+
/** What the agent works on, with its object types named as the run catalog names them. */
|
|
331
|
+
worksOn(agent: AdminAgent): WorksOnSummary & {
|
|
332
|
+
only: 'all' | 'types' | 'application';
|
|
333
|
+
};
|
|
334
|
+
/** The groups the agent is in, named as the run catalog names them; `null` for none. */
|
|
335
|
+
groupNames(agent: AdminAgent): string | null;
|
|
336
|
+
/** The name of an account or person, or the id when the application does not know it. */
|
|
337
|
+
accountName(actorId: string | null | undefined): string;
|
|
338
|
+
/** The account ID as the tooltip of a name shown in its place. */
|
|
339
|
+
accountTitle(actorId: string | null | undefined): string | null;
|
|
147
340
|
onSaved(agent: AdminAgent): void;
|
|
148
341
|
/** The state changes the agent allows: none for an agent that is disabled in code. */
|
|
149
342
|
stateActions(agent: AdminAgent): AgentStateAction[];
|
|
150
343
|
/** The state changes a skill allows. */
|
|
151
344
|
skillActions(skill: AgentSkillState): AgentStateAction[];
|
|
345
|
+
/**
|
|
346
|
+
* The key of a state change's label, explanation or confirmation: making an agent or skill that is
|
|
347
|
+
* off active again switches it on, which replays nothing, unlike a resume.
|
|
348
|
+
*/
|
|
349
|
+
stateKey(part: 'action' | 'explain' | 'confirm', from: string, action: AgentStateAction): string;
|
|
350
|
+
/** The explanation of a state change of one skill. */
|
|
351
|
+
skillStateExplainKey(change: StateChange): string;
|
|
152
352
|
/** Opens the reason form of a state change of the agent or, with a skill, of that skill. */
|
|
153
353
|
askState(agent: AdminAgent, state: AgentStateAction, skill?: AgentSkillState): void;
|
|
154
354
|
/**
|
|
@@ -159,11 +359,26 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
159
359
|
shadowActions(shadow: AgentShadowState | null | undefined): AgentShadowMode[];
|
|
160
360
|
/** Opens the reason form of a shadow mode change of the agent or, with a skill, of that skill. */
|
|
161
361
|
askShadow(agent: AdminAgent, mode: AgentShadowMode, skill?: AgentSkillState): void;
|
|
362
|
+
/**
|
|
363
|
+
* The label of a shadow action. An agent created here has no code: returning to its "code" mode
|
|
364
|
+
* means returning to the mode it was set up with.
|
|
365
|
+
*/
|
|
366
|
+
shadowActionKey(agent: AdminAgent, mode: AgentShadowMode): string;
|
|
367
|
+
/** The explanation of a shadow change of the agent or one of its skills. */
|
|
368
|
+
shadowExplainKey(agent: AdminAgent, mode: AgentShadowMode, skill: boolean): string;
|
|
369
|
+
/** The mode the agent, or one of its skills, was set up with: what returning to it means. */
|
|
370
|
+
ownShadowModeKey(agent: AdminAgent, skillId?: string): string;
|
|
162
371
|
isChangingShadow(agentId: string, mode: AgentShadowMode, skillId?: string): boolean;
|
|
163
372
|
applyShadow(agent: AdminAgent): void;
|
|
164
373
|
/** Opens the form that changes the technical account, or returns to the one in code. */
|
|
165
374
|
askAccount(agent: AdminAgent, mode: 'set' | 'code'): void;
|
|
375
|
+
/** A changed account clears the error of the one before. */
|
|
376
|
+
onAccountChange(actorId: string): void;
|
|
166
377
|
isChangingAccount(agentId: string, mode: 'set' | 'code'): boolean;
|
|
378
|
+
/**
|
|
379
|
+
* Changes the technical account. The form stays open while the server decides, so a missing or
|
|
380
|
+
* refused account shows at the account field, which takes the focus.
|
|
381
|
+
*/
|
|
167
382
|
applyAccount(agent: AdminAgent): void;
|
|
168
383
|
isChangingState(agentId: string, state: AgentStateAction, skillId?: string): boolean;
|
|
169
384
|
applyState(agent: AdminAgent): void;
|
|
@@ -173,6 +388,12 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
173
388
|
reset(agent: AdminAgent): void;
|
|
174
389
|
remove(agent: AdminAgent): void;
|
|
175
390
|
private run;
|
|
391
|
+
/** Looks up the names of the technical accounts and of the people who changed an agent's state. */
|
|
392
|
+
private loadAccountNames;
|
|
393
|
+
/** The run catalog, or why it could not be read; it never errors. */
|
|
394
|
+
private readCatalog;
|
|
395
|
+
private applyCatalog;
|
|
396
|
+
private focusAccount;
|
|
176
397
|
/** Closes the open confirmation and change forms before another opens; one is open at a time. */
|
|
177
398
|
private closeForms;
|
|
178
399
|
private replace;
|
|
@@ -184,45 +405,134 @@ declare class NhAssistantAdminAgentsComponent {
|
|
|
184
405
|
/** Agent changes affect the agent picker of the panel. */
|
|
185
406
|
private refreshChat;
|
|
186
407
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminAgentsComponent, never>;
|
|
187
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminAgentsComponent, "nh-assistant-admin-agents", never, {}, {}, never, never, true, never>;
|
|
408
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminAgentsComponent, "nh-assistant-admin-agents", never, {}, { "openMcpServers": "openMcpServers"; }, never, never, true, never>;
|
|
188
409
|
}
|
|
189
410
|
|
|
190
411
|
/** True when a tool id matches a selector glob (`*` matches any characters). */
|
|
191
412
|
declare function nhAssistantSelectorMatches(toolId: string, selector: string): boolean;
|
|
413
|
+
/** How an agent created in the administration is used: chosen in the chat, working on its own, or both. */
|
|
414
|
+
type AgentUse = 'chat' | 'background' | 'both';
|
|
415
|
+
/** Whether an agent created in the administration works on every object type or on chosen ones. */
|
|
416
|
+
type WorksOnScope = 'all' | 'types';
|
|
192
417
|
/**
|
|
193
|
-
* Creates or edits one agent:
|
|
194
|
-
*
|
|
418
|
+
* Creates or edits one agent: how it is used (offered in the chat, working on its own, or both),
|
|
419
|
+
* what it works on (all objects or chosen object types, the whole application, per division when
|
|
420
|
+
* the application lists divisions, and who may run it and see its results for the whole
|
|
421
|
+
* application), texts, autonomy, policy, tool selectors chosen from the tool catalog or typed as
|
|
422
|
+
* patterns, and assigned MCP servers. A new agent meant to work on its own continues with
|
|
423
|
+
* `workRequested`. An agent in code names and describes itself with translation keys: the editor
|
|
424
|
+
* shows their translation and sends the key back unless the administrator changed the text, so the
|
|
425
|
+
* agent stays translated; what it works on comes from its code and is not edited here.
|
|
195
426
|
*/
|
|
196
427
|
declare class NhAssistantAdminAgentEditorComponent {
|
|
197
428
|
private readonly admin;
|
|
429
|
+
private readonly translate;
|
|
198
430
|
private subscription?;
|
|
431
|
+
private keyedName;
|
|
432
|
+
private keyedDescription;
|
|
199
433
|
/** The agent to edit, or null for a new agent. */
|
|
200
434
|
readonly agent: _angular_core.InputSignal<AdminAgent | null>;
|
|
201
435
|
readonly tools: _angular_core.InputSignal<readonly ToolCatalogEntry[]>;
|
|
202
436
|
readonly servers: _angular_core.InputSignal<readonly McpServer[]>;
|
|
437
|
+
/** The run catalog: the object types by name, the policies to choose and whether divisions are listed. */
|
|
438
|
+
readonly catalog: _angular_core.InputSignal<RunCatalog | null>;
|
|
439
|
+
/**
|
|
440
|
+
* The run catalog could not be read: the editor then leaves out what the agent works on and its
|
|
441
|
+
* groups, which depend on it, and a save keeps them as they are.
|
|
442
|
+
*/
|
|
443
|
+
readonly catalogUnavailable: _angular_core.InputSignal<boolean>;
|
|
203
444
|
readonly saved: _angular_core.OutputEmitterRef<AdminAgent>;
|
|
445
|
+
/**
|
|
446
|
+
* A new agent meant to work on its own was created; the host continues with its run
|
|
447
|
+
* configuration's guided setup. `saved` is not emitted for it.
|
|
448
|
+
*/
|
|
449
|
+
readonly workRequested: _angular_core.OutputEmitterRef<AdminAgent>;
|
|
204
450
|
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
451
|
+
readonly uses: readonly AgentUse[];
|
|
205
452
|
readonly id: string;
|
|
206
453
|
readonly max = 20000;
|
|
207
454
|
readonly autonomyLevels: readonly AssistantAutonomy[];
|
|
455
|
+
readonly classifications: readonly AssistantDataClassification[];
|
|
208
456
|
readonly agentId: _angular_core.WritableSignal<string>;
|
|
209
457
|
readonly displayName: _angular_core.WritableSignal<string>;
|
|
210
458
|
readonly description: _angular_core.WritableSignal<string>;
|
|
211
459
|
readonly instructions: _angular_core.WritableSignal<string>;
|
|
212
460
|
readonly autonomy: _angular_core.WritableSignal<AssistantAutonomy>;
|
|
461
|
+
/** How the agent is used: in the chat, on its own, or both. */
|
|
462
|
+
readonly use: _angular_core.WritableSignal<AgentUse>;
|
|
463
|
+
/** A new agent takes its triggers at once; without it, it starts off until someone switches it on. */
|
|
464
|
+
readonly switchOnNow: _angular_core.WritableSignal<boolean>;
|
|
465
|
+
/** The model profile of an agent created here; empty uses the application's chat profile. */
|
|
466
|
+
readonly profile: _angular_core.WritableSignal<string>;
|
|
467
|
+
/** The classification of the model calls of an agent created here; `internal` when it has none. */
|
|
468
|
+
readonly dataClassification: _angular_core.WritableSignal<AssistantDataClassification>;
|
|
213
469
|
readonly requiredPolicy: _angular_core.WritableSignal<string>;
|
|
214
470
|
readonly toolSelectors: _angular_core.WritableSignal<string[]>;
|
|
215
471
|
readonly mcpServerIds: _angular_core.WritableSignal<string[]>;
|
|
472
|
+
/** What the agent works on: all objects or the chosen object types. */
|
|
473
|
+
readonly worksOnScope: _angular_core.WritableSignal<WorksOnScope>;
|
|
474
|
+
readonly worksOnTypes: _angular_core.WritableSignal<string[]>;
|
|
475
|
+
readonly worksOnApplication: _angular_core.WritableSignal<boolean>;
|
|
476
|
+
readonly perDivision: _angular_core.WritableSignal<boolean>;
|
|
477
|
+
readonly runPolicy: _angular_core.WritableSignal<string>;
|
|
478
|
+
readonly viewPolicy: _angular_core.WritableSignal<string>;
|
|
479
|
+
/** The groups of agents the agent is in, by id. */
|
|
480
|
+
readonly groups: _angular_core.WritableSignal<string[]>;
|
|
216
481
|
readonly newSelector: _angular_core.WritableSignal<string>;
|
|
217
482
|
readonly catalogFilter: _angular_core.WritableSignal<string>;
|
|
218
483
|
readonly submitted: _angular_core.WritableSignal<boolean>;
|
|
219
484
|
readonly saving: _angular_core.WritableSignal<boolean>;
|
|
220
485
|
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
486
|
+
/**
|
|
487
|
+
* A new agent that was created while its groups could not be saved yet: the next save completes it
|
|
488
|
+
* as an existing agent.
|
|
489
|
+
*/
|
|
490
|
+
private readonly created;
|
|
491
|
+
/** The agent the next save updates; `null` while a new agent is not created yet. */
|
|
492
|
+
private readonly editing;
|
|
221
493
|
readonly isNew: _angular_core.Signal<boolean>;
|
|
494
|
+
/** Only agents created here choose whether they are offered in the chat; code decides for the others. */
|
|
495
|
+
readonly choosesUse: _angular_core.Signal<boolean>;
|
|
222
496
|
readonly idInvalid: _angular_core.Signal<boolean>;
|
|
223
497
|
readonly nameMissing: _angular_core.Signal<boolean>;
|
|
224
498
|
readonly tooLong: _angular_core.Signal<boolean>;
|
|
225
499
|
readonly selectorInvalid: _angular_core.Signal<boolean>;
|
|
500
|
+
/**
|
|
501
|
+
* The application's own object types, by name; the platform's types, such as the whole
|
|
502
|
+
* application, are chosen otherwise. A stored type the application no longer registers stays
|
|
503
|
+
* listed by its id, so it can be unticked.
|
|
504
|
+
*/
|
|
505
|
+
readonly subjectTypes: _angular_core.Signal<{
|
|
506
|
+
id: string;
|
|
507
|
+
name: string;
|
|
508
|
+
pluralName: string | null;
|
|
509
|
+
}[]>;
|
|
510
|
+
readonly agentPolicies: _angular_core.Signal<_newheap_platform_ai_chat.RunBlock[]>;
|
|
511
|
+
/** The groups of agents the application registers, which boards show. */
|
|
512
|
+
readonly agentGroups: _angular_core.Signal<_newheap_platform_ai_chat.AgentGroup[]>;
|
|
513
|
+
/** The groups the agent joins in code. */
|
|
514
|
+
readonly codeGroups: _angular_core.Signal<string[]>;
|
|
515
|
+
/** A shadow variant works for administrators only and joins no group. */
|
|
516
|
+
readonly isVariant: _angular_core.Signal<boolean>;
|
|
517
|
+
/** The server's refusal of the groups, as a translation key. */
|
|
518
|
+
readonly groupsError: _angular_core.Signal<string | null>;
|
|
519
|
+
/** Per division is offered only when the application lists its divisions. */
|
|
520
|
+
readonly divisionsListed: _angular_core.Signal<boolean>;
|
|
521
|
+
/** The object types the agent is known to work on, by name, as a hint next to "All objects". */
|
|
522
|
+
readonly knownTypes: _angular_core.Signal<string[]>;
|
|
523
|
+
/** What the agent works on is edited here: an agent created here, while the run catalog is known. */
|
|
524
|
+
readonly editsWorksOn: _angular_core.Signal<boolean>;
|
|
525
|
+
/** An agent created here chooses its profile from those the run catalog offers. */
|
|
526
|
+
readonly choosesProfile: _angular_core.Signal<boolean>;
|
|
527
|
+
/** The profiles the run catalog offers, and the agent's own when the catalog no longer lists it. */
|
|
528
|
+
readonly profileChoices: _angular_core.Signal<string[]>;
|
|
529
|
+
/** Chosen object types without a type, and not the application either: the agent would work on nothing. */
|
|
530
|
+
readonly worksOnMissing: _angular_core.Signal<boolean>;
|
|
531
|
+
readonly tooManyTypes: _angular_core.Signal<boolean>;
|
|
532
|
+
readonly policyKeys: typeof policyKeys;
|
|
533
|
+
readonly warningKeys: typeof warningKeys;
|
|
534
|
+
/** The warnings of the agent as it was saved, until this editor saves it again. */
|
|
535
|
+
readonly warnings: _angular_core.Signal<_newheap_platform_ai_chat.AssistantConfigurationWarning[]>;
|
|
226
536
|
readonly valid: _angular_core.Signal<boolean>;
|
|
227
537
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
228
538
|
readonly filteredTools: _angular_core.Signal<ToolCatalogEntry[]>;
|
|
@@ -234,13 +544,21 @@ declare class NhAssistantAdminAgentEditorComponent {
|
|
|
234
544
|
addSelector(): void;
|
|
235
545
|
onSelectorKeydown(event: KeyboardEvent): void;
|
|
236
546
|
removeSelector(selector: string): void;
|
|
547
|
+
toggleWorksOnType(typeId: string, checked: boolean): void;
|
|
548
|
+
toggleGroup(groupId: string, checked: boolean): void;
|
|
237
549
|
toggleServer(serverId: string, checked: boolean): void;
|
|
238
550
|
value(event: Event): string;
|
|
239
551
|
checked(event: Event): boolean;
|
|
552
|
+
/** The first error the server reported for a field, as a translation key. */
|
|
553
|
+
fieldError(field: string): string | null;
|
|
240
554
|
save(): void;
|
|
555
|
+
/** What the agent works on, as the six fields the server reads together. */
|
|
556
|
+
private worksOnInput;
|
|
241
557
|
private reset;
|
|
558
|
+
/** The translation of a key of an agent in code, or `null` when the text is not a key with a translation. */
|
|
559
|
+
private keyed;
|
|
242
560
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminAgentEditorComponent, never>;
|
|
243
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminAgentEditorComponent, "nh-assistant-admin-agent-editor", never, { "agent": { "alias": "agent"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "servers": { "alias": "servers"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
561
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminAgentEditorComponent, "nh-assistant-admin-agent-editor", never, { "agent": { "alias": "agent"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "servers": { "alias": "servers"; "required": false; "isSignal": true; }; "catalog": { "alias": "catalog"; "required": false; "isSignal": true; }; "catalogUnavailable": { "alias": "catalogUnavailable"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "workRequested": "workRequested"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
244
562
|
}
|
|
245
563
|
|
|
246
564
|
/** Periods the evaluation offers, in days before now; the server allows at most 92. */
|
|
@@ -389,7 +707,123 @@ declare class NhAssistantAgentFeedbackReportComponent {
|
|
|
389
707
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentFeedbackReportComponent, "nh-assistant-agent-feedback-report", never, { "agentId": { "alias": "agentId"; "required": true; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
390
708
|
}
|
|
391
709
|
|
|
392
|
-
|
|
710
|
+
/** A filter value as the form holds it: the empty string means "any". */
|
|
711
|
+
interface RunHistoryForm {
|
|
712
|
+
subjectType: string;
|
|
713
|
+
subjectId: string;
|
|
714
|
+
status: AgentRunStatus | '';
|
|
715
|
+
from: string;
|
|
716
|
+
to: string;
|
|
717
|
+
}
|
|
718
|
+
/**
|
|
719
|
+
* The runs view of one agent for administrators (`GET admin/agents/{id}/runs`): every run of the
|
|
720
|
+
* agent, shadow runs marked, newest first, filtered by the kind of object, one object, the whole
|
|
721
|
+
* application, the status and the period. Per run its time, trigger, object, the beginning of its
|
|
722
|
+
* result, its proposals, usage and duration; "Show the result" opens the run's whole result, its
|
|
723
|
+
* proposals and its files in `nh-assistant-run-result`. The administration's agent cards open it with
|
|
724
|
+
* "Runs". A filter the server refuses (`assistant-run-filter-invalid`) shows each refused part at its
|
|
725
|
+
* field, and a run's failure reads as its translated code.
|
|
726
|
+
*/
|
|
727
|
+
declare class NhAssistantAgentRunHistoryComponent {
|
|
728
|
+
private readonly admin;
|
|
729
|
+
private readonly injector;
|
|
730
|
+
private readonly host;
|
|
731
|
+
private subscription?;
|
|
732
|
+
/** The agent whose runs are shown. */
|
|
733
|
+
readonly agentId: _angular_core.InputSignal<string>;
|
|
734
|
+
/** The kinds of objects of the application, from the run catalog, to filter by. */
|
|
735
|
+
readonly subjectTypes: _angular_core.InputSignal<readonly AgentSubjectType[]>;
|
|
736
|
+
/** Emits the conversation of a run, so the host can open it in the assistant panel. */
|
|
737
|
+
readonly openConversation: _angular_core.OutputEmitterRef<string>;
|
|
738
|
+
readonly id: string;
|
|
739
|
+
readonly statuses: readonly AgentRunStatus[];
|
|
740
|
+
readonly systemType = "nh-system";
|
|
741
|
+
/** The kinds of objects, the whole application left out: it has an option of its own. */
|
|
742
|
+
readonly objectTypes: _angular_core.Signal<AgentSubjectType[]>;
|
|
743
|
+
readonly form: _angular_core.WritableSignal<RunHistoryForm>;
|
|
744
|
+
/** The period ends before it starts. */
|
|
745
|
+
readonly periodInvalid: _angular_core.WritableSignal<boolean>;
|
|
746
|
+
/** One object can be chosen once a kind of object is. */
|
|
747
|
+
readonly objectChoosable: _angular_core.Signal<boolean>;
|
|
748
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
749
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
750
|
+
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
751
|
+
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
752
|
+
/** The refused filter fields the form shows, with the server's first value per field. */
|
|
753
|
+
readonly fieldErrors: _angular_core.Signal<Partial<Record<string, string>>>;
|
|
754
|
+
readonly codeKeys: typeof _nhAssistantCodeKeys;
|
|
755
|
+
readonly items: _angular_core.WritableSignal<AgentRunHistoryItem[]>;
|
|
756
|
+
readonly total: _angular_core.WritableSignal<number>;
|
|
757
|
+
readonly page: _angular_core.WritableSignal<number>;
|
|
758
|
+
readonly hasMore: _angular_core.Signal<boolean>;
|
|
759
|
+
/** The run whose whole result is shown instead of the list. */
|
|
760
|
+
readonly opened: _angular_core.WritableSignal<AgentRunHistoryItem | null>;
|
|
761
|
+
private applied;
|
|
762
|
+
constructor();
|
|
763
|
+
/** The text of the server's error of a filter field; a refused end of the period reads as such. */
|
|
764
|
+
fieldErrorKeys(field: string): string[];
|
|
765
|
+
/** The ids a filter field describes itself with: its hint and its error while there is one. */
|
|
766
|
+
describedBy(hintId: string | null, field: string): string | null;
|
|
767
|
+
update(field: keyof RunHistoryForm, event: Event): void;
|
|
768
|
+
/** Reads the runs that match the form, from the first page. */
|
|
769
|
+
apply(): void;
|
|
770
|
+
/** Clears the filters and reads every run again. */
|
|
771
|
+
clear(): void;
|
|
772
|
+
/** Narrows the view to the runs on the object of one run. */
|
|
773
|
+
onlyObject(run: AgentRunHistoryItem): void;
|
|
774
|
+
loadMore(): void;
|
|
775
|
+
open(run: AgentRunHistoryItem): void;
|
|
776
|
+
/** Returns to the list and to the result action of the run that was open. */
|
|
777
|
+
close(): void;
|
|
778
|
+
/** How long the run took, as a text key and its number; `null` while it runs. */
|
|
779
|
+
durationOf(run: AgentRunHistoryItem): {
|
|
780
|
+
key: string;
|
|
781
|
+
value: number;
|
|
782
|
+
} | null;
|
|
783
|
+
/** Moves the focus to the first filter field the server refused. */
|
|
784
|
+
private focusRefusedField;
|
|
785
|
+
private fetch;
|
|
786
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentRunHistoryComponent, never>;
|
|
787
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentRunHistoryComponent, "nh-assistant-agent-run-history", never, { "agentId": { "alias": "agentId"; "required": true; "isSignal": true; }; "subjectTypes": { "alias": "subjectTypes"; "required": false; "isSignal": true; }; }, { "openConversation": "openConversation"; }, never, never, true, never>;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* What an entry point of the flow opens: the run configuration opens its own forms; the agent editor,
|
|
792
|
+
* the technical account, the runs view and the MCP servers belong to the page that hosts it.
|
|
793
|
+
*/
|
|
794
|
+
type AgentFlowEntry = {
|
|
795
|
+
kind: 'setup';
|
|
796
|
+
} | {
|
|
797
|
+
kind: 'settings';
|
|
798
|
+
} | {
|
|
799
|
+
kind: 'add-skill';
|
|
800
|
+
} | {
|
|
801
|
+
kind: 'edit-skill';
|
|
802
|
+
skillId: string;
|
|
803
|
+
} | {
|
|
804
|
+
kind: 'add-trigger';
|
|
805
|
+
} | {
|
|
806
|
+
kind: 'edit-trigger';
|
|
807
|
+
triggerId: string;
|
|
808
|
+
} | {
|
|
809
|
+
kind: 'edit-agent';
|
|
810
|
+
} | {
|
|
811
|
+
kind: 'account';
|
|
812
|
+
} | {
|
|
813
|
+
kind: 'runs';
|
|
814
|
+
} | {
|
|
815
|
+
kind: 'mcp-servers';
|
|
816
|
+
};
|
|
817
|
+
|
|
818
|
+
/** What a saved skill form tells its host. */
|
|
819
|
+
interface SkillFormSaved {
|
|
820
|
+
skill: DataSkill;
|
|
821
|
+
/** The change runs as the skill's candidate in shadow. */
|
|
822
|
+
candidate: boolean;
|
|
823
|
+
added: boolean;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
type Form = 'setup' | 'settings' | 'skill' | 'trigger';
|
|
393
827
|
/** A removal, promotion or discard that waits for its confirmation. */
|
|
394
828
|
interface Confirmation {
|
|
395
829
|
action: 'remove-settings' | 'remove-skill' | 'remove-trigger' | 'promote' | 'discard';
|
|
@@ -398,29 +832,53 @@ interface Confirmation {
|
|
|
398
832
|
/**
|
|
399
833
|
* The run configuration of one agent as data: the run settings of an agent created in the
|
|
400
834
|
* administration, its skills and triggers in code (read only) and as data, and the data that no
|
|
401
|
-
* longer fits the code.
|
|
402
|
-
*
|
|
403
|
-
* the
|
|
404
|
-
*
|
|
835
|
+
* longer fits the code. It opens with the agent's flow: what it works on, when it runs, how it works,
|
|
836
|
+
* whom it answers to, who approves and its results, each step with its problems and an entry point
|
|
837
|
+
* to the form below that changes it; the agent editor (`editAgent`), the technical account of an
|
|
838
|
+
* agent in code (`changeAccount`), the runs view (`openRuns`) and the MCP servers (`openMcpServers`)
|
|
839
|
+
* belong to the page that hosts it. An agent created here that only chats gets a guided setup that
|
|
840
|
+
* lets it work on its own. Administrators add and change data skills, live at once or as a candidate in shadow that
|
|
841
|
+
* they compare with the live version and promote or discard; they add data triggers on the
|
|
842
|
+
* application's events or on a schedule and put them live; a schedule without a subject set runs for
|
|
843
|
+
* the whole application, or for every division of an agent that works per division. New skills and
|
|
844
|
+
* triggers start in shadow; `changed` tells the agents page to reload the agent's skill states.
|
|
405
845
|
*/
|
|
406
846
|
declare class NhAssistantAgentRunConfigurationComponent implements OnInit {
|
|
407
847
|
private readonly admin;
|
|
848
|
+
private readonly translate;
|
|
408
849
|
private readonly injector;
|
|
409
850
|
private readonly host;
|
|
410
851
|
private loadSubscription?;
|
|
411
852
|
private actionSubscription?;
|
|
412
853
|
private detailSubscription?;
|
|
854
|
+
/** The flow's entry point that opened the form, which takes the focus back when the form closes. */
|
|
855
|
+
private returnFocus;
|
|
413
856
|
readonly agent: _angular_core.InputSignal<AdminAgent>;
|
|
857
|
+
/** Opens the guided setup at once, for an agent that was just created to work on its own. */
|
|
858
|
+
readonly startSetup: _angular_core.InputSignal<boolean>;
|
|
859
|
+
/** The tool catalog, to show what the agent's tool selectors offer in the skill forms and the flow. */
|
|
860
|
+
readonly tools: _angular_core.InputSignal<readonly ToolCatalogEntry[]>;
|
|
861
|
+
/**
|
|
862
|
+
* The MCP servers, so the flow shows whether the agent's servers are used in runs without a person;
|
|
863
|
+
* `null` while unknown.
|
|
864
|
+
*/
|
|
865
|
+
readonly servers: _angular_core.InputSignal<readonly McpServer[] | null>;
|
|
414
866
|
/** A change of the run configuration changed the agent's skills or state. */
|
|
415
867
|
readonly changed: _angular_core.OutputEmitterRef<void>;
|
|
868
|
+
/** The flow asks to open the agent editor: what it works on, its tools, MCP servers and groups. */
|
|
869
|
+
readonly editAgent: _angular_core.OutputEmitterRef<void>;
|
|
870
|
+
/** The flow asks to change the technical account of an agent in code. */
|
|
871
|
+
readonly changeAccount: _angular_core.OutputEmitterRef<void>;
|
|
872
|
+
/** The flow asks to open the agent's runs. */
|
|
873
|
+
readonly openRuns: _angular_core.OutputEmitterRef<void>;
|
|
874
|
+
/** The flow asks to open the MCP servers, whose background use decides what runs without a person use. */
|
|
875
|
+
readonly openMcpServers: _angular_core.OutputEmitterRef<void>;
|
|
416
876
|
readonly id: string;
|
|
417
|
-
readonly maxReason
|
|
418
|
-
readonly
|
|
419
|
-
readonly
|
|
420
|
-
readonly
|
|
421
|
-
readonly
|
|
422
|
-
readonly elevatedReadModes: AgentElevatedReads[];
|
|
423
|
-
readonly conflicts: TriggerConflict[];
|
|
877
|
+
readonly maxReason: 500;
|
|
878
|
+
readonly skillNameKeys: typeof skillNameKeys;
|
|
879
|
+
readonly warningKeys: typeof warningKeys;
|
|
880
|
+
readonly skillDescriptionKeys: typeof skillDescriptionKeys;
|
|
881
|
+
readonly readableId: typeof readableId;
|
|
424
882
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
425
883
|
readonly loadFailed: _angular_core.WritableSignal<boolean>;
|
|
426
884
|
readonly busy: _angular_core.WritableSignal<boolean>;
|
|
@@ -429,9 +887,25 @@ declare class NhAssistantAgentRunConfigurationComponent implements OnInit {
|
|
|
429
887
|
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
430
888
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
431
889
|
readonly saved: _angular_core.WritableSignal<string | null>;
|
|
890
|
+
/** The warnings of the skill that was just saved, shown with the saved message. */
|
|
891
|
+
readonly savedWarnings: _angular_core.WritableSignal<readonly string[]>;
|
|
432
892
|
readonly form: _angular_core.WritableSignal<Form | null>;
|
|
433
893
|
readonly confirming: _angular_core.WritableSignal<Confirmation | null>;
|
|
434
894
|
readonly reason: _angular_core.WritableSignal<string>;
|
|
895
|
+
/** The item whose action failed, so its error shows next to it: `settings`, `skill:{id}` or `trigger:{id}`. */
|
|
896
|
+
readonly actionTarget: _angular_core.WritableSignal<string | null>;
|
|
897
|
+
/**
|
|
898
|
+
* The names of the account the agent answers to and of the people who changed skills, once known,
|
|
899
|
+
* and why they are not.
|
|
900
|
+
*/
|
|
901
|
+
readonly accountNames: NhAssistantAccountNames;
|
|
902
|
+
/**
|
|
903
|
+
* The name of the account the agent answers to, once known: the technical account of its run
|
|
904
|
+
* settings, or of an agent in code.
|
|
905
|
+
*/
|
|
906
|
+
readonly accountName: _angular_core.Signal<string | null>;
|
|
907
|
+
/** The agent's name; an agent in code names itself with a translation key. */
|
|
908
|
+
readonly agentName: _angular_core.Signal<string>;
|
|
435
909
|
/** The skill being changed; `null` with the skill form open adds a new skill. */
|
|
436
910
|
readonly editingSkill: _angular_core.WritableSignal<DataSkill | null>;
|
|
437
911
|
/** The trigger being changed; `null` with the trigger form open adds a new trigger. */
|
|
@@ -446,61 +920,24 @@ declare class NhAssistantAgentRunConfigurationComponent implements OnInit {
|
|
|
446
920
|
items: DataSkillVersion[] | null;
|
|
447
921
|
failed: boolean;
|
|
448
922
|
} | null>;
|
|
449
|
-
readonly
|
|
450
|
-
readonly serviceAccount: _angular_core.WritableSignal<string>;
|
|
451
|
-
readonly approvalPolicy: _angular_core.WritableSignal<string>;
|
|
452
|
-
readonly ruleHandler: _angular_core.WritableSignal<string>;
|
|
453
|
-
readonly triageProfile: _angular_core.WritableSignal<string>;
|
|
454
|
-
readonly retryCount: _angular_core.WritableSignal<string>;
|
|
455
|
-
readonly maxConcurrentRuns: _angular_core.WritableSignal<string>;
|
|
456
|
-
readonly maxRunsPerSubjectPerDay: _angular_core.WritableSignal<string>;
|
|
457
|
-
readonly maxTokensPerRun: _angular_core.WritableSignal<string>;
|
|
458
|
-
readonly dailyToolCalls: _angular_core.WritableSignal<string>;
|
|
459
|
-
readonly dailyTokens: _angular_core.WritableSignal<string>;
|
|
460
|
-
readonly allowGatewayReads: _angular_core.WritableSignal<boolean>;
|
|
461
|
-
readonly delegateFromInitiator: _angular_core.WritableSignal<boolean>;
|
|
462
|
-
readonly elevatedReads: _angular_core.WritableSignal<AgentElevatedReads>;
|
|
463
|
-
readonly skillId: _angular_core.WritableSignal<string>;
|
|
464
|
-
readonly skillDescription: _angular_core.WritableSignal<string>;
|
|
465
|
-
readonly skillInstructions: _angular_core.WritableSignal<string>;
|
|
466
|
-
readonly skillTools: _angular_core.WritableSignal<string[]>;
|
|
467
|
-
readonly skillProfile: _angular_core.WritableSignal<string>;
|
|
468
|
-
readonly skillRuleHandler: _angular_core.WritableSignal<string>;
|
|
469
|
-
readonly skillApprovalPolicy: _angular_core.WritableSignal<string>;
|
|
470
|
-
readonly skillMaxTokens: _angular_core.WritableSignal<string>;
|
|
471
|
-
readonly skillDailyToolCalls: _angular_core.WritableSignal<string>;
|
|
472
|
-
readonly skillDailyTokens: _angular_core.WritableSignal<string>;
|
|
473
|
-
readonly skillApply: _angular_core.WritableSignal<SkillApplyMode>;
|
|
474
|
-
readonly triggerId: _angular_core.WritableSignal<string>;
|
|
475
|
-
readonly triggerSource: _angular_core.WritableSignal<"event" | "schedule">;
|
|
476
|
-
readonly triggerEvent: _angular_core.WritableSignal<string>;
|
|
477
|
-
readonly triggerCron: _angular_core.WritableSignal<string>;
|
|
478
|
-
readonly triggerTimeZone: _angular_core.WritableSignal<string>;
|
|
479
|
-
readonly triggerSubjectSet: _angular_core.WritableSignal<string>;
|
|
480
|
-
readonly triggerMessage: _angular_core.WritableSignal<string>;
|
|
481
|
-
readonly triggerSkill: _angular_core.WritableSignal<string>;
|
|
482
|
-
readonly triggerConflict: _angular_core.WritableSignal<TriggerConflict>;
|
|
483
|
-
readonly triggerDebounce: _angular_core.WritableSignal<string>;
|
|
923
|
+
private readonly language;
|
|
484
924
|
readonly isAdminAgent: _angular_core.Signal<boolean>;
|
|
485
925
|
/** An agent created in the administration gets skills and triggers once it has run settings. */
|
|
486
926
|
readonly canAddRunData: _angular_core.Signal<boolean>;
|
|
487
|
-
readonly skillOptions: _angular_core.Signal<
|
|
927
|
+
readonly skillOptions: _angular_core.Signal<_NhAssistantPickerOption[]>;
|
|
928
|
+
readonly skillIds: _angular_core.Signal<string[]>;
|
|
929
|
+
readonly triggerIds: _angular_core.Signal<string[]>;
|
|
488
930
|
readonly problems: _angular_core.Signal<_newheap_platform_ai_chat.RunConfigurationProblem[]>;
|
|
489
|
-
|
|
490
|
-
readonly
|
|
491
|
-
readonly descriptionInvalid: _angular_core.Signal<boolean>;
|
|
931
|
+
/** What the run settings' approval policy means, in a sentence. */
|
|
932
|
+
readonly settingsPolicy: _angular_core.Signal<string | null>;
|
|
492
933
|
constructor();
|
|
493
934
|
ngOnInit(): void;
|
|
494
|
-
load(): void;
|
|
495
|
-
|
|
496
|
-
fieldError(field: string): string | null;
|
|
935
|
+
load(openSetup?: boolean): void;
|
|
936
|
+
openSetup(): void;
|
|
497
937
|
editSettings(): void;
|
|
498
|
-
saveSettings(): void;
|
|
499
938
|
removeSettings(): void;
|
|
500
939
|
addSkill(): void;
|
|
501
940
|
editSkill(skill: DataSkill): void;
|
|
502
|
-
toggleTool(selector: string, selected: boolean): void;
|
|
503
|
-
saveSkill(): void;
|
|
504
941
|
removeSkill(skill: DataSkill): void;
|
|
505
942
|
promote(skill: DataSkill): void;
|
|
506
943
|
discard(skill: DataSkill): void;
|
|
@@ -510,24 +947,41 @@ declare class NhAssistantAgentRunConfigurationComponent implements OnInit {
|
|
|
510
947
|
toggleVersions(skill: DataSkill): void;
|
|
511
948
|
addTrigger(): void;
|
|
512
949
|
editTrigger(trigger: DataTrigger): void;
|
|
513
|
-
/** A schedule skips a tick while a run is busy by default; an event coalesces. */
|
|
514
|
-
setTriggerSource(source: 'event' | 'schedule'): void;
|
|
515
|
-
saveTrigger(): void;
|
|
516
950
|
setTriggerShadow(trigger: DataTrigger, shadow: boolean): void;
|
|
517
951
|
removeTrigger(trigger: DataTrigger): void;
|
|
952
|
+
/** A form saved: show what happened and reload, which every change may affect. */
|
|
953
|
+
onSetupCompleted(live: boolean): void;
|
|
954
|
+
onSettingsSaved(): void;
|
|
955
|
+
onSkillSaved(result: SkillFormSaved): void;
|
|
956
|
+
onTriggerSaved(added: boolean): void;
|
|
518
957
|
confirm(action: Confirmation['action'], id: string): void;
|
|
519
958
|
isConfirming(action: Confirmation['action'], id: string): boolean;
|
|
959
|
+
/**
|
|
960
|
+
* An entry point of the flow: the forms of the run configuration open below with the focus in them;
|
|
961
|
+
* the editor, the account, the runs and the MCP servers belong to the host.
|
|
962
|
+
*/
|
|
963
|
+
onFlowEntry(entry: AgentFlowEntry): void;
|
|
520
964
|
cancel(): void;
|
|
521
965
|
value(event: Event): string;
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
966
|
+
/** A skill's name: the application's translation, or a readable form of its id. */
|
|
967
|
+
skillName(skillId: string | null | undefined): string;
|
|
968
|
+
/** A person's name, or the id when the application does not know it. */
|
|
969
|
+
nameOf(actorId: string | null | undefined): string;
|
|
970
|
+
/** The account ID as the tooltip of a name shown in its place. */
|
|
971
|
+
accountTitle(actorId: string | null | undefined): string | null;
|
|
972
|
+
/** The first of the keys with a translation, or the fallback. */
|
|
973
|
+
private translated;
|
|
974
|
+
/** Opens a form for the flow and remembers the entry point that opened it. */
|
|
975
|
+
private openFromFlow;
|
|
976
|
+
private finish;
|
|
525
977
|
/** Opens one form at a time and moves the focus into it. */
|
|
526
978
|
private open;
|
|
979
|
+
/** Whether the last failed action concerned this item, so its error shows there. */
|
|
980
|
+
failed(target: string): boolean;
|
|
527
981
|
/** Runs a change and reloads the configuration, which every change may affect. */
|
|
528
982
|
private run;
|
|
529
983
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentRunConfigurationComponent, never>;
|
|
530
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentRunConfigurationComponent, "nh-assistant-agent-run-configuration", never, { "agent": { "alias": "agent"; "required": true; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
984
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentRunConfigurationComponent, "nh-assistant-agent-run-configuration", never, { "agent": { "alias": "agent"; "required": true; "isSignal": true; }; "startSetup": { "alias": "startSetup"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "servers": { "alias": "servers"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "editAgent": "editAgent"; "changeAccount": "changeAccount"; "openRuns": "openRuns"; "openMcpServers": "openMcpServers"; }, never, never, true, never>;
|
|
531
985
|
}
|
|
532
986
|
|
|
533
987
|
/** Result of the latest connection test per server. */
|
|
@@ -536,11 +990,14 @@ interface TestState {
|
|
|
536
990
|
result: McpServerTestResult | null;
|
|
537
991
|
}
|
|
538
992
|
/**
|
|
539
|
-
* MCP server administration: list, connection test, tool sync, the
|
|
540
|
-
* tool table of one server.
|
|
993
|
+
* MCP server administration: list, connection test, tool sync, the organization's OAuth connection,
|
|
994
|
+
* the server editor and the tool table of one server. The personal connections are counted and
|
|
995
|
+
* revoked only for servers each person connects to with OAuth; a count that could not be read shows
|
|
996
|
+
* its translated code at the server.
|
|
541
997
|
*/
|
|
542
998
|
declare class NhAssistantAdminMcpServersComponent {
|
|
543
999
|
private readonly admin;
|
|
1000
|
+
private readonly connector;
|
|
544
1001
|
private subscription?;
|
|
545
1002
|
private readonly actions;
|
|
546
1003
|
readonly id: string;
|
|
@@ -552,6 +1009,19 @@ declare class NhAssistantAdminMcpServersComponent {
|
|
|
552
1009
|
readonly toolsOf: _angular_core.WritableSignal<McpServer | null>;
|
|
553
1010
|
readonly tests: _angular_core.WritableSignal<Record<string, TestState>>;
|
|
554
1011
|
readonly confirmingDelete: _angular_core.WritableSignal<string | null>;
|
|
1012
|
+
/** The server whose organization connection is being authorized. */
|
|
1013
|
+
readonly connecting: _angular_core.WritableSignal<string | null>;
|
|
1014
|
+
readonly confirmingDisconnect: _angular_core.WritableSignal<string | null>;
|
|
1015
|
+
readonly confirmingRevokeAll: _angular_core.WritableSignal<string | null>;
|
|
1016
|
+
/** The personal connections per status of each server people connect to themselves. */
|
|
1017
|
+
readonly summaries: _angular_core.WritableSignal<Record<string, McpConnectionsSummary>>;
|
|
1018
|
+
/** Why the personal connections of a server could not be counted, per server. */
|
|
1019
|
+
readonly summaryErrors: _angular_core.WritableSignal<Record<string, NhAssistantError>>;
|
|
1020
|
+
/** The latest connection result to announce, per server. */
|
|
1021
|
+
readonly notice: _angular_core.WritableSignal<{
|
|
1022
|
+
serverId: string;
|
|
1023
|
+
key: string;
|
|
1024
|
+
} | null>;
|
|
555
1025
|
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
556
1026
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
557
1027
|
constructor();
|
|
@@ -564,6 +1034,27 @@ declare class NhAssistantAdminMcpServersComponent {
|
|
|
564
1034
|
test(server: McpServer): void;
|
|
565
1035
|
testState(serverId: string): TestState | null;
|
|
566
1036
|
testErrorKeys(code: string | null): string[];
|
|
1037
|
+
/** The text of a server's failed count of personal connections. */
|
|
1038
|
+
summaryErrorKeys(serverId: string): string[];
|
|
1039
|
+
/** Whether an administrator connects the organization's account to the server. */
|
|
1040
|
+
authorizesOrganization(server: McpServer): boolean;
|
|
1041
|
+
/** Whether each person connects their own account to the server. */
|
|
1042
|
+
connectsPeople(server: McpServer): boolean;
|
|
1043
|
+
summary(server: McpServer): McpConnectionsSummary | null;
|
|
1044
|
+
/** Revokes every person's connection of the server; each person connects again. */
|
|
1045
|
+
revokeAll(server: McpServer): void;
|
|
1046
|
+
/** Counts the personal connections of the servers each person connects to with OAuth; only those have them. */
|
|
1047
|
+
private loadSummaries;
|
|
1048
|
+
/** Counts the personal connections of one server again. */
|
|
1049
|
+
retrySummary(server: McpServer): void;
|
|
1050
|
+
/**
|
|
1051
|
+
* Authorizes the organization's account, or for a server people connect to themselves the
|
|
1052
|
+
* administrator's own account, in a window opened right away, so popup blockers allow it, and
|
|
1053
|
+
* completes the connection with this administrator's session.
|
|
1054
|
+
*/
|
|
1055
|
+
connect(server: McpServer): void;
|
|
1056
|
+
/** Removes the organization connection; the server revokes its tokens. */
|
|
1057
|
+
disconnect(server: McpServer): void;
|
|
567
1058
|
remove(server: McpServer): void;
|
|
568
1059
|
private setTest;
|
|
569
1060
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminMcpServersComponent, never>;
|
|
@@ -572,19 +1063,82 @@ declare class NhAssistantAdminMcpServersComponent {
|
|
|
572
1063
|
|
|
573
1064
|
/**
|
|
574
1065
|
* What happens to the stored secret on save. `keep` omits `secret`, `replace` sends the
|
|
575
|
-
* new value and `clear` sends `""`. The stored value is never shown.
|
|
1066
|
+
* new value and `clear` sends `""`. The stored value is never shown. The editor offers no `clear`:
|
|
1067
|
+
* the API refuses a mode with a secret that has none, so a stored secret goes by choosing a reference
|
|
1068
|
+
* or a mode without a secret.
|
|
576
1069
|
*/
|
|
577
1070
|
type NhAssistantSecretAction = 'keep' | 'replace' | 'clear';
|
|
578
|
-
/**
|
|
1071
|
+
/** Where the secret is: stored here, encrypted, or a reference to a secret of the application. */
|
|
1072
|
+
type NhAssistantSecretSource = 'stored' | 'reference';
|
|
1073
|
+
/**
|
|
1074
|
+
* One reader as the editor shows it: the tool, the media types as typed (separated by commas, spaces
|
|
1075
|
+
* or new lines), the highest classification and the priority as typed. `key` keeps a row's controls
|
|
1076
|
+
* when another row is removed.
|
|
1077
|
+
*/
|
|
1078
|
+
interface NhAssistantReaderDraft {
|
|
1079
|
+
key: number;
|
|
1080
|
+
toolName: string;
|
|
1081
|
+
mediaTypes: string;
|
|
1082
|
+
maxClassification: AssistantDataClassification | '';
|
|
1083
|
+
priority: string;
|
|
1084
|
+
}
|
|
1085
|
+
/** What is wrong with one reader before it is saved. */
|
|
1086
|
+
interface ReaderProblems {
|
|
1087
|
+
types: boolean;
|
|
1088
|
+
tool: boolean;
|
|
1089
|
+
duplicate: boolean;
|
|
1090
|
+
classification: boolean;
|
|
1091
|
+
priority: boolean;
|
|
1092
|
+
}
|
|
1093
|
+
/**
|
|
1094
|
+
* Creates or edits one MCP server: the authentication with a write-only secret or a reference to
|
|
1095
|
+
* one, OAuth with discovery the administrator confirms, an optional client certificate, the
|
|
1096
|
+
* transport, the use in background runs and, for a server that exists, its readers: per reader the
|
|
1097
|
+
* synced tool that turns files into text, the media types it reads, the highest classification that
|
|
1098
|
+
* may be sent to it and its priority, with readers to add and remove. Every field stops at the length
|
|
1099
|
+
* the server accepts; a refused save shows each of the server's field errors at its field, those of a
|
|
1100
|
+
* reader at that reader (`readers[0].toolName`), for example a secret reference the application cannot
|
|
1101
|
+
* resolve (`not-found`), and moves the focus to the first of them.
|
|
1102
|
+
*/
|
|
579
1103
|
declare class NhAssistantAdminMcpServerEditorComponent {
|
|
580
1104
|
private readonly admin;
|
|
1105
|
+
private readonly host;
|
|
1106
|
+
private readonly injector;
|
|
581
1107
|
private subscription?;
|
|
1108
|
+
private discoverySubscription?;
|
|
1109
|
+
private modesSubscription?;
|
|
1110
|
+
private toolsSubscription?;
|
|
1111
|
+
/** Fields whose server error the administrator changed since the refused save. */
|
|
1112
|
+
private readonly touched;
|
|
582
1113
|
/** The server to edit, or null for a new server. */
|
|
583
1114
|
readonly server: _angular_core.InputSignal<McpServer | null>;
|
|
584
1115
|
readonly saved: _angular_core.OutputEmitterRef<McpServer>;
|
|
585
1116
|
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
586
1117
|
readonly id: string;
|
|
587
|
-
readonly
|
|
1118
|
+
readonly limits: {
|
|
1119
|
+
readonly id: 40;
|
|
1120
|
+
readonly displayName: 200;
|
|
1121
|
+
readonly url: 2048;
|
|
1122
|
+
readonly headerName: 128;
|
|
1123
|
+
readonly secret: 2000;
|
|
1124
|
+
readonly secretReference: 233;
|
|
1125
|
+
readonly userName: 256;
|
|
1126
|
+
readonly clientCertificateReference: 100;
|
|
1127
|
+
readonly requiredPolicy: 256;
|
|
1128
|
+
readonly scopes: 1024;
|
|
1129
|
+
readonly clientId: 512;
|
|
1130
|
+
readonly clientSecret: 2000;
|
|
1131
|
+
readonly organizationAccountLabel: 200;
|
|
1132
|
+
};
|
|
1133
|
+
readonly builtInAuthModes: readonly McpBuiltInAuthMode[];
|
|
1134
|
+
/** The modes the application registered in code; none until they are loaded or when loading fails. */
|
|
1135
|
+
readonly customAuthModes: _angular_core.WritableSignal<readonly McpCustomAuthMode[]>;
|
|
1136
|
+
/** The built-in modes, the application's own and, kept selectable, a stored mode no longer registered. */
|
|
1137
|
+
readonly authModes: _angular_core.Signal<readonly McpAuthMode[]>;
|
|
1138
|
+
readonly transports: readonly McpTransport[];
|
|
1139
|
+
readonly secretSources: readonly NhAssistantSecretSource[];
|
|
1140
|
+
readonly connectionScopes: readonly McpConnectionScope[];
|
|
1141
|
+
readonly classifications: readonly AssistantDataClassification[];
|
|
588
1142
|
readonly serverId: _angular_core.WritableSignal<string>;
|
|
589
1143
|
readonly displayName: _angular_core.WritableSignal<string>;
|
|
590
1144
|
readonly url: _angular_core.WritableSignal<string>;
|
|
@@ -592,28 +1146,155 @@ declare class NhAssistantAdminMcpServerEditorComponent {
|
|
|
592
1146
|
readonly headerName: _angular_core.WritableSignal<string>;
|
|
593
1147
|
readonly requiredPolicy: _angular_core.WritableSignal<string>;
|
|
594
1148
|
readonly isEnabled: _angular_core.WritableSignal<boolean>;
|
|
1149
|
+
readonly headlessUse: _angular_core.WritableSignal<McpHeadlessUse>;
|
|
1150
|
+
readonly userName: _angular_core.WritableSignal<string>;
|
|
1151
|
+
readonly secretSource: _angular_core.WritableSignal<NhAssistantSecretSource>;
|
|
1152
|
+
readonly secretReference: _angular_core.WritableSignal<string>;
|
|
1153
|
+
readonly clientCertificateReference: _angular_core.WritableSignal<string>;
|
|
1154
|
+
readonly transport: _angular_core.WritableSignal<McpTransport>;
|
|
595
1155
|
readonly secretAction: _angular_core.WritableSignal<NhAssistantSecretAction>;
|
|
596
1156
|
/** The new secret while typing. Never filled from the server. */
|
|
597
1157
|
readonly secret: _angular_core.WritableSignal<string>;
|
|
1158
|
+
readonly connectionScope: _angular_core.WritableSignal<McpConnectionScope>;
|
|
1159
|
+
readonly oauthClientId: _angular_core.WritableSignal<string>;
|
|
1160
|
+
readonly oauthScopes: _angular_core.WritableSignal<string>;
|
|
1161
|
+
readonly organizationAccountLabel: _angular_core.WritableSignal<string>;
|
|
1162
|
+
readonly oauthSecretSource: _angular_core.WritableSignal<NhAssistantSecretSource>;
|
|
1163
|
+
readonly oauthSecretReference: _angular_core.WritableSignal<string>;
|
|
1164
|
+
readonly oauthSecretAction: _angular_core.WritableSignal<NhAssistantSecretAction>;
|
|
1165
|
+
/** The new client secret while typing. Never filled from the server. */
|
|
1166
|
+
readonly oauthSecret: _angular_core.WritableSignal<string>;
|
|
1167
|
+
/** What discovery found for the address; the administrator confirms it on save. */
|
|
1168
|
+
readonly discovery: _angular_core.WritableSignal<McpDiscovery | null>;
|
|
1169
|
+
readonly discovering: _angular_core.WritableSignal<boolean>;
|
|
1170
|
+
readonly discoveryError: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
1171
|
+
readonly confirmAuthorization: _angular_core.WritableSignal<boolean>;
|
|
1172
|
+
/** The readers of the server as the editor shows them, in their order. */
|
|
1173
|
+
readonly readers: _angular_core.WritableSignal<readonly NhAssistantReaderDraft[]>;
|
|
1174
|
+
readonly maxReaders = 16;
|
|
1175
|
+
readonly readerPriority: {
|
|
1176
|
+
readonly min: -1000;
|
|
1177
|
+
readonly max: 1000;
|
|
1178
|
+
};
|
|
1179
|
+
/** The server's synced tools, which can read files; empty until they are loaded. */
|
|
1180
|
+
readonly readerTools: _angular_core.WritableSignal<readonly McpTool[]>;
|
|
598
1181
|
readonly submitted: _angular_core.WritableSignal<boolean>;
|
|
599
1182
|
readonly saving: _angular_core.WritableSignal<boolean>;
|
|
600
1183
|
readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
|
|
601
1184
|
readonly isNew: _angular_core.Signal<boolean>;
|
|
1185
|
+
/** A stored secret that a save keeps; a reference replaces it. */
|
|
602
1186
|
readonly hasSecret: _angular_core.Signal<boolean>;
|
|
1187
|
+
/** The server's own secret; OAuth modes have a client secret instead. */
|
|
603
1188
|
readonly usesSecret: _angular_core.Signal<boolean>;
|
|
1189
|
+
readonly usesReference: _angular_core.Signal<boolean>;
|
|
1190
|
+
/**
|
|
1191
|
+
* The organization's credential may serve background runs; a forwarded user token only as the
|
|
1192
|
+
* short-lived token of the person a run acts for, after that person allowed it.
|
|
1193
|
+
*/
|
|
1194
|
+
readonly headlessUses: _angular_core.Signal<readonly McpHeadlessUse[]>;
|
|
1195
|
+
readonly isOAuth: _angular_core.Signal<boolean>;
|
|
1196
|
+
readonly isClientCredentials: _angular_core.Signal<boolean>;
|
|
1197
|
+
/** One authorization of the organization's account that everyone uses. */
|
|
1198
|
+
readonly isOrganizationOAuth: _angular_core.Signal<boolean>;
|
|
1199
|
+
/** Whose credential the application's own mode sends; null for a built-in mode. */
|
|
1200
|
+
readonly customOwnership: _angular_core.Signal<"organization" | "person" | null>;
|
|
1201
|
+
/**
|
|
1202
|
+
* The server runs with each person's own account: a forwarded sign-in, a personal OAuth connection
|
|
1203
|
+
* or a mode of the application that sends a person's credential.
|
|
1204
|
+
*/
|
|
1205
|
+
readonly personalCredential: _angular_core.Signal<boolean>;
|
|
1206
|
+
readonly hasOAuthSecret: _angular_core.Signal<boolean>;
|
|
1207
|
+
readonly usesOAuthReference: _angular_core.Signal<boolean>;
|
|
1208
|
+
readonly showOAuthSecretInput: _angular_core.Signal<boolean>;
|
|
1209
|
+
/**
|
|
1210
|
+
* The confirmed authorization server stays valid while the address and the OAuth use stay; a new
|
|
1211
|
+
* server, a new address or a switch to OAuth needs discovery and the administrator's confirmation.
|
|
1212
|
+
*/
|
|
1213
|
+
readonly needsConfirmation: _angular_core.Signal<boolean>;
|
|
1214
|
+
readonly pkceMissing: _angular_core.Signal<boolean>;
|
|
1215
|
+
readonly confirmMissing: _angular_core.Signal<boolean>;
|
|
1216
|
+
readonly scopesInvalid: _angular_core.Signal<boolean>;
|
|
1217
|
+
readonly clientIdMissing: _angular_core.Signal<boolean>;
|
|
1218
|
+
readonly labelMissing: _angular_core.Signal<boolean>;
|
|
1219
|
+
readonly oauthReferenceInvalid: _angular_core.Signal<boolean>;
|
|
1220
|
+
/** The registration discovery offers when no client id is entered. */
|
|
1221
|
+
readonly registration: _angular_core.Signal<"manual" | "metadata-document" | "dynamic" | null>;
|
|
1222
|
+
readonly effectiveHeadlessUse: _angular_core.Signal<McpHeadlessUse>;
|
|
604
1223
|
readonly showSecretInput: _angular_core.Signal<boolean>;
|
|
605
1224
|
readonly idInvalid: _angular_core.Signal<boolean>;
|
|
606
1225
|
readonly nameMissing: _angular_core.Signal<boolean>;
|
|
607
1226
|
readonly urlInvalid: _angular_core.Signal<boolean>;
|
|
1227
|
+
readonly userNameInvalid: _angular_core.Signal<boolean>;
|
|
1228
|
+
readonly secretReferenceInvalid: _angular_core.Signal<boolean>;
|
|
1229
|
+
readonly certificateInvalid: _angular_core.Signal<boolean>;
|
|
1230
|
+
readonly oauthInvalid: _angular_core.Signal<boolean>;
|
|
1231
|
+
readonly headerNameInvalid: _angular_core.Signal<boolean>;
|
|
1232
|
+
/** The tool names to choose from, keeping the stored tools the list no longer holds selectable. */
|
|
1233
|
+
readonly readerToolNames: _angular_core.Signal<string[]>;
|
|
1234
|
+
/** What is wrong with each reader, in the order of `readers`. */
|
|
1235
|
+
readonly readerProblems: _angular_core.Signal<readonly ReaderProblems[]>;
|
|
1236
|
+
/** Why a reader can or cannot be added: the server's tools are not synced, or it has the most. */
|
|
1237
|
+
readonly readerAddHint: _angular_core.Signal<"nh-assistant.admin.server-editor.reader.tool-sync" | "nh-assistant.admin.server-editor.reader.limit" | "nh-assistant.admin.server-editor.reader.add-hint">;
|
|
1238
|
+
readonly readerInvalid: _angular_core.Signal<boolean>;
|
|
608
1239
|
readonly valid: _angular_core.Signal<boolean>;
|
|
609
1240
|
readonly errorKeys: _angular_core.Signal<string[]>;
|
|
1241
|
+
/** The server's first error per field of the refused save, until the administrator changes the field. */
|
|
1242
|
+
readonly serverErrors: _angular_core.Signal<Readonly<Record<string, string>>>;
|
|
1243
|
+
/** Field errors of fields the editor does not show, listed with the form's error. */
|
|
1244
|
+
readonly otherServerErrors: _angular_core.Signal<{
|
|
1245
|
+
field: string;
|
|
1246
|
+
keys: string[];
|
|
1247
|
+
}[]>;
|
|
1248
|
+
readonly discoveryErrorKeys: _angular_core.Signal<string[]>;
|
|
610
1249
|
constructor();
|
|
611
1250
|
value(event: Event): string;
|
|
1251
|
+
/** Whether the server refused the field in the last save. */
|
|
1252
|
+
serverInvalid(field: string): boolean;
|
|
1253
|
+
/** The text of the server's error of a field: the text of its value, then the generic text. */
|
|
1254
|
+
serverErrorKeys(field: string): string[];
|
|
1255
|
+
/** The id of a field's error, for `aria-describedby`. */
|
|
1256
|
+
errorId(field: string): string;
|
|
1257
|
+
/** The name of a reader's field in the server's errors, such as `readers[0].toolName`. */
|
|
1258
|
+
readerField(index: number, field: 'mediaTypes' | 'toolName' | 'maxClassification' | 'priority'): string;
|
|
1259
|
+
/** Adds an empty reader at the end, at priority 0, and moves the focus to its tool. */
|
|
1260
|
+
addReader(): void;
|
|
1261
|
+
/**
|
|
1262
|
+
* Removes a reader and moves the focus to the button that adds one; the server's errors of the
|
|
1263
|
+
* readers no longer match their positions.
|
|
1264
|
+
*/
|
|
1265
|
+
removeReader(index: number): void;
|
|
1266
|
+
/** Changes one field of a reader as the administrator typed or chose it. */
|
|
1267
|
+
updateReader(index: number, field: 'toolName' | 'mediaTypes' | 'maxClassification' | 'priority', value: string): void;
|
|
1268
|
+
/** The ids a control describes itself with: its hint and, while the server refused it, its error. */
|
|
1269
|
+
describedBy(hintId: string | null, field: string): string | null;
|
|
1270
|
+
/** The administrator changed a field; its server error no longer applies. */
|
|
1271
|
+
touch(field: string): void;
|
|
612
1272
|
checked(event: Event): boolean;
|
|
613
1273
|
setSecretAction(action: NhAssistantSecretAction): void;
|
|
1274
|
+
setSecretSource(source: NhAssistantSecretSource): void;
|
|
614
1275
|
onSecretInput(event: Event): void;
|
|
1276
|
+
/** A new address makes earlier discovery meaningless. */
|
|
1277
|
+
onUrlInput(event: Event): void;
|
|
1278
|
+
setOAuthSecretSource(source: NhAssistantSecretSource): void;
|
|
1279
|
+
onOAuthSecretInput(event: Event): void;
|
|
1280
|
+
/** Reads the authorization of the address; the administrator confirms what it found. */
|
|
1281
|
+
discover(): void;
|
|
615
1282
|
save(): void;
|
|
1283
|
+
private focusFirstInvalid;
|
|
1284
|
+
private focusById;
|
|
1285
|
+
private valueKeys;
|
|
1286
|
+
/** Whether the editor shows a field error at a reader's own field. */
|
|
1287
|
+
private showsReaderField;
|
|
1288
|
+
/** The server's errors of the readers no longer apply once a reader is added or removed. */
|
|
1289
|
+
private forgetReaderErrors;
|
|
616
1290
|
private reset;
|
|
1291
|
+
/** The synced tools of an existing server, to choose the reading tool from. */
|
|
1292
|
+
private loadReaderTools;
|
|
1293
|
+
/**
|
|
1294
|
+
* The OAuth settings as the editor shows them: every value is sent, so an emptied field clears the
|
|
1295
|
+
* stored value. The client secret is write-only: sent only when replaced.
|
|
1296
|
+
*/
|
|
1297
|
+
private oauthInput;
|
|
617
1298
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminMcpServerEditorComponent, never>;
|
|
618
1299
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminMcpServerEditorComponent, "nh-assistant-admin-mcp-server-editor", never, { "server": { "alias": "server"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
619
1300
|
}
|
|
@@ -662,5 +1343,5 @@ declare class NhAssistantAdminMcpToolsComponent {
|
|
|
662
1343
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAdminMcpToolsComponent, "nh-assistant-admin-mcp-tools", never, { "server": { "alias": "server"; "required": true; "isSignal": true; }; }, { "closed": "closed"; "synced": "synced"; }, never, never, true, never>;
|
|
663
1344
|
}
|
|
664
1345
|
|
|
665
|
-
export { NH_ASSISTANT_MAX_INSTRUCTIONS, NhAssistantAdminAgentEditorComponent, NhAssistantAdminAgentsComponent, NhAssistantAdminComponent, NhAssistantAdminContextComponent, NhAssistantAdminMcpServerEditorComponent, NhAssistantAdminMcpServersComponent, NhAssistantAdminMcpToolsComponent, NhAssistantAgentEvaluationComponent, NhAssistantAgentFeedbackReportComponent, NhAssistantAgentRunConfigurationComponent, nhAssistantSelectorMatches };
|
|
666
|
-
export type { NhAssistantAdminTab, NhAssistantEvaluationPeriod, NhAssistantFeedbackPeriod, NhAssistantSecretAction };
|
|
1346
|
+
export { NH_ASSISTANT_MAX_INSTRUCTIONS, NhAssistantAdminAgentEditorComponent, NhAssistantAdminAgentsComponent, NhAssistantAdminComponent, NhAssistantAdminContextComponent, NhAssistantAdminMcpServerEditorComponent, NhAssistantAdminMcpServersComponent, NhAssistantAdminMcpToolsComponent, NhAssistantAgentEvaluationComponent, NhAssistantAgentFeedbackReportComponent, NhAssistantAgentRunConfigurationComponent, NhAssistantAgentRunHistoryComponent, nhAssistantSelectorMatches };
|
|
1347
|
+
export type { AgentUse, NhAssistantAdminTab, NhAssistantEvaluationPeriod, NhAssistantFeedbackPeriod, NhAssistantReaderDraft, NhAssistantSecretAction, NhAssistantSecretSource, WorksOnScope };
|