@newheap/platform-ai-chat 0.19.0 → 0.21.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/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Type, EnvironmentProviders, Signal, AfterViewInit, OnDestroy, PipeTransform } from '@angular/core';
2
+ import { InjectionToken, Type, EnvironmentProviders, DestroyRef, Signal, AfterViewInit, OnDestroy, PipeTransform } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
- import { TranslationObject } from '@ngx-translate/core';
4
+ import { TranslationObject, TranslateService } from '@ngx-translate/core';
5
5
  import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { SafeHtml } from '@angular/platform-browser';
6
7
 
7
8
  /**
8
9
  * Contracts of the agent-run endpoints of `NewHeap.Platform.AI.Chat.AspNet`: threads about a
@@ -11,7 +12,7 @@ import { TemplatePortal } from '@angular/cdk/portal';
11
12
  /** The caller's role on the subject of a thread. */
12
13
  type AgentSubjectRole = 'none' | 'reader' | 'participant' | 'approver';
13
14
  type AgentRunStatus = 'queued' | 'running' | 'waiting-for-approval' | 'completed' | 'failed' | 'cancelled';
14
- type AgentProposalStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'withdrawn' | 'stale' | 'executing' | 'awaiting-application' | 'executed' | 'execution-failed' | 'execution-unknown' | 'resolved' | 'shadow';
15
+ type AgentProposalStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'withdrawn' | 'stale' | 'executing' | 'awaiting-application' | 'executed' | 'execution-failed' | 'execution-unknown' | 'resolved' | 'shadow' | 'shadow-superseded';
15
16
  type AgentGrantSource = 'none' | 'delegated' | 'agent' | 'delegated-read' | 'accountable';
