@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/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, SetAgentStateRequest, AgentShadowMode, AgentSkillState, AgentShadowState, AssistantAutonomy, AgentEvaluation, AgentReplay, AgentEvaluationCost, AgentProposalFeedbackCategory, AgentFeedbackSummaryRow, AgentFeedbackItem, AgentFeedbackCategoryCount, StaleKind, AgentProposalFeedbackGroup, AgentAccountability, AgentElevatedReads, TriggerConflict, RunCatalog, AgentRunConfiguration, DataSkill, DataTrigger, SkillComparison, DataSkillVersion, SkillApplyMode, McpServerTestResult, McpAuthMode, McpToolEffect, McpTool } from '@newheap/platform-ai-chat';
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, stop and resume, its shadow mode and that of each
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: texts, autonomy, policy, tool selectors chosen from the tool
194
- * catalog or typed as patterns, and assigned MCP servers.
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
- type Form = 'settings' | 'skill' | 'trigger';
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. Administrators add and change data skills, live at once or as a candidate in
402
- * shadow that they compare with the live version and promote or discard; they add data triggers on
403
- * the application's events or on a schedule and put them live. New skills and triggers start in
404
- * shadow; `changed` tells the agents page to reload the agent's skill states.
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 = 500;
418
- readonly maxDescription = 300;
419
- readonly maxInstructions = 20000;
420
- readonly maxMessage = 2000;
421
- readonly accountabilities: AgentAccountability[];
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 accountability: _angular_core.WritableSignal<AgentAccountability>;
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<string[]>;
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
- readonly skillIdInvalid: _angular_core.Signal<boolean>;
490
- readonly triggerIdInvalid: _angular_core.Signal<boolean>;
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
- /** The first error of a field from the last failed save, as a translation key. */
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
- checked(event: Event): boolean;
523
- private fillSkill;
524
- private fillTrigger;
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 server editor and 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
- /** Creates or edits one MCP server with a write-only secret. */
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 authModes: readonly McpAuthMode[];
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 };