@newheap/platform-ai-chat 0.8.1 → 0.10.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.
@@ -0,0 +1,384 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _newheap_platform_ai_chat from '@newheap/platform-ai-chat';
3
+ import { AgentProposal, AgentThreadLookup, AgentTriggerReceipt, NhAssistantError, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalDecision, AgentExecutionResolution, AgentSubjectRole, AgentRun, AgentRunRetryMode, AgentThreadMemory, AgentArtifact, AgentConsultation, AgentSubjectWork, AgentSubjectWorkAgent } from '@newheap/platform-ai-chat';
4
+
5
+ /**
6
+ * The approval inbox: pending agent proposals across subjects that the signed-in person may
7
+ * decide, earliest expiry first. Proposals are decided in place, one by one or together; the
8
+ * server checks each decision against the proposal's approval policy again. After a rejection the
9
+ * inbox asks, optionally, what was wrong, also when the rejected proposals have left the list.
10
+ * With live updates the inbox reloads by itself when agent work changes, for example when a
11
+ * colleague decided a proposal or a run proposed a new one. A proposal that closes because it no
12
+ * longer fits, for example because someone did the work by hand, stays as a closed card with the
13
+ * reason until it is dismissed.
14
+ */
15
+ declare class NhAssistantAgentInboxComponent {
16
+ private readonly api;
17
+ private readonly proposalList;
18
+ private subscription?;
19
+ /** Limits the inbox to one agent. */
20
+ readonly agentId: _angular_core.InputSignal<string | undefined>;
21
+ /** Limits the inbox to one kind of subject, for example `project`. */
22
+ readonly subjectType: _angular_core.InputSignal<string | undefined>;
23
+ readonly itemsPerPage: _angular_core.InputSignal<number>;
24
+ readonly page: _angular_core.WritableSignal<number>;
25
+ readonly loading: _angular_core.WritableSignal<boolean>;
26
+ /** True after the first successful load; later loads keep the list, and an open feedback question, in place. */
27
+ readonly loaded: _angular_core.WritableSignal<boolean>;
28
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
29
+ readonly items: _angular_core.WritableSignal<AgentProposal[]>;
30
+ readonly total: _angular_core.WritableSignal<number>;
31
+ readonly pages: _angular_core.Signal<number>;
32
+ constructor();
33
+ load(): void;
34
+ goTo(page: number): void;
35
+ /**
36
+ * Reloads after a live update. Once the inbox is shown it reloads quietly: no loading state, and
37
+ * a failure keeps the list and an open feedback question in place. While a decision of the list
38
+ * is in flight it waits, because the decision reloads the inbox when it ends.
39
+ */
40
+ private refresh;
41
+ private fetch;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentInboxComponent, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentInboxComponent, "nh-assistant-agent-inbox", never, { "agentId": { "alias": "agentId"; "required": false; "isSignal": true; }; "subjectType": { "alias": "subjectType"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ }
45
+
46
+ type NhAssistantAgentThreadTab = 'proposals' | 'runs' | 'consultations' | 'memory' | 'artifacts';
47
+ /**
48
+ * The agent's work on one subject, for example an "Intake review" tab on a project page: the
49
+ * caller's role, a start action for participants, and the thread's proposals, runs, consultations
50
+ * by other assistants, working memory and files. Everything follows the caller's live role on the
51
+ * subject. With live updates the view reloads by itself when the thread's runs, proposals or
52
+ * feedback change, also when a colleague decided elsewhere.
53
+ */
54
+ declare class NhAssistantAgentThreadViewComponent {
55
+ private readonly api;
56
+ private readonly proposalList;
57
+ private subscription?;
58
+ private proposalSubscription?;
59
+ private startSubscription?;
60
+ readonly agentId: _angular_core.InputSignal<string>;
61
+ readonly subjectType: _angular_core.InputSignal<string>;
62
+ readonly subjectId: _angular_core.InputSignal<string>;
63
+ /** Emits the thread's conversation id, so the host can open it in the assistant panel. */
64
+ readonly openConversation: _angular_core.OutputEmitterRef<string>;
65
+ readonly tab: _angular_core.WritableSignal<NhAssistantAgentThreadTab>;
66
+ readonly loading: _angular_core.WritableSignal<boolean>;
67
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
68
+ readonly lookup: _angular_core.WritableSignal<AgentThreadLookup | null>;
69
+ readonly proposals: _angular_core.WritableSignal<AgentProposal[]>;
70
+ readonly message: _angular_core.WritableSignal<string>;
71
+ readonly starting: _angular_core.WritableSignal<boolean>;
72
+ readonly receipt: _angular_core.WritableSignal<AgentTriggerReceipt | null>;
73
+ readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
74
+ readonly errorKeys: _angular_core.Signal<string[]>;
75
+ readonly thread: _angular_core.Signal<_newheap_platform_ai_chat.AgentThread | null>;
76
+ readonly role: _angular_core.Signal<_newheap_platform_ai_chat.AgentSubjectRole>;
77
+ readonly tabs: readonly NhAssistantAgentThreadTab[];
78
+ constructor();
79
+ load(): void;
80
+ loadProposals(): void;
81
+ onMessage(event: Event): void;
82
+ start(): void;
83
+ /**
84
+ * Whether a live update is about this view: its own thread, or, before the subject has a thread,
85
+ * a run that may have started it.
86
+ */
87
+ private concerns;
88
+ /**
89
+ * Reloads after a live update. Once the thread is shown it reloads quietly: no loading state, and
90
+ * a failure keeps what is shown, including an open feedback question. While a decision of the
91
+ * proposal list is in flight only the thread reloads, because the decision reloads the proposals
92
+ * when it ends.
93
+ */
94
+ private refresh;
95
+ private fetch;
96
+ private fetchProposals;
97
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentThreadViewComponent, never>;
98
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentThreadViewComponent, "nh-assistant-agent-thread-view", never, { "agentId": { "alias": "agentId"; "required": true; "isSignal": true; }; "subjectType": { "alias": "subjectType"; "required": true; "isSignal": true; }; "subjectId": { "alias": "subjectId"; "required": true; "isSignal": true; }; }, { "openConversation": "openConversation"; }, never, never, true, never>;
99
+ }
100
+
101
+ /** A feedback question: after a rejection above the list, or from a card's own action. */
102
+ interface NhAssistantFeedbackRequest {
103
+ approvalIds: string[];
104
+ initial: AgentProposalFeedback | null;
105
+ placement: 'prompt' | 'card';
106
+ /** What was rejected, for a single rejection. */
107
+ summary: string | null;
108
+ /** The feedback was stored; the panel thanks the person until the next action. */
109
+ saved: boolean;
110
+ }
111
+ /**
112
+ * A list of agent proposals with their decision and execution state. People who may decide see
113
+ * approve and reject on pending proposals and the resolution of an execution with an unknown
114
+ * outcome; the server checks every decision again. With `selectable`, pending proposals can be
115
+ * approved or rejected together. Deciding takes one action. After a rejection the list asks,
116
+ * optionally and above the list, what was wrong; closed proposals keep a low-key action to give or
117
+ * change that feedback later. With `decisionRights` each proposal has its own right, for example
118
+ * from the agent work on a subject, and a pending proposal the viewer may not decide says who does.
119
+ * A proposal that no longer fits, for example because a person already did the work, shows why.
120
+ * With `holdClosedCards`, a list of open proposals keeps such a proposal, or one a newer proposal
121
+ * replaced, as a closed card when it closes while shown, or when an approval is refused because of
122
+ * it, until the person dismisses it. It reads those proposals by id with one lookup, never through
123
+ * their threads.
124
+ */
125
+ declare class NhAssistantAgentProposalsComponent {
126
+ private readonly api;
127
+ private readonly host;
128
+ private readonly injector;
129
+ private subscription?;
130
+ readonly proposals: _angular_core.InputSignal<AgentProposal[]>;
131
+ /** Whether the caller may decide: an approver of the subjects or the inbox owner. */
132
+ readonly canDecide: _angular_core.InputSignal<boolean>;
133
+ /**
134
+ * The caller's live right per proposal, by approval id, for example from
135
+ * `AgentSubjectWork.openProposals`. A proposal with a right uses it instead of `canDecide`.
136
+ */
137
+ readonly decisionRights: _angular_core.InputSignal<ReadonlyMap<string, AgentProposalDecisionRight> | null>;
138
+ readonly selectable: _angular_core.InputSignal<boolean>;
139
+ /**
140
+ * Keeps proposals that close as stale or are replaced while shown as closed cards with their
141
+ * explanation until they are dismissed. For lists of open proposals, which drop a proposal once
142
+ * it closes.
143
+ */
144
+ readonly holdClosedCards: _angular_core.InputSignal<boolean>;
145
+ /** Emits after a proposal or its feedback changed, so the host reloads its list. */
146
+ readonly changed: _angular_core.OutputEmitterRef<void>;
147
+ readonly busy: _angular_core.WritableSignal<boolean>;
148
+ readonly selected: _angular_core.WritableSignal<ReadonlySet<string>>;
149
+ readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
150
+ readonly errorKeys: _angular_core.Signal<string[]>;
151
+ /** Pending proposals the caller may decide. */
152
+ readonly pending: _angular_core.Signal<AgentProposal[]>;
153
+ readonly allSelected: _angular_core.Signal<boolean>;
154
+ /** The feedback question. It does not depend on `proposals`, which drop rejected proposals in the inbox. */
155
+ readonly feedback: _angular_core.WritableSignal<NhAssistantFeedbackRequest | null>;
156
+ /** Proposals that closed as stale while shown, kept until dismissed; newest first. */
157
+ readonly held: _angular_core.WritableSignal<AgentProposal[]>;
158
+ /** The held closed cards first, then the proposals the host gave. */
159
+ readonly shown: _angular_core.Signal<AgentProposal[]>;
160
+ private readonly lookups;
161
+ constructor();
162
+ /**
163
+ * The translation key of a proposal's status: the kind of a stale proposal, "replaced" for a
164
+ * superseded one, otherwise its status.
165
+ */
166
+ statusKey(proposal: AgentProposal): string;
167
+ /** True when the newer proposal that replaced this one is in the list. */
168
+ hasSuccessor(proposal: AgentProposal): boolean;
169
+ /** Moves focus to the newer proposal that replaced this one. */
170
+ showSuccessor(proposal: AgentProposal): void;
171
+ /** True for a closed card the list keeps until it is dismissed. */
172
+ isHeld(proposal: AgentProposal): boolean;
173
+ /** Removes a closed card. */
174
+ dismiss(proposal: AgentProposal): void;
175
+ /**
176
+ * Called by a host of open proposals after a live update replaced `previous` with `next`: keeps
177
+ * the shown pending proposals that left the list because they closed as stale or were replaced.
178
+ */
179
+ holdClosed(previous: readonly AgentProposal[], next: readonly AgentProposal[]): void;
180
+ /** Whether the caller may decide this proposal: its own right when one was given, otherwise `canDecide`. */
181
+ mayDecide(proposal: AgentProposal): boolean;
182
+ /**
183
+ * Who decides a pending proposal that has a right the caller lacks: another approver when
184
+ * four-eyes keeps out the person who started the work, otherwise an approver.
185
+ */
186
+ waitingForKey(proposal: AgentProposal): string | null;
187
+ toggle(proposal: AgentProposal): void;
188
+ toggleAll(): void;
189
+ decide(proposal: AgentProposal, decision: AgentProposalDecision): void;
190
+ decideSelected(decision: AgentProposalDecision): void;
191
+ resolve(proposal: AgentProposal, action: AgentExecutionResolution): void;
192
+ /** Opens the feedback question in the card of a closed proposal, with the caller's own feedback. */
193
+ giveFeedback(proposal: AgentProposal): void;
194
+ /** True while the feedback question for this proposal is open, above the list or in its card. */
195
+ isAsking(proposal: AgentProposal): boolean;
196
+ /** True when the card of this proposal shows the feedback question or its thanks. */
197
+ inCard(proposal: AgentProposal): boolean;
198
+ /** Keeps the panel, which now thanks the person, and lets the host reload the proposals. */
199
+ onFeedbackSaved(): void;
200
+ /** Closes the question; from a card, focus returns to the card's feedback action. */
201
+ onFeedbackDismissed(): void;
202
+ private ask;
203
+ /**
204
+ * Reads `proposals` again by id and keeps those that closed as stale or were replaced as closed
205
+ * cards, with their kind and explanation or their successor.
206
+ */
207
+ private holdStale;
208
+ private run;
209
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentProposalsComponent, never>;
210
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentProposalsComponent, "nh-assistant-agent-proposals", never, { "proposals": { "alias": "proposals"; "required": true; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionRights": { "alias": "decisionRights"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "holdClosedCards": { "alias": "holdClosedCards"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
211
+ }
212
+
213
+ /**
214
+ * The runs of an agent thread, newest first: trigger, status, failure, usage, proposals and the
215
+ * summary the next run starts from. Participants cancel an open run; approvers resume or restart
216
+ * a failed or cancelled one. With live updates it reloads by itself when a run or proposal of the
217
+ * thread changes.
218
+ */
219
+ declare class NhAssistantRunTimelineComponent {
220
+ private readonly api;
221
+ private subscription?;
222
+ private actionSubscription?;
223
+ readonly conversationId: _angular_core.InputSignal<string>;
224
+ readonly role: _angular_core.InputSignal<AgentSubjectRole>;
225
+ /** Emits after a run was cancelled or retried. */
226
+ readonly changed: _angular_core.OutputEmitterRef<void>;
227
+ readonly loading: _angular_core.WritableSignal<boolean>;
228
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
229
+ readonly runs: _angular_core.WritableSignal<AgentRun[]>;
230
+ readonly busyRunId: _angular_core.WritableSignal<string | null>;
231
+ readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
232
+ readonly errorKeys: _angular_core.Signal<string[]>;
233
+ readonly canCancel: _angular_core.Signal<boolean>;
234
+ readonly canRetry: _angular_core.Signal<boolean>;
235
+ constructor();
236
+ load(): void;
237
+ isOpen(run: AgentRun): boolean;
238
+ canRetryRun(run: AgentRun): boolean;
239
+ cancel(run: AgentRun): void;
240
+ retry(run: AgentRun, mode: AgentRunRetryMode): void;
241
+ private act;
242
+ /** A quiet load, after a live update, shows no loading state and keeps the runs when it fails. */
243
+ private fetch;
244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantRunTimelineComponent, never>;
245
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantRunTimelineComponent, "nh-assistant-run-timeline", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
246
+ }
247
+
248
+ /**
249
+ * The working memory of an agent about the subject of a thread, read-only. The agent keeps it
250
+ * up to date itself; it is shown so that people can see what the agent remembers. With live
251
+ * updates it reloads by itself when a run of the thread changes.
252
+ */
253
+ declare class NhAssistantAgentMemoryComponent {
254
+ private readonly api;
255
+ private subscription?;
256
+ readonly conversationId: _angular_core.InputSignal<string>;
257
+ readonly loading: _angular_core.WritableSignal<boolean>;
258
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
259
+ readonly memory: _angular_core.WritableSignal<AgentThreadMemory | null>;
260
+ readonly formatted: _angular_core.Signal<string | null>;
261
+ constructor();
262
+ load(): void;
263
+ /** A quiet load, after a live update, shows no loading state and keeps the memory when it fails. */
264
+ private fetch;
265
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentMemoryComponent, never>;
266
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentMemoryComponent, "nh-assistant-agent-memory", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
267
+ }
268
+
269
+ /**
270
+ * The files the agent's tools saved in a thread, every version newest first. Files of the
271
+ * agent's own grant that the viewer may not read are listed as shielded and cannot be downloaded.
272
+ * With live updates the list reloads by itself when a run or proposal of the thread changes.
273
+ */
274
+ declare class NhAssistantAgentArtifactsComponent {
275
+ private readonly api;
276
+ private readonly document;
277
+ private subscription?;
278
+ readonly conversationId: _angular_core.InputSignal<string>;
279
+ readonly loading: _angular_core.WritableSignal<boolean>;
280
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
281
+ readonly downloadFailed: _angular_core.WritableSignal<boolean>;
282
+ readonly artifacts: _angular_core.WritableSignal<AgentArtifact[]>;
283
+ readonly downloadingId: _angular_core.WritableSignal<string | null>;
284
+ constructor();
285
+ load(): void;
286
+ download(artifact: AgentArtifact): Promise<void>;
287
+ /** A quiet load, after a live update, shows no loading state and keeps the files when it fails. */
288
+ private fetch;
289
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentArtifactsComponent, never>;
290
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentArtifactsComponent, "nh-assistant-agent-artifacts", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
291
+ }
292
+
293
+ /**
294
+ * Who consulted the thread's agent through another assistant, newest first: the person whose rights
295
+ * were used, the asking assistant, the outcome, the usage and the proposals left for approvers. The
296
+ * question and the answer stay in the asking conversation and are never shown here. With live
297
+ * updates the list reloads by itself when a run or proposal of the thread changes.
298
+ */
299
+ declare class NhAssistantAgentConsultationsComponent {
300
+ private readonly api;
301
+ private subscription?;
302
+ readonly conversationId: _angular_core.InputSignal<string>;
303
+ readonly loading: _angular_core.WritableSignal<boolean>;
304
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
305
+ readonly consultations: _angular_core.WritableSignal<AgentConsultation[]>;
306
+ readonly total: _angular_core.WritableSignal<number>;
307
+ constructor();
308
+ load(): void;
309
+ /** A quiet load, after a live update, shows no loading state and keeps the list when it fails. */
310
+ private fetch;
311
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentConsultationsComponent, never>;
312
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentConsultationsComponent, "nh-assistant-agent-consultations", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
313
+ }
314
+
315
+ /** The outcome of starting one agent on the subject. */
316
+ interface NhAssistantStartedAgent {
317
+ agentId: string;
318
+ receipt: AgentTriggerReceipt;
319
+ }
320
+ /**
321
+ * The agent work on one subject of the application, for example in a project's dialog: the open
322
+ * proposals of every agent on the subject with the viewer's own decision right, including who
323
+ * decides when the viewer may not and the optional question after a rejection, and per agent the
324
+ * conversation about the subject and, for participants, a start action. `agentId` names the agent
325
+ * whose conversation the host offers also before it worked on the subject. With live updates the
326
+ * view reloads by itself when agent work on its subject changes; a proposal that closes because it
327
+ * no longer fits stays as a closed card with the reason until it is dismissed. Opening a
328
+ * conversation uses `NhAssistantPanelService.openSubject` and emits `conversationOpened` afterwards.
329
+ */
330
+ declare class NhAssistantSubjectSuggestionsComponent {
331
+ private readonly api;
332
+ private readonly panel;
333
+ private readonly store;
334
+ private readonly proposalList;
335
+ private subscription?;
336
+ private startSubscription?;
337
+ private destroyed;
338
+ /** The application's kind of subject, for example `project`. */
339
+ readonly subjectType: _angular_core.InputSignal<string>;
340
+ readonly subjectId: _angular_core.InputSignal<string>;
341
+ /** The agent whose conversation about the subject the host offers, also before it worked on it. */
342
+ readonly agentId: _angular_core.InputSignal<string | undefined>;
343
+ /** Emits once the panel opens the conversation, so a host in a dialog can make room for it. */
344
+ readonly conversationOpened: _angular_core.OutputEmitterRef<AgentThreadLookup>;
345
+ readonly headingId: string;
346
+ readonly loading: _angular_core.WritableSignal<boolean>;
347
+ /** True after the first successful load; later loads keep the list, and an open feedback question, in place. */
348
+ readonly loaded: _angular_core.WritableSignal<boolean>;
349
+ readonly loadFailed: _angular_core.WritableSignal<boolean>;
350
+ /** The caller has no role on the subject, or it no longer exists. */
351
+ readonly unavailable: _angular_core.WritableSignal<boolean>;
352
+ readonly work: _angular_core.WritableSignal<AgentSubjectWork | null>;
353
+ /** The agent whose conversation is opening or which is starting. */
354
+ readonly opening: _angular_core.WritableSignal<string | null>;
355
+ readonly starting: _angular_core.WritableSignal<string | null>;
356
+ readonly started: _angular_core.WritableSignal<NhAssistantStartedAgent | null>;
357
+ readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
358
+ readonly errorKeys: _angular_core.Signal<string[]>;
359
+ /** True while the assistant panel can show a conversation. */
360
+ readonly assistantEnabled: _angular_core.Signal<boolean>;
361
+ readonly agents: _angular_core.Signal<AgentSubjectWorkAgent[]>;
362
+ readonly proposals: _angular_core.Signal<_newheap_platform_ai_chat.AgentProposal[]>;
363
+ readonly decisionRights: _angular_core.Signal<ReadonlyMap<string, AgentProposalDecisionRight>>;
364
+ constructor();
365
+ load(): void;
366
+ /** The translation keys of an agent's name: from the server's status, then the convention. */
367
+ agentNameKeys(agentId: string): string[];
368
+ /** Readers may open an existing conversation; creating one needs the participant role. */
369
+ canOpen(agent: AgentSubjectWorkAgent): boolean;
370
+ open(agent: AgentSubjectWorkAgent): Promise<void>;
371
+ start(agent: AgentSubjectWorkAgent): void;
372
+ /**
373
+ * Reloads after a live update. Once the work is shown it reloads quietly: no loading state, and
374
+ * a failure keeps what is shown, including an open feedback question. While a decision of the
375
+ * list is in flight it waits, because the decision reloads the list when it ends.
376
+ */
377
+ private refresh;
378
+ private fetch;
379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantSubjectSuggestionsComponent, never>;
380
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantSubjectSuggestionsComponent, "nh-assistant-subject-suggestions", never, { "subjectType": { "alias": "subjectType"; "required": true; "isSignal": true; }; "subjectId": { "alias": "subjectId"; "required": true; "isSignal": true; }; "agentId": { "alias": "agentId"; "required": false; "isSignal": true; }; }, { "conversationOpened": "conversationOpened"; }, never, never, true, never>;
381
+ }
382
+
383
+ export { NhAssistantAgentArtifactsComponent, NhAssistantAgentConsultationsComponent, NhAssistantAgentInboxComponent, NhAssistantAgentMemoryComponent, NhAssistantAgentProposalsComponent, NhAssistantAgentThreadViewComponent, NhAssistantRunTimelineComponent, NhAssistantSubjectSuggestionsComponent };
384
+ export type { NhAssistantAgentThreadTab };