16
17
  /**
17
18
  * How a run worked: `model` through the language model, `rule` through the agent's rules without a
@@ -622,6 +623,8 @@ interface AgentConsultationList {
622
623
  interface AgentInbox {
623
624
  items: AgentProposal[];
624
625
  total: number;
626
+ /** The status the page lists. Missing on older servers, which list pending proposals only. */
627
+ status?: AgentInboxStatus;
625
628
  /**
626
629
  * The scope whose visits mark what is new: `global`, or `division:{id}` for an inbox filtered on a
627
630
  * division. Missing on older servers.
@@ -677,7 +680,18 @@ interface AgentInboxSubjectGroup {
677
680
  continuesFromPreviousPage: boolean;
678
681
  continuesOnNextPage: boolean;
679
682
  }
683
+ /**
684
+ * What the approval inbox lists (`AgentInboxFilter.status`): proposals that wait for a decision
685
+ * (the default), approved proposals of tools the application executes that wait for its report, and
686
+ * proposals whose execution is uncertain until an approver resolves it.
687
+ */
688
+ type AgentInboxStatus = 'pending' | 'awaiting-application' | 'execution-unknown';
680
689
  interface AgentInboxFilter {
690
+ /**
691
+ * The status the inbox lists, with the same visibility: `pending` by expiry (the default),
692
+ * `awaiting-application` by report deadline, `execution-unknown` by decision.
693
+ */
694
+ status?: AgentInboxStatus;
681
695
  subjectType?: string;
682
696
  agentId?: string;
683
697
  /** Only proposals on subjects of this division; the inbox's visits are then those of the division. */
@@ -903,6 +917,11 @@ interface Conversation extends ConversationSummary {
903
917
  agentVersion: number;
904
918
  messages: Message[];
905
919
  pendingApproval: ApprovalPart | null;
920
+ /**
921
+ * The question the waiting turn asked with `ask_question` and waits for (`run.AllowQuestions()` on
922
+ * the server); missing when the conversation waits for no question and on older servers.
923
+ */
924
+ pendingQuestion?: QuestionPart | null;
906
925
  /** The owner followed by the participants; empty while the conversation is not shared. */
907
926
  members?: ConversationMember[];
908
927
  /** The current invitation-link token; only for the owner. */
@@ -978,6 +997,11 @@ interface Message {
978
997
  authorKind?: MessageAuthorKind | null;
979
998
  /** The title, sender, link and trusted flag of a message the application posted; missing for other messages. */
980
999
  application?: ApplicationMessageDetails | null;
1000
+ /**
1001
+ * The skill an agent message of a person's chat worked in at its end (`run.SkillsInChat()` on the
1002
+ * server); missing for a message without a skill.
1003
+ */
1004
+ skillId?: string | null;
981
1005
  }
982
1006
  /**
983
1007
  * `person` for a message a person wrote; `trigger` for one a trigger wrote into an agent thread;
@@ -1006,7 +1030,38 @@ interface ApplicationMessageLink {
1006
1030
  /** The text of the link; the chat shows its own text without one. */
1007
1031
  label: string | null;
1008
1032
  }
1009
- type MessagePart = TextPart | ToolCallPart | ApprovalPart | ConnectionRequiredPart | FilePart;
1033
+ type MessagePart = TextPart | ToolCallPart | ApprovalPart | ConnectionRequiredPart | FilePart | QuestionPart;
1034
+ /**
1035
+ * `pending` while the turn waits for the answer; `answered` once the addressee chose; `expired` when
1036
+ * nobody answered within the turn's wait limit; `cancelled` when the turn was stopped.
1037
+ */
1038
+ type QuestionStatus = 'pending' | 'answered' | 'expired' | 'cancelled';
1039
+ /**
1040
+ * A question the agent asked with `ask_question` in a person's chat. Only the addressee answers it,
1041
+ * with `NhAssistantApiService.answerQuestion`; the turn waits for the answer as for an approval and
1042
+ * continues with it. Everyone else sees it read-only.
1043
+ */
1044
+ interface QuestionPart {
1045
+ type: 'question';
1046
+ questionId: string;
1047
+ question: string;
1048
+ /** Two to six answers, in order; the answer names the index of one. */
1049
+ choices: string[];
1050
+ /** The person who answers: by default the person whose turn asked. */
1051
+ addresseeActorId: string;
1052
+ /** After this moment an answer is refused with `assistant-question-expired`. */
1053
+ expiresAt: string;
1054
+ status: QuestionStatus;
1055
+ /** The zero-based index of the chosen answer; only sent once it was answered. */
1056
+ answerIndex?: number | null;
1057
+ /** When it was answered, expired or cancelled; only sent then. */
1058
+ closedAt?: string | null;
1059
+ }
1060
+ /** Body of `POST conversations/{id}/questions/{questionId}/answer`. */
1061
+ interface AnswerQuestionRequest {
1062
+ /** The zero-based index of the chosen answer. */
1063
+ choice: number;
1064
+ }
1010
1065
  /**
1011
1066
  * A file a person attached to a message: its name, media type and size in bytes, never its content.
1012
1067
  * The application keeps the file; a later turn opens it again with the rights of that turn.
@@ -1041,9 +1096,10 @@ interface TextPart {
1041
1096
  * `awaiting-approval` waits for a person. A call whose agent proposal closed without running ends
1042
1097
  * as `rejected`, as `not-executed` when the proposal expired, was withdrawn or became stale, or as
1043
1098
  * `failed` when its execution failed before it started; its `resultCode` is then
1044
- * `assistant-proposal-<approval status>`, for example `assistant-proposal-expired`.
1099
+ * `assistant-proposal-<approval status>`, for example `assistant-proposal-expired`. An `ask_question`
1100
+ * call waits as `awaiting-answer` for the person it asked.
1045
1101
  */
1046
- type ToolCallStatus = 'running' | 'succeeded' | 'failed' | 'awaiting-approval' | 'rejected' | 'not-executed';
1102
+ type ToolCallStatus = 'running' | 'succeeded' | 'failed' | 'awaiting-approval' | 'awaiting-answer' | 'rejected' | 'not-executed';
1047
1103
  interface ToolCallPart {
1048
1104
  type: 'tool-call';
1049
1105
  invocationId: string;
@@ -1066,9 +1122,10 @@ interface ToolCallPart {
1066
1122
  * Chat approvals are `pending`, `approved`, `rejected` or `expired`; proposals of agents that run on
1067
1123
  * their own continue through execution (`executing`, `executed`, `execution-failed`,
1068
1124
  * `execution-unknown`, `resolved`, and `awaiting-application` while the application executes the
1069
- * proposal of a tool it declared with `ExecuteInApplication`) or end as `withdrawn`, `stale` or `shadow`.
1125
+ * proposal of a tool it declared with `ExecuteInApplication`) or end as `withdrawn`, `stale` or `shadow`;
1126
+ * a shadow proposal that a newer one for the same objects replaced is `shadow-superseded`.
1070
1127
  */
1071
- type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'withdrawn' | 'stale' | 'executing' | 'awaiting-application' | 'executed' | 'execution-failed' | 'execution-unknown' | 'resolved' | 'shadow';
1128
+ type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'withdrawn' | 'stale' | 'executing' | 'awaiting-application' | 'executed' | 'execution-failed' | 'execution-unknown' | 'resolved' | 'shadow' | 'shadow-superseded';
1072
1129
  interface ApprovalPresentationField {
1073
1130
  label: string;
1074
1131
  value: string;
@@ -1111,6 +1168,29 @@ interface ApprovalPart {
1111
1168
  * in the person's own request with their own rights. Missing for the conversation's own proposals.
1112
1169
  */
1113
1170
  consultation?: ApprovalConsultation | null;
1171
+ /**
1172
+ * The result of the execution, such as the application's code or `report-overdue`. Only sent once the
1173
+ * proposal executed or was handed to the application; missing on older servers.
1174
+ */
1175
+ executionResultCode?: string;
1176
+ /** Until when the application's report is due, for a proposal handed to the application. Only sent then. */
1177
+ executionReportDueAt?: string;
1178
+ /**
1179
+ * `true` when the current user may resolve this uncertain execution in the chat (`resolveApproval`):
1180
+ * they approved it here, it was handed to the application and its outcome is unknown. Only sent then.
1181
+ */
1182
+ canResolve?: boolean;
1183
+ }
1184
+ /**
1185
+ * How the person who approved a proposal in their chat resolves its uncertain hand-off: hand it to the
1186
+ * application again, with a new attempt and report deadline, or confirm its outcome without running it.
1187
+ */
1188
+ type ApprovalResolution = 'hand-to-application' | 'mark-resolved';
1189
+ /** Body of `POST conversations/{id}/approvals/{approvalId}/resolve`. */
1190
+ interface ResolveApprovalRequest {
1191
+ action: ApprovalResolution;
1192
+ /** Why, at most 500 characters. */
1193
+ reason?: string;
1114
1194
  }
1115
1195
  /**
1116
1196
  * How a consulted agent's proposal is decided and whose rights execute it: `asker-decides`, the person
@@ -1246,6 +1326,10 @@ interface ToolCompletedEvent {
1246
1326
  resultPreview: string | null;
1247
1327
  }
1248
1328
  type ApprovalRequiredEvent = ApprovalPart;
1329
+ /** The agent asked a person of the conversation a question; the turn waits for the answer. */
1330
+ type QuestionAskedEvent = QuestionPart;
1331
+ /** The addressee answered the question; the turn continues with the answer. */
1332
+ type QuestionAnsweredEvent = QuestionPart;
1249
1333
  /** The person who asked has to connect an MCP server before the agent can use it. */
1250
1334
  interface ConnectionRequiredEvent {
1251
1335
  serverId: string;
@@ -1281,6 +1365,8 @@ interface NhAssistantSseEventMap {
1281
1365
  'tool.started': ToolStartedEvent;
1282
1366
  'tool.completed': ToolCompletedEvent;
1283
1367
  'approval.required': ApprovalRequiredEvent;
1368
+ 'question.asked': QuestionAskedEvent;
1369
+ 'question.answered': QuestionAnsweredEvent;
1284
1370
  'connection.required': ConnectionRequiredEvent;
1285
1371
  'turn.completed': TurnCompletedEvent;
1286
1372
  'error': AssistantErrorEvent;
@@ -1803,7 +1889,12 @@ interface AdminAgentInput {
1803
1889
  description: string;
1804
1890
  instructions: string;
1805
1891
  toolSelectors: string[];
1806
- mcpServerIds: string[];
1892
+ /**
1893
+ * The MCP servers assigned to the agent, at most 32. Omitted keeps the agent's assignments on update,
1894
+ * which `assignMcpServer` and `unassignMcpServer` change one by one, and assigns none to a new agent;
1895
+ * an empty list removes them all.
1896
+ */
1897
+ mcpServerIds?: string[];
1807
1898
  requiredPolicy: string | null;
1808
1899
  autonomy: AssistantAutonomy;
1809
1900
  /**
@@ -1945,6 +2036,8 @@ type UpdateAdminAgentRequest = AdminAgentInput & {
1945
2036
  */
1946
2037
  type AgentRunState = 'active' | 'paused' | 'stopped' | 'off' | 'configured-off';
1947
2038
  interface AdminAgent extends AdminAgentInput {
2039
+ /** The MCP servers assigned to the agent. */
2040
+ mcpServerIds: string[];
1948
2041
  /** `false` while the agent is stopped; read `runState` for the full state. */
1949
2042
  isEnabled: boolean;
1950
2043
  version: number;
@@ -1982,6 +2075,12 @@ interface AdminAgent extends AdminAgentInput {
1982
2075
  * works on all object types; missing on older servers.
1983
2076
  */
1984
2077
  worksOnDeclared?: boolean;
2078
+ /**
2079
+ * Whether the agent works in people's chats only (`ChatOnly()` in code): it works on no subject,
2080
+ * so it has no triggers, is on no object's page and is never run now, handed work, consulted, put
2081
+ * in shadow or replayed. Missing on older servers and always `false` for an agent created here.
2082
+ */
2083
+ chatOnly?: boolean;
1985
2084
  /**
1986
2085
  * The object types the agent is known to work on, as a hint next to "All objects": those it
1987
2086
  * accepts hand-offs and consultations about, those its triggers name and those of its threads.
@@ -2405,8 +2504,17 @@ interface McpTool {
2405
2504
  status: McpToolStatus;
2406
2505
  /** Remote annotation. Untrusted: shown as a hint only, never used as a default. */
2407
2506
  readOnlyHint: boolean | null;
2507
+ /**
2508
+ * The tool's reviewed settings were stored before any sync of its server saw it, for example for a
2509
+ * server the host cannot reach yet: its status is `missing` and no agent is offered it until the first
2510
+ * sync that sees it makes it `available` with these settings. Missing on older servers.
2511
+ */
2512
+ awaitingSync?: boolean;
2408
2513
  }
2409
- /** Body of `PUT admin/mcp-servers/{id}/tools/{remoteName}`. */
2514
+ /**
2515
+ * Body of `PUT admin/mcp-servers/{id}/tools/{remoteName}`. For a remote name that no sync has seen yet
2516
+ * these are the reviewed settings the first sync that sees the tool keeps.
2517
+ */
2410
2518
  interface UpdateMcpToolRequest {
2411
2519
  isEnabled: boolean;
2412
2520
  effect: McpToolEffect;
@@ -2724,8 +2832,10 @@ interface AgentMetadataEntry {
2724
2832
  editable: boolean;
2725
2833
  /** The largest value in bytes of its JSON. */
2726
2834
  maxBytes: number;
2727
- /** It declares a searchable value with `IndexBy`. */
2835
+ /** It declares a searchable value with `IndexBy`, or several with `IndexByEach`. */
2728
2836
  indexed: boolean;
2837
+ /** It declares several searchable values with `IndexByEach`. */
2838
+ indexedByEach?: boolean;
2729
2839
  }
2730
2840
  /** Where the value of an agent's metadata entry comes from. */
2731
2841
  type AgentMetadataSource = 'code' | 'override' | 'data';
@@ -2757,6 +2867,10 @@ interface AgentMetadata {
2757
2867
  indexed?: boolean;
2758
2868
  /** The searchable value of the value in effect, trimmed and in lowercase. */
2759
2869
  indexValue?: string | null;
2870
+ /** Whether the entry declares several searchable values with `IndexByEach`. */
2871
+ indexedByEach?: boolean;
2872
+ /** The searchable values of an `IndexByEach` entry's value in effect, trimmed, in lowercase and ordered. */
2873
+ indexValues?: string[];
2760
2874
  changedAt?: string | null;
2761
2875
  changedBy?: string | null;
2762
2876
  /**
@@ -3585,8 +3699,18 @@ interface ShadowVariant {
3585
3699
  hasRunSettings: boolean;
3586
3700
  /** Whether the variant receives the live agent's triggers now. */
3587
3701
  inEffect: boolean;
3702
+ /**
3703
+ * The agent package a data variant's parts are linked to: a promotion may then take it as that
3704
+ * package's next version of the live agent (`asPackageVersion`). `null` or missing without links
3705
+ * and on older servers.
3706
+ */
3707
+ packageId?: string | null;
3708
+ /** The version of `packageId` the variant's parts are linked to. */
3709
+ packageVersion?: number | null;
3588
3710
  /** Why a data variant with run settings is out of effect, such as `outside-ceiling`. */
3589
3711
  problem: string | null;
3712
+ /** The version of the variant's definition, which a promotion sends as `expectedVariantVersion`. */
3713
+ version?: number;
3590
3714
  }
3591
3715
  /** `GET admin/agents/{id}/shadow-variants`. */
3592
3716
  interface AgentShadowVariants {
@@ -3598,6 +3722,98 @@ interface AgentShadowVariants {
3598
3722
  /** The variants in code first, then the data variants. */
3599
3723
  variants: ShadowVariant[];
3600
3724
  }
3725
+ /** `POST admin/agents/{id}/promote`: a data shadow variant becomes its live agent's next version. */
3726
+ interface ShadowVariantPromotionRequest {
3727
+ /** The live agent's version the promotion was decided on. */
3728
+ expectedVersion: number;
3729
+ /**
3730
+ * The variant's data skills become the next live versions of the live agent's skills with the same
3731
+ * id, or new skills, which start in shadow; otherwise they go with the variant.
3732
+ */
3733
+ moveSkills?: boolean;
3734
+ /** The variant's version that was evaluated; omitted skips the check. */
3735
+ expectedVariantVersion?: number | null;
3736
+ /** Optional, at most 500 characters, stored with the skill versions the promotion saves. */
3737
+ reason?: string | null;
3738
+ /**
3739
+ * The variant's parts, every one linked to one agent package, become that package's next version
3740
+ * of the live agent with the import's rules: locks, run settings, skills, triggers and metadata; the
3741
+ * live agent keeps its name and is linked to the variant's package version. Not with `moveSkills`.
3742
+ */
3743
+ asPackageVersion?: boolean;
3744
+ }
3745
+ /** The answer of a promotion: the live agent after it, and what moved. */
3746
+ interface ShadowVariantPromotion {
3747
+ /** The live agent with the variant's definition as its new version. */
3748
+ agent: AdminAgent;
3749
+ /** The variant, which was deleted: it never goes live itself. */
3750
+ variantId: string;
3751
+ /** The skills that moved to the live agent, ordered by id. */
3752
+ movedSkills: string[];
3753
+ /**
3754
+ * For a promotion as the package's version: the package the live agent is linked to now, with every
3755
+ * part's outcome; missing otherwise.
3756
+ */
3757
+ package?: AgentPackageImport;
3758
+ }
3759
+
3760
+ /**
3761
+ * Draws diagrams of fenced code blocks for `nh-assistant-document`, such as ```` ```mermaid ````.
3762
+ * The application supplies it and loads its drawing library lazily inside `render`, so a page
3763
+ * without diagrams never downloads it; the library itself depends on no diagram package.
3764
+ */
3765
+ interface NhAssistantDiagramRenderer {
3766
+ /**
3767
+ * The languages of the fenced code blocks it draws, compared without case, for example
3768
+ * `['mermaid']`. Blocks of other languages stay code.
3769
+ */
3770
+ readonly languages: readonly string[];
3771
+ /**
3772
+ * Draws one diagram as SVG markup. The document sanitizes the result before it shows it, so
3773
+ * scripts, event handlers, foreign content and external references never run or load.
3774
+ * Reject, or throw, with a short reason when the source cannot be drawn: the document then
3775
+ * shows the source with that reason.
3776
+ *
3777
+ * @param source The text of the block, untrusted like the rest of the document.
3778
+ * @param language The block's language in lower case.
3779
+ */
3780
+ render(source: string, language: string): Promise<string>;
3781
+ }
3782
+ /** A heading of the rendered document, in document order, for example for a table of contents. */
3783
+ interface NhAssistantDocumentHeading {
3784
+ /** The element id of the heading in the page, unique per document component. */
3785
+ readonly id: string;
3786
+ /** The fragment that links to it within the document, as in `[Setup](#setup)`. */
3787
+ readonly fragment: string;
3788
+ /** 1 to 6. */
3789
+ readonly level: number;
3790
+ /** The heading as plain text. */
3791
+ readonly text: string;
3792
+ }
3793
+ /**
3794
+ * What a link of the document leads to:
3795
+ * - `document`: another document of the bundle, one of the sibling paths;
3796
+ * - `anchor`: a heading of this document;
3797
+ * - `external`: an `https:`, `http:` or `mailto:` address, which opens in a new tab.
3798
+ */
3799
+ type NhAssistantDocumentLinkKind = 'document' | 'anchor' | 'external';
3800
+ /**
3801
+ * A link the reader activated. For `document` and `anchor` links the document prevents the
3802
+ * browser's navigation: the application opens the sibling document, and the document scrolls
3803
+ * to its own heading. An `external` link opens unless the handler calls
3804
+ * `event.preventDefault()`.
3805
+ */
3806
+ interface NhAssistantDocumentLinkEvent {
3807
+ readonly kind: NhAssistantDocumentLinkKind;
3808
+ /** The address as rendered: the bundle path with its fragment, `#fragment` or the external URL. */
3809
+ readonly href: string;
3810
+ /** The sibling path for a `document` link, otherwise `null`. */
3811
+ readonly path: string | null;
3812
+ /** The fragment without `#`, or `null`. */
3813
+ readonly fragment: string | null;
3814
+ /** The click, so the handler can prevent an external link from opening. */
3815
+ readonly event: MouseEvent;
3816
+ }
3601
3817
 
3602
3818
  /** Decides whether the current user may see and use the assistant. */
3603
3819
  interface NhAssistantAccessPolicy {
@@ -3769,8 +3985,20 @@ declare class NhAssistantAllowAllAccessPolicy implements NhAssistantAccessPolicy
3769
3985
  */
3770
3986
  declare function provideNhAssistant(config: NhAssistantConfig): EnvironmentProviders;
3771
3987
 
3772
- /** The library's own translation bundles, keyed by language. All keys live under `nh-assistant.`. */
3773
- declare const NH_ASSISTANT_TRANSLATIONS: Readonly<Record<'en' | 'nl', TranslationObject>>;
3988
+ /** Translation bundles of one entry point, keyed by language. All keys live under `nh-assistant.`. */
3989
+ type NhAssistantTranslationBundles = Readonly<Record<'en' | 'nl', TranslationObject>>;
3990
+ /**
3991
+ * The library's own translation bundles, keyed by language. All keys live under `nh-assistant.`.
3992
+ * The administration's `nh-assistant.admin.` texts come with `@newheap/platform-ai-chat/admin` as
3993
+ * `NH_ASSISTANT_ADMIN_TRANSLATIONS`, so they load with the administration instead of with the panel.
3994
+ */
3995
+ declare const NH_ASSISTANT_TRANSLATIONS: NhAssistantTranslationBundles;
3996
+ /**
3997
+ * Merges `bundles` into `TranslateService` whenever the host loads or replaces a language, and
3998
+ * into the current language at once, until `destroyRef` is destroyed. Keys the host defines under
3999
+ * `nh-assistant.` win. Shared with the secondary entry points that bring texts of their own.
4000
+ */
4001
+ declare function nhAssistantMergeTranslations(translate: TranslateService, bundles: NhAssistantTranslationBundles, destroyRef: DestroyRef): void;
3774
4002
  /**
3775
4003
  * Merges the bundled texts into `TranslateService` whenever the host loads or replaces a
3776
4004
  * language. Host loaders never lose the library texts, the library never pre-empts the
@@ -3783,7 +4011,6 @@ declare class NhAssistantTranslationMerger {
3783
4011
  private readonly destroyRef;
3784
4012
  private started;
3785
4013
  start(): void;
3786
- private ensure;
3787
4014
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantTranslationMerger, never>;
3788
4015
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NhAssistantTranslationMerger>;
3789
4016
  }
@@ -3888,6 +4115,19 @@ declare class NhAssistantApiService {
3888
4115
  */
3889
4116
  uploadFile(conversationId: string, file: Blob, name: string): Observable<NhAssistantUploadEvent>;
3890
4117
  decideApproval(conversationId: string, approvalId: string, request: DecideApprovalRequest): Observable<NhAssistantSseEvent>;
4118
+ /**
4119
+ * Answers the question the chat's waiting turn asked with `ask_question` with the index of one of
4120
+ * its choices, and streams the resumed turn like a decision. Only the question's addressee answers;
4121
+ * the server refuses others with `assistant-question-forbidden` and a question whose wait ended with
4122
+ * `assistant-question-expired`.
4123
+ */
4124
+ answerQuestion(conversationId: string, questionId: string, request: AnswerQuestionRequest): Observable<NhAssistantSseEvent>;
4125
+ /**
4126
+ * Resolves an uncertain hand-off of a proposal the caller approved in this chat (`canResolve`):
4127
+ * `hand-to-application` hands it to the application again, `mark-resolved` confirms its outcome.
4128
+ * Returns the conversation as it is afterwards.
4129
+ */
4130
+ resolveApproval(conversationId: string, approvalId: string, request: ResolveApprovalRequest): Observable<Conversation>;
3891
4131
  cancel(conversationId: string): Observable<void>;
3892
4132
  /** Raises the caller's read position to `sequence`, or to the latest message when omitted. */
3893
4133
  markRead(conversationId: string, sequence?: number): Observable<void>;
@@ -3963,6 +4203,10 @@ declare class NhAssistantAdminApiService {
3963
4203
  getTools(): Observable<ToolCatalogEntry[]>;
3964
4204
  getAgents(): Observable<AdminAgent[]>;
3965
4205
  createAgent(input: AdminAgentInput): Observable<AdminAgent>;
4206
+ /**
4207
+ * Saves an agent's definition when `expectedVersion` is current. Omit `mcpServerIds` to keep its MCP
4208
+ * assignments, which `assignMcpServer` and `unassignMcpServer` change one by one; `[]` removes them.
4209
+ */
3966
4210
  updateAgent(agentId: string, request: UpdateAdminAgentRequest): Observable<AdminAgent>;
3967
4211
  /** Restores a code agent to its definition in code. The run state stays as it is. */
3968
4212
  resetAgent(agentId: string): Observable<AdminAgent>;
@@ -4059,7 +4303,22 @@ declare class NhAssistantAdminApiService {
4059
4303
  * call as `NhAssistantApiService.completeMcpAuthorization`, with the same failure codes.
4060
4304
  */
4061
4305
  completeMcpAuthorization(request: McpCompleteRequest): Observable<McpCompletion>;
4306
+ /**
4307
+ * Enables or disables a tool, sets its effect and its description. A remote name that no sync has
4308
+ * seen yet stores these reviewed settings as a tool that awaits its sync (`awaitingSync`).
4309
+ */
4062
4310
  updateMcpTool(serverId: string, remoteName: string, request: UpdateMcpToolRequest): Observable<McpTool>;
4311
+ /**
4312
+ * Assigns a server to an agent (`PUT admin/mcp-servers/{id}/agents/{agentId}`). Only the assignment
4313
+ * changes, never the agent's definition or version; assigning an assigned server changes nothing.
4314
+ * Answers the server with its `assignedAgentIds`.
4315
+ */
4316
+ assignMcpServer(serverId: string, agentId: string): Observable<McpServer>;
4317
+ /**
4318
+ * Removes a server's assignment to an agent (`DELETE admin/mcp-servers/{id}/agents/{agentId}`); the
4319
+ * agent's definition and version stay. Answers the server with its `assignedAgentIds`.
4320
+ */
4321
+ unassignMcpServer(serverId: string, agentId: string): Observable<McpServer>;
4063
4322
  /**
4064
4323
  * The agent's proposals per tool and agent version in the period: decisions, the rejection rate,
4065
4324
  * feedback per category and the number of different people who gave it.
@@ -4217,6 +4476,15 @@ declare class NhAssistantAdminApiService {
4217
4476
  * more (`UseShadowVariantsAsData`). Create a data variant with `createAgent` and `shadowOf`.
4218
4477
  */
4219
4478
  getShadowVariants(agentId: string): Observable<AgentShadowVariants>;
4479
+ /**
4480
+ * Promotes the data shadow variant `variantId` onto its live agent (`POST admin/agents/{id}/promote`):
4481
+ * its definition becomes the live agent's next version through the update path, with its checks,
4482
+ * locks and audit, its data skills move along when asked, and the variant is deleted. The live agent
4483
+ * keeps its name, MCP servers, metadata, run settings, triggers, state and shadow mode; an agent in
4484
+ * code takes only the fields it can override. Fails with `assistant-not-shadow-variant`,
4485
+ * `assistant-shadow-variants-not-allowed`, `assistant-version-conflict` and `assistant-skill-in-code`.
4486
+ */
4487
+ promoteShadowVariant(variantId: string, request: ShadowVariantPromotionRequest): Observable<ShadowVariantPromotion>;
4220
4488
  /**
4221
4489
  * Exports exactly `agentIds` (1 to 20) as one agent package (`POST admin/agent-packages/export`):
4222
4490
  * agents created here whole, agents in code as an overlay of what data changes on them; never
@@ -4374,7 +4642,9 @@ declare class NhAssistantAgentRunApiService {
4374
4642
  retryRun(runId: string, mode: AgentRunRetryMode): Observable<AgentTriggerReceipt>;
4375
4643
  /**
4376
4644
  * Pending proposals the caller may decide, sorted by expiry, or with `grouped` by parent and subject,
4377
- * with what is new since the caller's last visit (`visitInbox`).
4645
+ * with what is new since the caller's last visit (`visitInbox`). `status` lists the proposals that
4646
+ * wait for the application's report (`awaiting-application`) or for an approver to resolve an
4647
+ * uncertain execution (`execution-unknown`) instead, with the same visibility.
4378
4648
  */
4379
4649
  getInbox(filter?: AgentInboxFilter): Observable<AgentInbox>;
4380
4650
  /**
@@ -4427,6 +4697,11 @@ declare function applyNhAssistantEvent(conversation: Conversation, event: NhAssi
4427
4697
  * closes it, rejected in this conversation, and can no longer be left; the waiting tool call goes on.
4428
4698
  */
4429
4699
  declare function applyNhAssistantApprovalDecision(conversation: Conversation, approvalId: string, decision: ApprovalDecision): Conversation;
4700
+ /**
4701
+ * Records the addressee's answer to a question locally until the server state is reloaded: the
4702
+ * question reads as answered with the chosen index and the turn runs again.
4703
+ */
4704
+ declare function applyNhAssistantQuestionAnswer(conversation: Conversation, questionId: string, choice: number): Conversation;
4430
4705
  /**
4431
4706
  * Applies a live update of another session: `message.created` adds a participant's or the
4432
4707
  * application's message once, where its sequence number puts it; the turn events behave exactly
@@ -4664,6 +4939,11 @@ declare class NhAssistantStore {
4664
4939
  private readonly queueDispatchState;
4665
4940
  private readonly steeringState;
4666
4941
  private readonly submittingState;
4942
+ /**
4943
+ * The client's clock as the store last read it, moved forward when the wait of an open conversation
4944
+ * ends, so a message is sent instead of queued from then on.
4945
+ */
4946
+ private readonly clockState;
4667
4947
  /** Agent proposals the current user rejected in this session and may give feedback on. */
4668
4948
  private readonly feedbackApprovalsState;
4669
4949
  /** The attachments of the next message per conversation; `''` for a new conversation. */
@@ -4734,6 +5014,12 @@ declare class NhAssistantStore {
4734
5014
  * conversation whose last turn failed accepts a new message; an archived one does not.
4735
5015
  */
4736
5016
  readonly canSend: _angular_core.Signal<boolean>;
5017
+ /**
5018
+ * True while the open chat waits for a question or an approval whose lifetime passed by the
5019
+ * client's clock: a message is then sent at once, and the server closes the wait as expired before
5020
+ * the message's turn starts. The composer no longer says that the conversation waits.
5021
+ */
5022
+ readonly waitExpired: _angular_core.Signal<boolean>;
4737
5023
  /** Messages not yet accepted by the server, for the open conversation. Never persisted. */
4738
5024
  readonly queuedMessages: _angular_core.Signal<readonly NhAssistantQueuedMessage[]>;
4739
5025
  /** Sending or queueing is available during a turn and while an approval waits. */
@@ -4773,6 +5059,13 @@ declare class NhAssistantStore {
4773
5059
  * turn, in an agent thread the server allows them as an approver.
4774
5060
  */
4775
5061
  readonly canDecide: _angular_core.Signal<boolean>;
5062
+ /**
5063
+ * True when the current user may answer the question the open chat waits for: it is addressed to
5064
+ * them and still pending (`ask_question`, `run.AllowQuestions()` on the server).
5065
+ */
5066
+ readonly canAnswer: _angular_core.Signal<boolean>;
5067
+ /** The member a pending question of the open conversation is addressed to, when it is someone else. */
5068
+ readonly questionAddressee: _angular_core.Signal<ConversationMember | null>;
4776
5069
  /** The member whose turn runs or waits in the open conversation, when it is someone else. */
4777
5070
  readonly activeMember: _angular_core.Signal<ConversationMember | null>;
4778
5071
  /** Conversations that need attention: running, waiting for approval or unread. Most recent first. */
@@ -4836,12 +5129,26 @@ declare class NhAssistantStore {
4836
5129
  * repeated calls while a decision is in flight.
4837
5130
  */
4838
5131
  decide(decision: ApprovalDecision, reason?: string, approvalId?: string): void;
5132
+ /**
5133
+ * Answers the question the open chat waits for with the choice at `choice` and streams the resumed
5134
+ * turn, as a decision does. Ignores another question, a question addressed to someone else, a choice
5135
+ * the question does not offer and calls while a turn or a decision is in flight. A refused answer,
5136
+ * such as an expired question, shows its error and reads the conversation again.
5137
+ */
5138
+ answerQuestion(questionId: string, choice: number): void;
4839
5139
  /**
4840
5140
  * Decides a proposal of an agent's run with `POST approvals/{id}/decisions`. An approved deferred
4841
5141
  * proposal executes later as a background operation; an inline one wakes the waiting run. The
4842
5142
  * reloaded snapshot shows the outcome and the proposals that remain open.
4843
5143
  */
4844
5144
  private decideProposal;
5145
+ /**
5146
+ * Resolves an uncertain hand-off in the open chat that the current user approved (`canResolve`):
5147
+ * `hand-to-application` hands it to the application again with a new report deadline,
5148
+ * `mark-resolved` confirms its outcome. The conversation the server returns replaces the shown one.
5149
+ * Ignores approvals the user may not resolve and calls while a decision or a turn is in flight.
5150
+ */
5151
+ resolveApproval(approvalId: string, resolution: ApprovalResolution, reason?: string): Promise<void>;
4845
5152
  /** Asks the server to stop the running turn or to abandon a waiting approval of the open conversation. */
4846
5153
  cancel(): Promise<void>;
4847
5154
  private cancelConversation;
@@ -5324,6 +5631,17 @@ interface NhAssistantApprovalChoice {
5324
5631
  approvalId: string;
5325
5632
  decision: ApprovalDecision;
5326
5633
  }
5634
+ /** The answer the user chose for a question of the thread. */
5635
+ interface NhAssistantQuestionAnswer {
5636
+ questionId: string;
5637
+ /** The zero-based index of the chosen answer. */
5638
+ choice: number;
5639
+ }
5640
+ /** How the user resolves the uncertain hand-off of one approval they made in this chat. */
5641
+ interface NhAssistantApprovalResolutionChoice {
5642
+ approvalId: string;
5643
+ resolution: ApprovalResolution;
5644
+ }
5327
5645
  /** Above this number of messages the thread renders through CDK virtual scrolling. */
5328
5646
  declare const NH_ASSISTANT_VIRTUAL_SCROLL_THRESHOLD = 200;
5329
5647
  /**
@@ -5375,6 +5693,13 @@ declare class NhAssistantThreadComponent {
5375
5693
  readonly approvalDecision: _angular_core.OutputEmitterRef<ApprovalDecision>;
5376
5694
  /** The decision about an approval card together with its approval id. */
5377
5695
  readonly approvalChoice: _angular_core.OutputEmitterRef<NhAssistantApprovalChoice>;
5696
+ /** How the user resolves an uncertain hand-off they approved in this chat, with its approval id. */
5697
+ readonly approvalResolution: _angular_core.OutputEmitterRef<NhAssistantApprovalResolutionChoice>;
5698
+ /**
5699
+ * The answer the user chose for a question addressed to them, for example for
5700
+ * `NhAssistantStore.answerQuestion`. Only the addressee of a pending question gets choice buttons.
5701
+ */
5702
+ readonly questionAnswer: _angular_core.OutputEmitterRef<NhAssistantQuestionAnswer>;
5378
5703
  /**
5379
5704
  * The question to ask again after the viewer connected an MCP server from a connection card: the
5380
5705
  * text of the user message the card answered. The panel sends it.
@@ -5418,12 +5743,18 @@ declare class NhAssistantThreadComponent {
5418
5743
  /** Whether and why the current user may decide an approval card. */
5419
5744
  rightFor(approval: ApprovalPart): NhAssistantApprovalRight;
5420
5745
  choose(approval: ApprovalPart, decision: ApprovalDecision): void;
5746
+ resolveApproval(approval: ApprovalPart, resolution: ApprovalResolution): void;
5747
+ /** Whether the current user may answer the question: it waits and is addressed to them. */
5748
+ canAnswer(question: QuestionPart): boolean;
5749
+ /** The name of the person a question is addressed to, or `null` when the application provides none. */
5750
+ addresseeName(question: QuestionPart): string | null;
5751
+ answerQuestion(question: QuestionPart, choice: number): void;
5421
5752
  /** Display name of another person's message, or `null` when the application provides none. */
5422
5753
  authorName(message: Message): string | null;
5423
5754
  private scrollElement;
5424
5755
  private scrollToEnd;
5425
5756
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantThreadComponent, never>;
5426
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantThreadComponent, "nh-assistant-thread", never, { "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "streaming": { "alias": "streaming"; "required": false; "isSignal": true; }; "deciding": { "alias": "deciding"; "required": false; "isSignal": true; }; "markdown": { "alias": "markdown"; "required": false; "isSignal": true; }; "members": { "alias": "members"; "required": false; "isSignal": true; }; "currentActorId": { "alias": "currentActorId"; "required": false; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionOwner": { "alias": "decisionOwner"; "required": false; "isSignal": true; }; "approvalRights": { "alias": "approvalRights"; "required": false; "isSignal": true; }; "writingMessageId": { "alias": "writingMessageId"; "required": false; "isSignal": true; }; }, { "approvalDecision": "approvalDecision"; "approvalChoice": "approvalChoice"; "retryMessage": "retryMessage"; }, never, never, true, never>;
5757
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantThreadComponent, "nh-assistant-thread", never, { "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "streaming": { "alias": "streaming"; "required": false; "isSignal": true; }; "deciding": { "alias": "deciding"; "required": false; "isSignal": true; }; "markdown": { "alias": "markdown"; "required": false; "isSignal": true; }; "members": { "alias": "members"; "required": false; "isSignal": true; }; "currentActorId": { "alias": "currentActorId"; "required": false; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionOwner": { "alias": "decisionOwner"; "required": false; "isSignal": true; }; "approvalRights": { "alias": "approvalRights"; "required": false; "isSignal": true; }; "writingMessageId": { "alias": "writingMessageId"; "required": false; "isSignal": true; }; }, { "approvalDecision": "approvalDecision"; "approvalChoice": "approvalChoice"; "approvalResolution": "approvalResolution"; "questionAnswer": "questionAnswer"; "retryMessage": "retryMessage"; }, never, never, true, never>;
5427
5758
  }
5428
5759
 
5429
5760
  /**
@@ -5445,7 +5776,7 @@ declare class NhAssistantPanelComponent implements AfterViewInit, OnDestroy {
5445
5776
  readonly showConversations: _angular_core.WritableSignal<boolean>;
5446
5777
  readonly showPreferences: _angular_core.WritableSignal<boolean>;
5447
5778
  readonly showShare: _angular_core.WritableSignal<boolean>;
5448
- readonly shareSection: _angular_core.WritableSignal<"members" | "all" | "link">;
5779
+ readonly shareSection: _angular_core.WritableSignal<"members" | "link" | "all">;
5449
5780
  readonly notificationError: _angular_core.WritableSignal<NhAssistantError | null>;
5450
5781
  readonly notificationsLabel: _angular_core.Signal<"nh-assistant.panel.notifications-off" | "nh-assistant.panel.notifications-on">;
5451
5782
  readonly adminRoute: string | any[] | null;
@@ -5465,7 +5796,12 @@ declare class NhAssistantPanelComponent implements AfterViewInit, OnDestroy {
5465
5796
  readonly queuedDraft: _angular_core.WritableSignal<string>;
5466
5797
  private resumeAfterEditing;
5467
5798
  readonly validQueuedDraft: _angular_core.Signal<boolean>;
5468
- readonly composerStatus: _angular_core.Signal<"running" | "waiting-for-approval" | null>;
5799
+ readonly composerStatus: _angular_core.Signal<"running" | "waiting-for-approval" | "waiting-for-answer" | null>;
5800
+ /**
5801
+ * Who the composer says the conversation waits for, when it is someone else: the addressee of a
5802
+ * pending question, otherwise the person whose turn waits.
5803
+ */
5804
+ readonly composerStatusActor: _angular_core.Signal<string | null>;
5469
5805
  /** Name of another participant whose turn runs or waits, or `null`. */
5470
5806
  readonly activeMemberName: _angular_core.Signal<string | null>;
5471
5807
  /** The owner and the person who started the turn may stop it. */
@@ -5506,6 +5842,9 @@ declare class NhAssistantPanelComponent implements AfterViewInit, OnDestroy {
5506
5842
  decide(decision: ApprovalDecision): void;
5507
5843
  /** Decides the approval of a card; in an agent thread several proposals can be open. */
5508
5844
  decideApproval(choice: NhAssistantApprovalChoice): void;
5845
+ resolveApproval(choice: NhAssistantApprovalResolutionChoice): void;
5846
+ /** Answers the question the conversation waits for; only its addressee gets the choices. */
5847
+ answerQuestion(answer: NhAssistantQuestionAnswer): void;
5509
5848
  cancel(): void;
5510
5849
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantPanelComponent, never>;
5511
5850
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantPanelComponent, "nh-assistant-panel", never, {}, {}, never, never, true, never>;
@@ -5548,9 +5887,12 @@ declare class NhAssistantComposerComponent {
5548
5887
  readonly busy: _angular_core.InputSignal<boolean>;
5549
5888
  /** Keeps the send action available next to Stop so the host can queue messages. */
5550
5889
  readonly queueWhileBusy: _angular_core.InputSignal<boolean>;
5551
- /** Announces why sending is temporarily unavailable. */
5552
- readonly status: _angular_core.InputSignal<"running" | "waiting-for-approval" | null>;
5553
- /** Name of the participant whose turn runs or waits, when it is someone else. */
5890
+ /**
5891
+ * Announces why sending is temporarily unavailable: a running turn, a turn that waits for an
5892
+ * approval, or one that waits for the answer to a question the agent asked.
5893
+ */
5894
+ readonly status: _angular_core.InputSignal<"running" | "waiting-for-approval" | "waiting-for-answer" | null>;
5895
+ /** Name of the participant whose turn runs or waits, or who answers the question, when it is someone else. */
5554
5896
  readonly statusActor: _angular_core.InputSignal<string | null>;
5555
5897
  /** False when the user may not stop the running turn, such as another participant's turn. */
5556
5898
  readonly canStop: _angular_core.InputSignal<boolean>;
@@ -5632,9 +5974,9 @@ declare class NhAssistantToolCallCardComponent {
5632
5974
  /**
5633
5975
  * Overall state of a run of tool calls, from most to least urgent. `not-executed` means that every
5634
5976
  * call finished and at least one ended without running, because its proposal expired, was
5635
- * withdrawn or became stale.
5977
+ * withdrawn or became stale. `awaiting-answer` waits for the answer to a question the agent asked.
5636
5978
  */
5637
- type NhAssistantToolCallGroupState = 'awaiting-approval' | 'running' | 'failed' | 'not-executed' | 'succeeded';
5979
+ type NhAssistantToolCallGroupState = 'awaiting-approval' | 'awaiting-answer' | 'running' | 'failed' | 'not-executed' | 'succeeded';
5638
5980
  /**
5639
5981
  * Summarizes consecutive tool calls in one collapsed line that counts along live: the
5640
5982
  * tool that runs now while the assistant works, and how many tools were used and failed
@@ -5669,7 +6011,9 @@ declare function formatNhAssistantCountdown(milliseconds: number): string;
5669
6011
  * another agent the assistant consulted (`consultation`) names that agent and the subject, offers the
5670
6012
  * agent's answer and says that approving runs it with the user's own rights; with a
5671
6013
  * `consultation.leaveRoute` a third action leaves it for the subject's approvers (`leave`), after which
5672
- * the card says that it waits for them.
6014
+ * the card says that it waits for them. A proposal the user approved in their chat whose hand-off to the
6015
+ * application has an unknown outcome (`canResolve`) offers to hand it to the application again or to mark
6016
+ * it resolved (`resolve`).
5673
6017
  */
5674
6018
  declare class NhAssistantApprovalCardComponent {
5675
6019
  /** Names the consulted agent as the status does; the card also works outside `provideNhAssistant`. */
@@ -5696,6 +6040,8 @@ declare class NhAssistantApprovalCardComponent {
5696
6040
  */
5697
6041
  readonly canGiveFeedback: _angular_core.InputSignal<boolean>;
5698
6042
  readonly decide: _angular_core.OutputEmitterRef<ApprovalDecision>;
6043
+ /** How the user resolves an uncertain execution they approved in this chat (`canResolve`). */
6044
+ readonly resolve: _angular_core.OutputEmitterRef<ApprovalResolution>;
5699
6045
  private readonly now;
5700
6046
  private readonly submitted;
5701
6047
  /** The decision this card sent last, so a proposal left for the approvers reads as such at once. */
@@ -5739,6 +6085,11 @@ declare class NhAssistantApprovalCardComponent {
5739
6085
  /** The route at the subject the pending proposal may be left for; `null` when it can only be approved or rejected. */
5740
6086
  readonly leaveRoute: _angular_core.Signal<NhAssistantConsultationLeaveRoute | null>;
5741
6087
  readonly leaveHintId: string;
6088
+ /** The user may resolve this uncertain hand-off: the server says so for the person who approved it. */
6089
+ readonly resolvable: _angular_core.Signal<boolean>;
6090
+ readonly resolveDisabled: _angular_core.Signal<boolean>;
6091
+ readonly resolveHintId: string;
6092
+ private readonly resolving;
5742
6093
  readonly countdown: _angular_core.Signal<string>;
5743
6094
  readonly presentedSummary: _angular_core.Signal<string | null>;
5744
6095
  readonly feedbackAvailable: _angular_core.Signal<boolean>;
@@ -5747,6 +6098,8 @@ declare class NhAssistantApprovalCardComponent {
5747
6098
  /** Translation key of the text shown instead of the buttons when the current user cannot decide. */
5748
6099
  readonly waitingKey: _angular_core.Signal<"nh-assistant.approval.waiting-for-approver" | "nh-assistant.approval.waiting-for-other-approver" | "nh-assistant.approval.waiting-for-asker" | "nh-assistant.approval.waiting-for" | "nh-assistant.approval.waiting-for-participant">;
5749
6100
  constructor();
6101
+ /** Emits a resolution of an uncertain hand-off, at most once until the host reports it is done. */
6102
+ chooseResolution(resolution: ApprovalResolution): void;
5750
6103
  /** Emits a decision; `leave` only for a consulted agent's proposal with a route at the subject. */
5751
6104
  choose(decision: ApprovalDecision): void;
5752
6105
  toggleFeedback(): void;
@@ -5754,7 +6107,43 @@ declare class NhAssistantApprovalCardComponent {
5754
6107
  /** Collapses the question and returns focus to the action that opened it. */
5755
6108
  onFeedbackDismissed(): void;
5756
6109
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantApprovalCardComponent, never>;
5757
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantApprovalCardComponent, "nh-assistant-approval-card", never, { "approval": { "alias": "approval"; "required": true; "isSignal": true; }; "deciding": { "alias": "deciding"; "required": false; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionOwner": { "alias": "decisionOwner"; "required": false; "isSignal": true; }; "waitingFor": { "alias": "waitingFor"; "required": false; "isSignal": true; }; "canGiveFeedback": { "alias": "canGiveFeedback"; "required": false; "isSignal": true; }; }, { "decide": "decide"; }, never, never, true, never>;
6110
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantApprovalCardComponent, "nh-assistant-approval-card", never, { "approval": { "alias": "approval"; "required": true; "isSignal": true; }; "deciding": { "alias": "deciding"; "required": false; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionOwner": { "alias": "decisionOwner"; "required": false; "isSignal": true; }; "waitingFor": { "alias": "waitingFor"; "required": false; "isSignal": true; }; "canGiveFeedback": { "alias": "canGiveFeedback"; "required": false; "isSignal": true; }; }, { "decide": "decide"; "resolve": "resolve"; }, never, never, true, never>;
6111
+ }
6112
+
6113
+ /**
6114
+ * A question the agent asked with `ask_question`: the question with one button per choice for the
6115
+ * person it is addressed to (`canAnswer`), and read-only for everyone else, who sees whom it waits
6116
+ * for. It counts down to the end of its wait. Once answered it marks the chosen answer; an expired or
6117
+ * cancelled question says so. An answer is emitted at most once until the host reports that it is no
6118
+ * longer answering.
6119
+ */
6120
+ declare class NhAssistantQuestionCardComponent {
6121
+ readonly question: _angular_core.InputSignal<QuestionPart>;
6122
+ /** True when the current user is the addressee and may answer, for example `NhAssistantStore.canAnswer`. */
6123
+ readonly canAnswer: _angular_core.InputSignal<boolean>;
6124
+ /** Name of the person the question is addressed to, shown to everyone else; `null` when unknown. */
6125
+ readonly addresseeName: _angular_core.InputSignal<string | null>;
6126
+ /** True while the host submits an answer; disables the choices. */
6127
+ readonly answering: _angular_core.InputSignal<boolean>;
6128
+ /** The zero-based index of the chosen answer. */
6129
+ readonly answer: _angular_core.OutputEmitterRef<number>;
6130
+ readonly questionId: string;
6131
+ private readonly now;
6132
+ private readonly submitted;
6133
+ readonly remainingMs: _angular_core.Signal<number>;
6134
+ /** A pending question whose wait ended reads as expired before the server says so. */
6135
+ readonly effectiveStatus: _angular_core.Signal<QuestionStatus>;
6136
+ readonly actionable: _angular_core.Signal<boolean>;
6137
+ readonly statusIcon: _angular_core.Signal<NhAssistantIconName>;
6138
+ readonly disabled: _angular_core.Signal<boolean>;
6139
+ readonly chosen: _angular_core.Signal<number | null>;
6140
+ readonly chosenText: _angular_core.Signal<string | null>;
6141
+ readonly countdown: _angular_core.Signal<string>;
6142
+ constructor();
6143
+ /** Emits the chosen answer once. */
6144
+ choose(index: number): void;
6145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantQuestionCardComponent, never>;
6146
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantQuestionCardComponent, "nh-assistant-question-card", never, { "question": { "alias": "question"; "required": true; "isSignal": true; }; "canAnswer": { "alias": "canAnswer"; "required": false; "isSignal": true; }; "addresseeName": { "alias": "addresseeName"; "required": false; "isSignal": true; }; "answering": { "alias": "answering"; "required": false; "isSignal": true; }; }, { "answer": "answer"; }, never, never, true, never>;
5758
6147
  }
5759
6148
 
5760
6149
  /** What `nh-assistant-proposal-feedback` stored. */
@@ -5940,7 +6329,7 @@ declare class NhAssistantConnectionRequiredComponent {
5940
6329
  /** Asks the question of the turn again after the account was connected. */
5941
6330
  readonly retry: _angular_core.OutputEmitterRef<void>;
5942
6331
  readonly id: string;
5943
- readonly state: _angular_core.WritableSignal<"failed" | "idle" | "connected" | "connecting">;
6332
+ readonly state: _angular_core.WritableSignal<"failed" | "idle" | "connecting" | "connected">;
5944
6333
  /** Why connecting failed, as a code and translation key. */
5945
6334
  readonly error: _angular_core.WritableSignal<NhAssistantError | null>;
5946
6335
  /** The code of `error`. */
@@ -5968,7 +6357,7 @@ declare class NhAssistantShareComponent {
5968
6357
  /** Emitted when the user leaves the view. */
5969
6358
  readonly closed: _angular_core.OutputEmitterRef<void>;
5970
6359
  /** Show the invitation link, participants, or both (the default for custom hosts). */
5971
- readonly section: _angular_core.InputSignal<"members" | "all" | "link">;
6360
+ readonly section: _angular_core.InputSignal<"members" | "link" | "all">;
5972
6361
  readonly id: string;
5973
6362
  readonly conversation: _angular_core.Signal<Conversation | null>;
5974
6363
  readonly isOwner: _angular_core.Signal<boolean>;
@@ -6036,6 +6425,61 @@ declare class NhAssistantSubjectBadgeComponent {
6036
6425
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantSubjectBadgeComponent, "nh-assistant-subject-badge", never, { "subjectType": { "alias": "subjectType"; "required": true; "isSignal": true; }; "subjectId": { "alias": "subjectId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6037
6426
  }
6038
6427
 
6428
+ type DocumentPart = {
6429
+ readonly kind: 'html';
6430
+ readonly html: SafeHtml;
6431
+ } | {
6432
+ readonly kind: 'diagram';
6433
+ readonly language: string;
6434
+ readonly source: string;
6435
+ };
6436
+ /**
6437
+ * Renders an untrusted Markdown document, for example one file of a skill or knowledge bundle,
6438
+ * with the assistant's safety defaults: inline HTML shows as text, images as their alt text, and
6439
+ * a link keeps its address only for a heading of the document, a sibling of the bundle or an
6440
+ * `https:`, `http:` or `mailto:` address; `javascript:`, `data:` and every other scheme show as
6441
+ * text. Relative links resolve from the document's `path` against `siblingPaths`.
6442
+ *
6443
+ * Fenced code blocks of the languages of `diagramRenderer` become diagrams: the application's
6444
+ * renderer draws them, the document sanitizes its SVG and shows it in a shadow root, and a block
6445
+ * it cannot draw shows its source with the reason. Without a renderer they stay code.
6446
+ *
6447
+ * `linkClick` reports every link the reader activates; `headingsChange` the headings once they
6448
+ * are in the page. The texts are `nh-assistant.document.*`, which `provideNhAssistant` merges;
6449
+ * an application without it starts `NhAssistantTranslationMerger` or translates the keys itself.
6450
+ */
6451
+ declare class NhAssistantDocumentComponent {
6452
+ private readonly markdownRenderer;
6453
+ private readonly sanitizer;
6454
+ private readonly host;
6455
+ private readonly idPrefix;
6456
+ /** The document's Markdown. Treated as untrusted. */
6457
+ readonly markdown: _angular_core.InputSignal<string>;
6458
+ /** The document's own path in its bundle, for example `guides/setup.md`. */
6459
+ readonly path: _angular_core.InputSignal<string | null>;
6460
+ /** The paths of the other documents in the bundle that its links may open. */
6461
+ readonly siblingPaths: _angular_core.InputSignal<readonly string[]>;
6462
+ /** Draws the bundle's diagrams; the application loads its drawing library lazily. */
6463
+ readonly diagramRenderer: _angular_core.InputSignal<NhAssistantDiagramRenderer | null>;
6464
+ /** A link the reader activated; see `NhAssistantDocumentLinkEvent`. */
6465
+ readonly linkClick: _angular_core.OutputEmitterRef<NhAssistantDocumentLinkEvent>;
6466
+ /** The headings, in document order, each time they changed and are in the page. */
6467
+ readonly headingsChange: _angular_core.OutputEmitterRef<readonly NhAssistantDocumentHeading[]>;
6468
+ private readonly rendered;
6469
+ /** The headings of the rendered document. */
6470
+ readonly headings: _angular_core.Signal<readonly NhAssistantDocumentHeading[]>;
6471
+ readonly parts: _angular_core.Signal<readonly DocumentPart[]>;
6472
+ constructor();
6473
+ /**
6474
+ * Scrolls to a heading of the document by its fragment and focuses it; false when the
6475
+ * document has no such heading.
6476
+ */
6477
+ scrollToHeading(fragment: string): boolean;
6478
+ onClick(event: MouseEvent): void;
6479
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantDocumentComponent, never>;
6480
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantDocumentComponent, "nh-assistant-document", never, { "markdown": { "alias": "markdown"; "required": true; "isSignal": true; }; "path": { "alias": "path"; "required": false; "isSignal": true; }; "siblingPaths": { "alias": "siblingPaths"; "required": false; "isSignal": true; }; "diagramRenderer": { "alias": "diagramRenderer"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; "headingsChange": "headingsChange"; }, never, never, true, never>;
6481
+ }
6482
+
6039
6483
  /**
6040
6484
  * Translates the first key that has a translation and otherwise returns the fallback text.
6041
6485
  * Used for server-provided keys (agent names, error message keys, result codes) that the
@@ -6203,5 +6647,5 @@ declare class NhAssistantMarkdownPipe implements PipeTransform {
6203
6647
  */
6204
6648
  declare function nhAssistantMediaTypeOf(file: Pick<File, 'name' | 'type'>, acceptedMediaTypes: readonly string[], mappedExtensions?: readonly AgentUploadExtension[] | null): string;
6205
6649
 
6206
- export { NH_ASSISTANT_ACCESS_POLICY, NH_ASSISTANT_AGENT_PACKAGE_FORMAT, NH_ASSISTANT_AGENT_PACKAGE_FORMAT_VERSION, NH_ASSISTANT_AGENT_PACKAGE_MAX_AGENTS, NH_ASSISTANT_AGENT_PACKAGE_MAX_BYTES, NH_ASSISTANT_CONFIG, NH_ASSISTANT_CONVERSATION_FRAGMENT, NH_ASSISTANT_ERROR_CODES, NH_ASSISTANT_FEEDBACK_CATEGORIES, NH_ASSISTANT_FEEDBACK_GROUPS, NH_ASSISTANT_FETCH, NH_ASSISTANT_ICONS, NH_ASSISTANT_JOIN_FRAGMENT, NH_ASSISTANT_MAX_BULK_FEEDBACK, NH_ASSISTANT_MAX_CUSTOM_INSTRUCTIONS, NH_ASSISTANT_MAX_FEEDBACK_TEXT, NH_ASSISTANT_MAX_PROPOSAL_LOOKUP, NH_ASSISTANT_MAX_SUBJECT_SUMMARY, NH_ASSISTANT_MCP_AUTHORIZATION_MESSAGE, NH_ASSISTANT_MCP_AUTHORIZATION_WINDOW, NH_ASSISTANT_MESSAGE_QUEUED_NOTICE_CODE, NH_ASSISTANT_NO_ANSWER_NOTICE_CODE, NH_ASSISTANT_PACKAGE_LOCK_ALL, NH_ASSISTANT_PACKAGE_LOCK_FIELDS, NH_ASSISTANT_PAGE_CONTEXT_LIMITS, NH_ASSISTANT_PANEL_MOBILE_QUERY, NH_ASSISTANT_PANEL_WIDTH, NH_ASSISTANT_RESULT_PREVIEW_LENGTH, NH_ASSISTANT_RUN_FRAGMENT, NH_ASSISTANT_RUN_HISTORY_MAX_PAGE, NH_ASSISTANT_RUN_RESULT_MAX_LENGTH, NH_ASSISTANT_SERVER_ERROR_CODES, NH_ASSISTANT_SSE_EVENT_TYPES, NH_ASSISTANT_SUBJECT_SEARCH, NH_ASSISTANT_SYSTEM_GLOBAL_ID, NH_ASSISTANT_SYSTEM_SUBJECT_TYPE, NH_ASSISTANT_TRANSLATIONS, NH_ASSISTANT_UPLOAD, NH_ASSISTANT_UPLOAD_HEADER, NH_ASSISTANT_VIRTUAL_SCROLL_THRESHOLD, NhAssistantActivityComponent, NhAssistantAdminApiService, NhAssistantAgentPickerComponent, NhAssistantAgentRunApiService, NhAssistantAllowAllAccessPolicy, NhAssistantApiError, NhAssistantApiService, NhAssistantApprovalCardComponent, NhAssistantClientErrorCodes, NhAssistantComposerComponent, NhAssistantConnectionRequiredComponent, NhAssistantConversationListComponent, NhAssistantLauncherComponent, NhAssistantLiveService, NhAssistantMcpConnectService, NhAssistantMcpConnectionsComponent, NhAssistantMcpPopupAuthorizationWindow, NhAssistantPanelComponent, NhAssistantPanelService, NhAssistantPreferencesComponent, NhAssistantProposalFeedbackComponent, NhAssistantPushService, NhAssistantShareComponent, NhAssistantSseParser, NhAssistantStore, NhAssistantSubjectBadgeComponent, NhAssistantSubjectSummaryService, NhAssistantThreadComponent, NhAssistantToolCallCardComponent, NhAssistantToolCallGroupComponent, NhAssistantTranslationMerger, applyNhAssistantApprovalDecision, applyNhAssistantConversationChange, applyNhAssistantEvent, applyNhAssistantLiveEvent, describeNhAssistantClientContext, formatNhAssistantCountdown, nhAssistantCodeForStatus, nhAssistantConnectMcp, nhAssistantErrorMessageKey, nhAssistantIsUnread, nhAssistantLatestTurnHasText, nhAssistantMcpAuthorizationFromFragment, nhAssistantShareLink, nhAssistantXhrUpload, normalizeNhAssistantClientContext, provideNhAssistant, toNhAssistantError, NH_ASSISTANT_DASH_CASE as ɵNH_ASSISTANT_DASH_CASE, NhAssistantIconComponent as ɵNhAssistantIconComponent, NhAssistantMarkdownPipe as ɵNhAssistantMarkdownPipe, NhAssistantPickerComponent as ɵNhAssistantPickerComponent, NhAssistantSubjectLinkComponent as ɵNhAssistantSubjectLinkComponent, NhAssistantTranslatePipe as ɵNhAssistantTranslatePipe, nhAssistantCodeKeys as ɵnhAssistantCodeKeys, nhAssistantErrorKeys as ɵnhAssistantErrorKeys, nhAssistantErrorOf as ɵnhAssistantErrorOf, nhAssistantMediaTypeOf as ɵnhAssistantMediaTypeOf, nhAssistantReloadOnAgentWork as ɵnhAssistantReloadOnAgentWork, nhAssistantWatchAgentWork as ɵnhAssistantWatchAgentWork, toNhAssistantError as ɵtoNhAssistantError };
6207
- export type { AdminAgent, AdminAgentGroups, AdminAgentInput, AgentAccountability, AgentArtifact, AgentBoard, AgentBoardAgent, AgentBoardList, AgentBoardSubjectType, AgentBoardSummary, AgentBoardVisit, AgentBoardWorksOn, AgentConsultation, AgentConsultationList, AgentConsultationRouteState, AgentConsultationRouteSwitch, AgentConsultationRoutesState, AgentConsultationStatus, AgentDecisionOutcome, AgentElevatedReads, AgentEvaluation, AgentEvaluationCost, AgentEvaluationDecisions, AgentEvaluationDifference, AgentEvaluationFilter, AgentEvaluationRouting, AgentEvaluationRuns, AgentEvaluationTool, AgentExecutionResolution, AgentFeedbackCategoryCount, AgentFeedbackExportFilter, AgentFeedbackFilter, AgentFeedbackItem, AgentFeedbackList, AgentFeedbackListFilter, AgentFeedbackOutcome, AgentFeedbackSummary, AgentFeedbackSummaryRow, AgentGrantSource, AgentGroup, AgentHandOffs, AgentInbox, AgentInboxFilter, AgentInboxGroup, AgentInboxSubjectGroup, AgentInboxVisit, AgentInvalidationCount, AgentLatestRun, AgentMetadata, AgentMetadataEntry, AgentMetadataRequest, AgentMetadataSource, AgentObjectAgent, AgentObjectAgents, AgentPackage, AgentPackageExport, AgentPackageExportOptions, AgentPackageExportRequest, AgentPackageImport, AgentPackageImportOptions, AgentPackageImportRequest, AgentPackageInfo, AgentPackageLink, AgentPackagePart, AgentPackagePartKind, AgentPackagePartOutcome, AgentPackagePreview, AgentPackageUnlink, AgentPackageUnlinkRequest, AgentPackageWarning, AgentPackageWarningCode, AgentProposal, AgentProposalDecision, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalFeedbackCategory, AgentProposalFeedbackGroup, AgentProposalLookup, AgentProposalObject, AgentProposalOrigin, AgentProposalParent, AgentProposalStatus, AgentReplay, AgentReplayList, AgentReplayRequest, AgentRun, AgentRunConfiguration, AgentRunFilter, AgentRunHistory, AgentRunHistoryItem, AgentRunKind, AgentRunList, AgentRunMcpSkip, AgentRunResult, AgentRunRetryMode, AgentRunSettings, AgentRunSettingsRequest, AgentRunState, AgentRunStatus, AgentServiceAccountState, AgentShadowMode, AgentShadowState, AgentShadowVariants, AgentSkillChooser, AgentSkillState, AgentState, AgentSubjectRole, AgentSubjectSearch, AgentSubjectSearchResult, AgentSubjectSummary, AgentSubjectSummaryList, AgentSubjectType, AgentSubjectWork, AgentSubjectWorkAgent, AgentSubjectWorkProposal, AgentSummary, AgentThread, AgentThreadLookup, AgentThreadMemory, AgentTriggerOutcome, AgentTriggerReceipt, AgentUploadExtension, AgentUploads, ApplicationContext, ApplicationContextVersion, ApplicationMessageDetails, ApplicationMessageLink, ApprovalConsultation, ApprovalDecision, ApprovalPart, ApprovalPolicySummary, ApprovalPresentation, ApprovalPresentationField, ApprovalRequiredEvent, ApprovalStatus, ApproverSummary, AssistantAccount, AssistantAddressForm, AssistantAutonomy, AssistantCollaboration, AssistantConfigurationWarning, AssistantDataClassification, AssistantErrorEvent, AssistantPreferences, AssistantResponseLength, AssistantStatus, AssistantStyle, ClientContext, ClientContextEntity, CodeConsultation, CodeHandOff, CodeRunSettings, CodeSkill, CodeTrigger, ConnectionRequiredEvent, ConnectionRequiredPart, ConnectionRequiredReason, ConsultationCeiling, ConsultationExposure, ConsultationSubjectRole, Conversation, ConversationKind, ConversationMember, ConversationPage, ConversationRole, ConversationStatus, ConversationSummary, ConversationThread, ConversationThreadDecision, CreateConversationRequest, DataConsultation, DataConsultationRequest, DataConsultationState, DataConsultationStateRequest, DataHandOff, DataHandOffRequest, DataSkill, DataSkillRequest, DataSkillVersion, DataSkillVersionStatus, DataTrigger, DataTriggerRequest, DataTriggerShadowRequest, DataTriggerVersion, DecideApprovalRequest, DirectoryEntry, FileLimits, FilePart, FileReference, HandOffAllowance, HandOffCeiling, InstructionAssetList, InstructionAssetProblem, InstructionAssetReference, InstructionAssetSummary, InstructionAssetText, LiveAgentWorkChanged, LiveAgentWorkReason, LiveAgentWorkWatch, LiveConversationChanged, LiveConversationEvent, LiveConversationRead, LiveConversationRemoved, LowerFileLimits, McpAuthMode, McpAuthorization, McpAuthorizationStart, McpAuthorizeRequest, McpBuiltInAuthMode, McpCompleteRequest, McpCompletion, McpConnection, McpConnectionScope, McpConnectionStatus, McpConnectionsSummary, McpCustomAuthMode, McpDiscoverRequest, McpDiscovery, McpHeadlessUse, McpOAuthInput, McpOAuthSettings, McpOrganizationConnection, McpReader, McpReaderInput, McpServer, McpServerInput, McpServerTestResult, McpTool, McpToolEffect, McpToolStatus, McpTransport, Message, MessageAuthorKind, MessageDeltaEvent, MessagePart, MessageQueuedEvent, NhAssistantAccessPolicy, NhAssistantActivity, NhAssistantApprovalChoice, NhAssistantApprovalRight, NhAssistantApprovalWaitingFor, NhAssistantAttachment, NhAssistantClientContext, NhAssistantClientErrorCode, NhAssistantConfig, NhAssistantConsultationLeaveRoute, NhAssistantConsultationRoute, NhAssistantError, NhAssistantFetch, NhAssistantIconName, NhAssistantLiveState, NhAssistantMcpAuthorizationHandle, NhAssistantMcpAuthorizationOutcome, NhAssistantMcpAuthorizationWindow, NhAssistantMcpReturnOutcome, NhAssistantMessageEvent, NhAssistantNotice, NhAssistantProposalFeedbackSaved, NhAssistantPushConfig, NhAssistantPushState, NhAssistantQueuedMessage, NhAssistantRawSseMessage, NhAssistantSseEvent, NhAssistantSseEventMap, NhAssistantSseEventType, NhAssistantStatusCodes, NhAssistantSubjectLinkBuilder, NhAssistantSubjectRef, NhAssistantToolCallGroupState, NhAssistantUpload, NhAssistantUploadEvent, NhAssistantUploadRequest, NotificationSettings, PackageAgent, PackageAgentDefinition, PackageConsultation, PackageHandOff, PackagePartLink, PackagePartReference, PackageRunSettings, PackageSkill, PackageTrigger, PushSubscriptionRequest, RunBlock, RunCatalog, RunConfigurationProblem, RunConfigurationProblemKind, RunConfigurationRemoval, SendMessageRequest, SetAgentConsultationRoutesRequest, SetAgentServiceAccountRequest, SetAgentShadowRequest, SetAgentStateRequest, ShadowVariant, ShareLink, SkillApplyMode, SkillCandidateRequest, SkillComparison, SkillComparisonFilter, SkillComparisonTool, SkillVersionStats, StaleKind, StartAgentRequest, TextPart, ToolCallPart, ToolCallStatus, ToolCatalogEffect, ToolCatalogEntry, ToolCompletedEvent, ToolStartedEvent, TriggerCandidateRequest, TriggerComparison, TriggerConflict, TurnCompletedEvent, TurnCompletionStatus, TurnStartedEvent, TurnUsage, UpdateAdminAgentRequest, UpdateApplicationContextRequest, UpdateMcpConnectionRequest, UpdateMcpToolRequest, NhAssistantPickerOption as ɵNhAssistantPickerOption };
6650
+ export { NH_ASSISTANT_ACCESS_POLICY, NH_ASSISTANT_AGENT_PACKAGE_FORMAT, NH_ASSISTANT_AGENT_PACKAGE_FORMAT_VERSION, NH_ASSISTANT_AGENT_PACKAGE_MAX_AGENTS, NH_ASSISTANT_AGENT_PACKAGE_MAX_BYTES, NH_ASSISTANT_CONFIG, NH_ASSISTANT_CONVERSATION_FRAGMENT, NH_ASSISTANT_ERROR_CODES, NH_ASSISTANT_FEEDBACK_CATEGORIES, NH_ASSISTANT_FEEDBACK_GROUPS, NH_ASSISTANT_FETCH, NH_ASSISTANT_ICONS, NH_ASSISTANT_JOIN_FRAGMENT, NH_ASSISTANT_MAX_BULK_FEEDBACK, NH_ASSISTANT_MAX_CUSTOM_INSTRUCTIONS, NH_ASSISTANT_MAX_FEEDBACK_TEXT, NH_ASSISTANT_MAX_PROPOSAL_LOOKUP, NH_ASSISTANT_MAX_SUBJECT_SUMMARY, NH_ASSISTANT_MCP_AUTHORIZATION_MESSAGE, NH_ASSISTANT_MCP_AUTHORIZATION_WINDOW, NH_ASSISTANT_MESSAGE_QUEUED_NOTICE_CODE, NH_ASSISTANT_NO_ANSWER_NOTICE_CODE, NH_ASSISTANT_PACKAGE_LOCK_ALL, NH_ASSISTANT_PACKAGE_LOCK_FIELDS, NH_ASSISTANT_PAGE_CONTEXT_LIMITS, NH_ASSISTANT_PANEL_MOBILE_QUERY, NH_ASSISTANT_PANEL_WIDTH, NH_ASSISTANT_RESULT_PREVIEW_LENGTH, NH_ASSISTANT_RUN_FRAGMENT, NH_ASSISTANT_RUN_HISTORY_MAX_PAGE, NH_ASSISTANT_RUN_RESULT_MAX_LENGTH, NH_ASSISTANT_SERVER_ERROR_CODES, NH_ASSISTANT_SSE_EVENT_TYPES, NH_ASSISTANT_SUBJECT_SEARCH, NH_ASSISTANT_SYSTEM_GLOBAL_ID, NH_ASSISTANT_SYSTEM_SUBJECT_TYPE, NH_ASSISTANT_TRANSLATIONS, NH_ASSISTANT_UPLOAD, NH_ASSISTANT_UPLOAD_HEADER, NH_ASSISTANT_VIRTUAL_SCROLL_THRESHOLD, NhAssistantActivityComponent, NhAssistantAdminApiService, NhAssistantAgentPickerComponent, NhAssistantAgentRunApiService, NhAssistantAllowAllAccessPolicy, NhAssistantApiError, NhAssistantApiService, NhAssistantApprovalCardComponent, NhAssistantClientErrorCodes, NhAssistantComposerComponent, NhAssistantConnectionRequiredComponent, NhAssistantConversationListComponent, NhAssistantDocumentComponent, NhAssistantLauncherComponent, NhAssistantLiveService, NhAssistantMcpConnectService, NhAssistantMcpConnectionsComponent, NhAssistantMcpPopupAuthorizationWindow, NhAssistantPanelComponent, NhAssistantPanelService, NhAssistantPreferencesComponent, NhAssistantProposalFeedbackComponent, NhAssistantPushService, NhAssistantQuestionCardComponent, NhAssistantShareComponent, NhAssistantSseParser, NhAssistantStore, NhAssistantSubjectBadgeComponent, NhAssistantSubjectSummaryService, NhAssistantThreadComponent, NhAssistantToolCallCardComponent, NhAssistantToolCallGroupComponent, NhAssistantTranslationMerger, applyNhAssistantApprovalDecision, applyNhAssistantConversationChange, applyNhAssistantEvent, applyNhAssistantLiveEvent, applyNhAssistantQuestionAnswer, describeNhAssistantClientContext, formatNhAssistantCountdown, nhAssistantCodeForStatus, nhAssistantConnectMcp, nhAssistantErrorMessageKey, nhAssistantIsUnread, nhAssistantLatestTurnHasText, nhAssistantMcpAuthorizationFromFragment, nhAssistantShareLink, nhAssistantXhrUpload, normalizeNhAssistantClientContext, provideNhAssistant, toNhAssistantError, NH_ASSISTANT_DASH_CASE as ɵNH_ASSISTANT_DASH_CASE, NhAssistantIconComponent as ɵNhAssistantIconComponent, NhAssistantMarkdownPipe as ɵNhAssistantMarkdownPipe, NhAssistantPickerComponent as ɵNhAssistantPickerComponent, NhAssistantSubjectLinkComponent as ɵNhAssistantSubjectLinkComponent, NhAssistantTranslatePipe as ɵNhAssistantTranslatePipe, nhAssistantCodeKeys as ɵnhAssistantCodeKeys, nhAssistantErrorKeys as ɵnhAssistantErrorKeys, nhAssistantErrorOf as ɵnhAssistantErrorOf, nhAssistantMediaTypeOf as ɵnhAssistantMediaTypeOf, nhAssistantMergeTranslations as ɵnhAssistantMergeTranslations, nhAssistantReloadOnAgentWork as ɵnhAssistantReloadOnAgentWork, nhAssistantWatchAgentWork as ɵnhAssistantWatchAgentWork, toNhAssistantError as ɵtoNhAssistantError };
6651
+ export type { AdminAgent, AdminAgentGroups, AdminAgentInput, AgentAccountability, AgentArtifact, AgentBoard, AgentBoardAgent, AgentBoardList, AgentBoardSubjectType, AgentBoardSummary, AgentBoardVisit, AgentBoardWorksOn, AgentConsultation, AgentConsultationList, AgentConsultationRouteState, AgentConsultationRouteSwitch, AgentConsultationRoutesState, AgentConsultationStatus, AgentDecisionOutcome, AgentElevatedReads, AgentEvaluation, AgentEvaluationCost, AgentEvaluationDecisions, AgentEvaluationDifference, AgentEvaluationFilter, AgentEvaluationRouting, AgentEvaluationRuns, AgentEvaluationTool, AgentExecutionResolution, AgentFeedbackCategoryCount, AgentFeedbackExportFilter, AgentFeedbackFilter, AgentFeedbackItem, AgentFeedbackList, AgentFeedbackListFilter, AgentFeedbackOutcome, AgentFeedbackSummary, AgentFeedbackSummaryRow, AgentGrantSource, AgentGroup, AgentHandOffs, AgentInbox, AgentInboxFilter, AgentInboxGroup, AgentInboxStatus, AgentInboxSubjectGroup, AgentInboxVisit, AgentInvalidationCount, AgentLatestRun, AgentMetadata, AgentMetadataEntry, AgentMetadataRequest, AgentMetadataSource, AgentObjectAgent, AgentObjectAgents, AgentPackage, AgentPackageExport, AgentPackageExportOptions, AgentPackageExportRequest, AgentPackageImport, AgentPackageImportOptions, AgentPackageImportRequest, AgentPackageInfo, AgentPackageLink, AgentPackagePart, AgentPackagePartKind, AgentPackagePartOutcome, AgentPackagePreview, AgentPackageUnlink, AgentPackageUnlinkRequest, AgentPackageWarning, AgentPackageWarningCode, AgentProposal, AgentProposalDecision, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalFeedbackCategory, AgentProposalFeedbackGroup, AgentProposalLookup, AgentProposalObject, AgentProposalOrigin, AgentProposalParent, AgentProposalStatus, AgentReplay, AgentReplayList, AgentReplayRequest, AgentRun, AgentRunConfiguration, AgentRunFilter, AgentRunHistory, AgentRunHistoryItem, AgentRunKind, AgentRunList, AgentRunMcpSkip, AgentRunResult, AgentRunRetryMode, AgentRunSettings, AgentRunSettingsRequest, AgentRunState, AgentRunStatus, AgentServiceAccountState, AgentShadowMode, AgentShadowState, AgentShadowVariants, AgentSkillChooser, AgentSkillState, AgentState, AgentSubjectRole, AgentSubjectSearch, AgentSubjectSearchResult, AgentSubjectSummary, AgentSubjectSummaryList, AgentSubjectType, AgentSubjectWork, AgentSubjectWorkAgent, AgentSubjectWorkProposal, AgentSummary, AgentThread, AgentThreadLookup, AgentThreadMemory, AgentTriggerOutcome, AgentTriggerReceipt, AgentUploadExtension, AgentUploads, AnswerQuestionRequest, ApplicationContext, ApplicationContextVersion, ApplicationMessageDetails, ApplicationMessageLink, ApprovalConsultation, ApprovalDecision, ApprovalPart, ApprovalPolicySummary, ApprovalPresentation, ApprovalPresentationField, ApprovalRequiredEvent, ApprovalResolution, ApprovalStatus, ApproverSummary, AssistantAccount, AssistantAddressForm, AssistantAutonomy, AssistantCollaboration, AssistantConfigurationWarning, AssistantDataClassification, AssistantErrorEvent, AssistantPreferences, AssistantResponseLength, AssistantStatus, AssistantStyle, ClientContext, ClientContextEntity, CodeConsultation, CodeHandOff, CodeRunSettings, CodeSkill, CodeTrigger, ConnectionRequiredEvent, ConnectionRequiredPart, ConnectionRequiredReason, ConsultationCeiling, ConsultationExposure, ConsultationSubjectRole, Conversation, ConversationKind, ConversationMember, ConversationPage, ConversationRole, ConversationStatus, ConversationSummary, ConversationThread, ConversationThreadDecision, CreateConversationRequest, DataConsultation, DataConsultationRequest, DataConsultationState, DataConsultationStateRequest, DataHandOff, DataHandOffRequest, DataSkill, DataSkillRequest, DataSkillVersion, DataSkillVersionStatus, DataTrigger, DataTriggerRequest, DataTriggerShadowRequest, DataTriggerVersion, DecideApprovalRequest, DirectoryEntry, FileLimits, FilePart, FileReference, HandOffAllowance, HandOffCeiling, InstructionAssetList, InstructionAssetProblem, InstructionAssetReference, InstructionAssetSummary, InstructionAssetText, LiveAgentWorkChanged, LiveAgentWorkReason, LiveAgentWorkWatch, LiveConversationChanged, LiveConversationEvent, LiveConversationRead, LiveConversationRemoved, LowerFileLimits, McpAuthMode, McpAuthorization, McpAuthorizationStart, McpAuthorizeRequest, McpBuiltInAuthMode, McpCompleteRequest, McpCompletion, McpConnection, McpConnectionScope, McpConnectionStatus, McpConnectionsSummary, McpCustomAuthMode, McpDiscoverRequest, McpDiscovery, McpHeadlessUse, McpOAuthInput, McpOAuthSettings, McpOrganizationConnection, McpReader, McpReaderInput, McpServer, McpServerInput, McpServerTestResult, McpTool, McpToolEffect, McpToolStatus, McpTransport, Message, MessageAuthorKind, MessageDeltaEvent, MessagePart, MessageQueuedEvent, NhAssistantAccessPolicy, NhAssistantActivity, NhAssistantApprovalChoice, NhAssistantApprovalResolutionChoice, NhAssistantApprovalRight, NhAssistantApprovalWaitingFor, NhAssistantAttachment, NhAssistantClientContext, NhAssistantClientErrorCode, NhAssistantConfig, NhAssistantConsultationLeaveRoute, NhAssistantConsultationRoute, NhAssistantDiagramRenderer, NhAssistantDocumentHeading, NhAssistantDocumentLinkEvent, NhAssistantDocumentLinkKind, NhAssistantError, NhAssistantFetch, NhAssistantIconName, NhAssistantLiveState, NhAssistantMcpAuthorizationHandle, NhAssistantMcpAuthorizationOutcome, NhAssistantMcpAuthorizationWindow, NhAssistantMcpReturnOutcome, NhAssistantMessageEvent, NhAssistantNotice, NhAssistantProposalFeedbackSaved, NhAssistantPushConfig, NhAssistantPushState, NhAssistantQuestionAnswer, NhAssistantQueuedMessage, NhAssistantRawSseMessage, NhAssistantSseEvent, NhAssistantSseEventMap, NhAssistantSseEventType, NhAssistantStatusCodes, NhAssistantSubjectLinkBuilder, NhAssistantSubjectRef, NhAssistantToolCallGroupState, NhAssistantUpload, NhAssistantUploadEvent, NhAssistantUploadRequest, NotificationSettings, PackageAgent, PackageAgentDefinition, PackageConsultation, PackageHandOff, PackagePartLink, PackagePartReference, PackageRunSettings, PackageSkill, PackageTrigger, PushSubscriptionRequest, QuestionAnsweredEvent, QuestionAskedEvent, QuestionPart, QuestionStatus, ResolveApprovalRequest, RunBlock, RunCatalog, RunConfigurationProblem, RunConfigurationProblemKind, RunConfigurationRemoval, SendMessageRequest, SetAgentConsultationRoutesRequest, SetAgentServiceAccountRequest, SetAgentShadowRequest, SetAgentStateRequest, ShadowVariant, ShadowVariantPromotion, ShadowVariantPromotionRequest, ShareLink, SkillApplyMode, SkillCandidateRequest, SkillComparison, SkillComparisonFilter, SkillComparisonTool, SkillVersionStats, StaleKind, StartAgentRequest, TextPart, ToolCallPart, ToolCallStatus, ToolCatalogEffect, ToolCatalogEntry, ToolCompletedEvent, ToolStartedEvent, TriggerCandidateRequest, TriggerComparison, TriggerConflict, TurnCompletedEvent, TurnCompletionStatus, TurnStartedEvent, TurnUsage, UpdateAdminAgentRequest, UpdateApplicationContextRequest, UpdateMcpConnectionRequest, UpdateMcpToolRequest, NhAssistantPickerOption as ɵNhAssistantPickerOption };