@newheap/platform-ai-chat 0.16.0 → 0.18.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
@@ -103,8 +103,9 @@ interface AgentThreadLookup {
103
103
  interface AgentProposalDecisionRight {
104
104
  canDecide: boolean;
105
105
  /**
106
- * Why the caller may not decide, for example `assistant-four-eyes-required` or
107
- * `assistant-approval-policy-denied`; `null` when they may.
106
+ * Why the caller may not decide, for example `assistant-four-eyes-required`,
107
+ * `assistant-approval-policy-denied` or `assistant-consult-asker-decides` for a consultation's
108
+ * proposal that the person who asked decides in their own chat; `null` when they may.
108
109
  */
109
110
  reasonCode: string | null;
110
111
  }
@@ -441,9 +442,17 @@ interface AgentProposal {
441
442
  executedAt: string | null;
442
443
  /**
443
444
  * The consultation that proposed it, when another assistant consulted the agent for
444
- * `initiatorActorId`; it executes with that person's rights only.
445
+ * `initiatorActorId`; `consultationRoute` says who decides it and whose rights execute it.
445
446
  */
446
447
  consultationId?: string | null;
448
+ /**
449
+ * How a consultation's proposal is decided and whose rights execute it: `asker-decides`, the person
450
+ * who asked (`initiatorActorId`) decides it in their own chat, nobody decides it here;
451
+ * `subject-asker-rights`, the subject's approvers decide it and it runs with the asker's rights;
452
+ * `subject-agent-rights`, the subject's approvers other than the asker decide it and it runs with the
453
+ * agent's own rights (`grantSource`). `null` for a run's proposal; missing on older servers.
454
+ */
455
+ consultationRoute?: NhAssistantConsultationRoute | null;
447
456
  /** The caller's own feedback on the proposal; `null` when they gave none. Missing on older servers. */
448
457
  feedback?: AgentProposalFeedback | null;
449
458
  /**
@@ -488,6 +497,25 @@ interface AgentProposal {
488
497
  * application; `null` for a proposal made in this thread. Missing on older servers.
489
498
  */
490
499
  placedBy?: AgentProposalOrigin | null;
500
+ /**
501
+ * The subject the proposal's subject belonged to when the proposal was made, such as the project of
502
+ * a task, as the application described it; `null` without one. The grouped inbox groups by it.
503
+ * Missing on older servers.
504
+ */
505
+ parent?: AgentProposalParent | null;
506
+ }
507
+ /**
508
+ * The subject a proposal's subject belonged to when the proposal was made. The name is the one recorded
509
+ * then; the type's name and the link follow the application's registration of the type.
510
+ */
511
+ interface AgentProposalParent {
512
+ subjectType: string;
513
+ subjectId: string;
514
+ displayName: string | null;
515
+ /** The name of the parent's type in the caller's language, when the application named it. */
516
+ subjectTypeName?: string | null;
517
+ /** Where the application shows the parent; `null` without a link template. */
518
+ subjectLink?: string | null;
491
519
  }
492
520
  /**
493
521
  * The run that placed a proposal at another object than its own, and the thread it ran in. Its subject
@@ -569,6 +597,11 @@ interface AgentConsultation {
569
597
  proposalCount: number;
570
598
  createdAt: string;
571
599
  endedAt: string | null;
600
+ /**
601
+ * The proposals the consultation left per route, such as `{ 'asker-decides': 1 }`; routes without
602
+ * proposals are left out. Missing on older servers.
603
+ */
604
+ proposalsByRoute?: Partial<Record<NhAssistantConsultationRoute, number>>;
572
605
  }
573
606
  interface AgentConsultationList {
574
607
  items: AgentConsultation[];
@@ -577,15 +610,78 @@ interface AgentConsultationList {
577
610
  interface AgentInbox {
578
611
  items: AgentProposal[];
579
612
  total: number;
613
+ /**
614
+ * The scope whose visits mark what is new: `global`, or `division:{id}` for an inbox filtered on a
615
+ * division. Missing on older servers.
616
+ */
617
+ scopeKey?: string;
618
+ /**
619
+ * When the caller last looked at the inbox in this scope (`visitInbox`), before this read; `null`
620
+ * before the first visit. Missing on older servers.
621
+ */
622
+ lastVisitedAt?: string | null;
623
+ /**
624
+ * The proposals on this page made after `lastVisitedAt`; before the first visit all of them.
625
+ * Missing on older servers, which mark nothing as new.
626
+ */
627
+ newApprovalIds?: string[];
628
+ /**
629
+ * With `grouped: true`, the groups on this page in order. The items are contiguous per group and
630
+ * subject: the first `count` items belong to the first group, and so on. `null` or missing for the
631
+ * flat inbox.
632
+ */
633
+ groups?: AgentInboxGroup[] | null;
634
+ }
635
+ /**
636
+ * One group on a page of the grouped inbox: the parent its proposals recorded, or the subject of
637
+ * proposals without a parent, which holds that subject's own proposals and those of its children.
638
+ */
639
+ interface AgentInboxGroup {
640
+ subjectType: string;
641
+ subjectId: string;
642
+ /** The group's name: its subject's own name, or the name its proposals recorded for the parent. */
643
+ displayName: string | null;
644
+ /** The name of the group's type in the caller's language, when the application named it. */
645
+ subjectTypeName?: string | null;
646
+ /** Where the application shows the group's subject; `null` without a link template. */
647
+ subjectLink?: string | null;
648
+ /** How many of the page's items belong to the group. */
649
+ count: number;
650
+ /** How many proposals of the inbox, with its filters, belong to the group. */
651
+ total: number;
652
+ /** The group started on the page before. */
653
+ continuesFromPreviousPage: boolean;
654
+ /** The group goes on on the page after. */
655
+ continuesOnNextPage: boolean;
656
+ /** The group's subjects on this page in order, the group's own subject first. */
657
+ subjects: AgentInboxSubjectGroup[];
658
+ }
659
+ /** One subject within a group on a page of the grouped inbox; its name and link are those of its items. */
660
+ interface AgentInboxSubjectGroup {
661
+ subjectType: string;
662
+ subjectId: string;
663
+ count: number;
664
+ total: number;
665
+ continuesFromPreviousPage: boolean;
666
+ continuesOnNextPage: boolean;
580
667
  }
581
668
  interface AgentInboxFilter {
582
669
  subjectType?: string;
583
670
  agentId?: string;
671
+ /** Only proposals on subjects of this division; the inbox's visits are then those of the division. */
584
672
  divisionId?: string;
585
673
  runId?: string;
674
+ /** Groups the proposals by parent and subject (`AgentInbox.groups`) instead of by expiry alone. */
675
+ grouped?: boolean;
586
676
  page?: number;
587
677
  itemsPerPage?: number;
588
678
  }
679
+ /** A recorded visit of the inbox in one scope (`visitInbox`). */
680
+ interface AgentInboxVisit {
681
+ /** `global`, or `division:{id}` for the inbox of one division. */
682
+ scopeKey: string;
683
+ visitedAt: string;
684
+ }
589
685
  type AgentProposalDecision = 'approve' | 'reject';
590
686
  interface AgentDecisionOutcome {
591
687
  approvalId: string;
@@ -742,6 +838,20 @@ interface AgentUploads {
742
838
  maxFileBytes: number;
743
839
  /** The most files of one message. */
744
840
  maxFiles: number;
841
+ /**
842
+ * The file name extensions the application mapped to one of `acceptedMediaTypes`
843
+ * (`NhAssistantUploadOptions.MapExtension` on the server). A file without a usable type takes the
844
+ * type of its extension from them before the platform's table, as on the server, and the file picker
845
+ * offers them. Empty, or missing from an older server, when the application maps none.
846
+ */
847
+ mappedExtensions?: AgentUploadExtension[] | null;
848
+ }
849
+ /** A file name extension the application mapped to an accepted media type for uploads. */
850
+ interface AgentUploadExtension {
851
+ /** The extension in lowercase with its dot, for example `.dwg`. */
852
+ extension: string;
853
+ /** The accepted media type it names, for example `application/acad`. */
854
+ mediaType: string;
745
855
  }
746
856
  /**
747
857
  * A file the application keeps, as the upload endpoint returns it and a message names it in
@@ -836,7 +946,8 @@ interface ConversationMember {
836
946
  }
837
947
  interface Message {
838
948
  id: string;
839
- role: 'user' | 'assistant' | 'tool';
949
+ /** `application` for a message the application posted into the conversation. */
950
+ role: 'user' | 'assistant' | 'tool' | 'application';
840
951
  createdAt: string;
841
952
  parts: MessagePart[];
842
953
  /** Position in the conversation; missing on optimistic messages and old servers. */
@@ -845,15 +956,40 @@ interface Message {
845
956
  authorActorId?: string | null;
846
957
  /**
847
958
  * Who wrote the message: a person or a trigger of an agent for user messages, `rule` for the
848
- * summary an agent's rules wrote instead of the model; missing on old servers.
959
+ * summary an agent's rules wrote instead of the model, `application` for a message the
960
+ * application posted; missing on old servers.
849
961
  */
850
962
  authorKind?: MessageAuthorKind | null;
963
+ /** The title, sender, link and trusted flag of a message the application posted; missing for other messages. */
964
+ application?: ApplicationMessageDetails | null;
851
965
  }
852
966
  /**
853
967
  * `person` for a message a person wrote; `trigger` for one a trigger wrote into an agent thread;
854
- * `rule` for an assistant message the agent's rules wrote without a model.
968
+ * `rule` for an assistant message the agent's rules wrote without a model; `application` for a
969
+ * message the application posted into the conversation.
855
970
  */
856
- type MessageAuthorKind = 'person' | 'trigger' | 'rule';
971
+ type MessageAuthorKind = 'person' | 'trigger' | 'rule' | 'application';
972
+ /**
973
+ * What the application said about a message it posted, besides its text: an optional heading, who in
974
+ * the application posted it, where people continue and whether the assistant follows it. The text is
975
+ * the message's `text` part.
976
+ */
977
+ interface ApplicationMessageDetails {
978
+ title: string | null;
979
+ senderName: string | null;
980
+ link: ApplicationMessageLink | null;
981
+ /**
982
+ * The assistant follows the message as the application's instruction (`Trusted` on the server);
983
+ * `false` for a message the assistant reads as information. The thread labels a trusted message.
984
+ */
985
+ trusted: boolean;
986
+ }
987
+ /** A path within the application, which the chat opens through the router, or an `https` address. */
988
+ interface ApplicationMessageLink {
989
+ url: string;
990
+ /** The text of the link; the chat shows its own text without one. */
991
+ label: string | null;
992
+ }
857
993
  type MessagePart = TextPart | ToolCallPart | ApprovalPart | ConnectionRequiredPart | FilePart;
858
994
  /**
859
995
  * A file a person attached to a message: its name, media type and size in bytes, never its content.
@@ -952,6 +1088,41 @@ interface ApprovalPart {
952
1088
  rationale?: string;
953
1089
  /** The newer proposal for the same objects that replaced this withdrawn one. Only sent then. */
954
1090
  supersededByApprovalId?: string;
1091
+ /**
1092
+ * The consultation that proposed it, when the conversation's assistant consulted another agent and
1093
+ * the person who asked decides that agent's proposal here (`asker-decides`). Approving executes it
1094
+ * in the person's own request with their own rights. Missing for the conversation's own proposals.
1095
+ */
1096
+ consultation?: ApprovalConsultation | null;
1097
+ }
1098
+ /**
1099
+ * How a consulted agent's proposal is decided and whose rights execute it: `asker-decides`, the person
1100
+ * who asked decides it in their own chat and it runs with their own rights; `subject-agent-rights`, the
1101
+ * subject's approvers other than the asker decide it and it runs with the agent's own rights;
1102
+ * `subject-asker-rights`, the subject's approvers decide it and it runs with the asker's rights.
1103
+ */
1104
+ type NhAssistantConsultationRoute = 'asker-decides' | 'subject-agent-rights' | 'subject-asker-rights';
1105
+ /** The routes at the subject a person may leave a consulted agent's proposal for (`decision: 'leave'`). */
1106
+ type NhAssistantConsultationLeaveRoute = Exclude<NhAssistantConsultationRoute, 'asker-decides'>;
1107
+ /** Where a proposal the person who asked decides in their own conversation comes from. */
1108
+ interface ApprovalConsultation {
1109
+ /** The consultation record in the consulted agent's thread. */
1110
+ consultationId: string;
1111
+ /** The consulted agent that proposed it. */
1112
+ agentId: string;
1113
+ subjectType: string;
1114
+ subjectId: string;
1115
+ /** The subject's name as the consulted agent's thread knows it; `null` when unknown. */
1116
+ subjectDisplayName: string | null;
1117
+ /**
1118
+ * The route at the subject the person may leave the pending proposal for with the decision `leave`;
1119
+ * `null` when they can only approve or reject it.
1120
+ */
1121
+ leaveRoute: NhAssistantConsultationLeaveRoute | null;
1122
+ /** The consulted agent's answer, bounded, when the consultation's classification allows a preview. */
1123
+ answer: string | null;
1124
+ /** The proposal that waits at the subject since the person left this one for its approvers. */
1125
+ movedToApprovalId: string | null;
955
1126
  }
956
1127
  /** Response of `GET conversations?page=&itemsPerPage=`. */
957
1128
  interface ConversationPage {
@@ -995,7 +1166,11 @@ interface SendMessageRequest {
995
1166
  /** Files the person attaches, as `POST conversations/{id}/files` returned them. */
996
1167
  files?: FileReference[];
997
1168
  }
998
- type ApprovalDecision = 'approve' | 'reject';
1169
+ /**
1170
+ * `approve` or `reject`; for a consulted agent's proposal with a `consultation.leaveRoute` also
1171
+ * `leave`, which leaves it for the subject's approvers instead of deciding it.
1172
+ */
1173
+ type ApprovalDecision = 'approve' | 'reject' | 'leave';
999
1174
  /** Body of `POST conversations/{id}/approvals/{approvalId}/decide`. */
1000
1175
  interface DecideApprovalRequest {
1001
1176
  decision: ApprovalDecision;
@@ -1352,6 +1527,11 @@ interface AdminAgent extends AdminAgentInput {
1352
1527
  stateReason: string | null;
1353
1528
  /** Events that wait while the agent is paused. */
1354
1529
  waitingInputs: number;
1530
+ /**
1531
+ * `true` while the agent is stopped and was off when it stopped: releasing the kill switch switches
1532
+ * it back off, while resuming switches it on. `false` otherwise; missing on older servers.
1533
+ */
1534
+ offBeforeStop?: boolean;
1355
1535
  /** The agent's skills with their states and today's usage; missing or empty without skills. */
1356
1536
  skills?: AgentSkillState[];
1357
1537
  /** The live agent this agent is a shadow variant of; missing or null for an agent that is no variant. */
@@ -1474,11 +1654,58 @@ interface AgentState {
1474
1654
  cancelledRuns: number;
1475
1655
  /** The runs this change started for waiting events by resuming the agent. */
1476
1656
  startedRuns: number;
1657
+ /**
1658
+ * `true` while the agent is stopped and was off when it stopped: releasing the kill switch switches
1659
+ * it back off, while resuming switches it on. `false` otherwise; missing on older servers.
1660
+ */
1661
+ offBeforeStop?: boolean;
1477
1662
  skills?: AgentSkillState[];
1478
1663
  shadowOf?: string | null;
1479
1664
  /** `null` for an agent without runs, which only chats. */
1480
1665
  shadow?: AgentShadowState | null;
1481
1666
  serviceAccount?: AgentServiceAccountState | null;
1667
+ /**
1668
+ * The routes of the agent's consultations, as its consultations in code and as data allow them and
1669
+ * an administrator switched them; `null` when nobody can consult the agent: it has no consultation
1670
+ * in code and none defined as data in effect. Missing on older servers.
1671
+ */
1672
+ consultationRoutes?: AgentConsultationRoutesState | null;
1673
+ }
1674
+ /**
1675
+ * The routes of an agent's consultations: one entry per route, and the last change at runtime. The
1676
+ * consultations are the ceiling: a route none of them allows can never be switched on.
1677
+ */
1678
+ interface AgentConsultationRoutesState {
1679
+ routes: AgentConsultationRouteState[];
1680
+ /** When the routes last changed at runtime; `null` while they follow the code. */
1681
+ changedAt: string | null;
1682
+ changedBy: string | null;
1683
+ reason: string | null;
1684
+ }
1685
+ /** One route of an agent's consultations. */
1686
+ interface AgentConsultationRouteState {
1687
+ route: NhAssistantConsultationRoute;
1688
+ /** Whether a consultation of the agent, in code or as data in effect, allows the route: the ceiling. */
1689
+ allowed: boolean;
1690
+ /** The switch an administrator set: `true` on, `false` off, `null` following the code. */
1691
+ override: boolean | null;
1692
+ /** Whether consultations use the route now: allowed and not switched off. */
1693
+ on: boolean;
1694
+ /** The subject types whose consultation allows the route. */
1695
+ subjectTypes: string[];
1696
+ }
1697
+ /** A switch of a consultation route: on, off, or back to the setting in code. */
1698
+ type AgentConsultationRouteSwitch = 'on' | 'off' | 'code';
1699
+ /**
1700
+ * Body of `POST admin/agents/{id}/consultation-routes`. A route left out keeps its switch; switching
1701
+ * on a route that code does not allow fails with `409 assistant-consult-route-not-allowed`.
1702
+ */
1703
+ interface SetAgentConsultationRoutesRequest {
1704
+ askerDecides?: AgentConsultationRouteSwitch;
1705
+ subjectAgentRights?: AgentConsultationRouteSwitch;
1706
+ subjectAskerRights?: AgentConsultationRouteSwitch;
1707
+ /** Optional, at most 500 characters. */
1708
+ reason?: string | null;
1482
1709
  }
1483
1710
  /** Body of `POST admin/agents/{id}/shadow` and `POST admin/agents/{id}/skills/{skillId}/shadow`. */
1484
1711
  interface SetAgentShadowRequest {
@@ -1988,6 +2215,12 @@ interface RunBlock {
1988
2215
  * agents that work on it. Missing or `null` when the type is known only when the event fires.
1989
2216
  */
1990
2217
  subjectType?: string | null;
2218
+ /**
2219
+ * For a trigger event: the named filters a data trigger on it may select, by name with what each
2220
+ * skips, in the order the application registered them. `null` for other building blocks; missing
2221
+ * on older servers.
2222
+ */
2223
+ filters?: RunBlock[] | null;
1991
2224
  }
1992
2225
  /** Response of `GET admin/run-catalog`: what skills, triggers and run settings defined as data can name. */
1993
2226
  interface RunCatalog {
@@ -2023,6 +2256,34 @@ interface RunCatalog {
2023
2256
  * can only lower them; missing on older servers.
2024
2257
  */
2025
2258
  fileLimits?: FileLimits | null;
2259
+ /**
2260
+ * The application's ceiling of consultations defined as data (`UseConsultationsAsData`): what agents
2261
+ * created here may be consulted with. `null` while consultations exist in code only; missing on
2262
+ * older servers.
2263
+ */
2264
+ consultationCeiling?: ConsultationCeiling | null;
2265
+ }
2266
+ /**
2267
+ * A ceiling in code of consultations defined as data: the routes their proposals may use (empty allows
2268
+ * answers only), whether they may generate the request tool and be seen by MCP clients, and their
2269
+ * highest limits.
2270
+ */
2271
+ interface ConsultationCeiling {
2272
+ routes: NhAssistantConsultationRoute[];
2273
+ allowRequests: boolean;
2274
+ allowMcp: boolean;
2275
+ /** The most tool calls of one consultation. */
2276
+ maxToolCalls: number;
2277
+ /** The longest consultation, in seconds. */
2278
+ maxTimeoutSeconds: number;
2279
+ /** The longest answer, in characters. */
2280
+ maxAnswerChars: number;
2281
+ /** The most thread messages a consulted agent reads. */
2282
+ maxHistoryMessages: number;
2283
+ /** The most consultations defined as data of one agent. */
2284
+ maxConsultations: number;
2285
+ /** The longest instructions of a consultation defined as data. */
2286
+ maxInstructionsLength: number;
2026
2287
  }
2027
2288
  /**
2028
2289
  * File limits: the largest file in bytes, the most pages of one file, the most files of one turn and
@@ -2105,15 +2366,16 @@ interface AssistantAccount {
2105
2366
  detail: string | null;
2106
2367
  }
2107
2368
  /** Which part of the run configuration a problem concerns. */
2108
- type RunConfigurationProblemKind = 'agent' | 'skill' | 'candidate' | 'trigger';
2369
+ type RunConfigurationProblemKind = 'agent' | 'skill' | 'candidate' | 'trigger' | 'consultation';
2109
2370
  /**
2110
2371
  * Data that is out of effect because it no longer fits the code, for example after a deploy removed
2111
- * a profile, policy, rule handler, event or subject set it names.
2372
+ * a profile, policy, rule handler, event or subject set it names. A consultation defined as data may
2373
+ * also stay in effect without the parts that no longer fit, each with a problem.
2112
2374
  */
2113
2375
  interface RunConfigurationProblem {
2114
2376
  agentId: string;
2115
2377
  kind: RunConfigurationProblemKind;
2116
- /** The agent, skill or trigger id. */
2378
+ /** The agent, skill or trigger id; the subject type of a consultation. */
2117
2379
  id: string;
2118
2380
  /** Such as `unknown-event` or `tool-not-covered`. */
2119
2381
  code: string;
@@ -2390,6 +2652,12 @@ interface DataTrigger {
2390
2652
  reason: string | null;
2391
2653
  inEffect: boolean;
2392
2654
  problem: string | null;
2655
+ /**
2656
+ * For an event trigger: the names of the event's filters it applies, which must all accept an event.
2657
+ * A name the event no longer registers keeps the trigger from firing (problem `unknown-filter`).
2658
+ * Missing on older servers.
2659
+ */
2660
+ filters?: string[];
2393
2661
  }
2394
2662
  /** Body of `PUT admin/agents/{id}/triggers/{triggerId}`. */
2395
2663
  interface DataTriggerRequest {
@@ -2415,13 +2683,19 @@ interface DataTriggerRequest {
2415
2683
  /** The trigger's current version; `null` for a new trigger. */
2416
2684
  expectedVersion?: number | null;
2417
2685
  reason?: string | null;
2686
+ /**
2687
+ * For an event trigger: names of the event's filters (`RunBlock.filters`) that must all accept an
2688
+ * event, at most 10; empty applies none. A name the event does not register fails with
2689
+ * `assistant-trigger-filter-not-found`; a schedule takes none.
2690
+ */
2691
+ filters?: string[] | null;
2418
2692
  }
2419
2693
  /** Body of `POST admin/agents/{id}/triggers/{triggerId}/shadow`. */
2420
2694
  interface DataTriggerShadowRequest {
2421
2695
  mode: 'shadow' | 'live';
2422
2696
  reason?: string | null;
2423
2697
  }
2424
- /** Query of the removals of run settings, data skills and data triggers. */
2698
+ /** Query of the removals of run settings, data skills, data triggers and data consultations. */
2425
2699
  interface RunConfigurationRemoval {
2426
2700
  expectedVersion?: number | null;
2427
2701
  reason?: string | null;
@@ -2444,6 +2718,137 @@ interface AgentRunConfiguration {
2444
2718
  runSettings: AgentRunSettings | null;
2445
2719
  /** How an agent in code runs, as its code says; `null` for an agent created here, missing on older servers. */
2446
2720
  codeRunSettings?: CodeRunSettings | null;
2721
+ /** The consultations the agent allows in code, read-only, by subject type; missing on older servers. */
2722
+ codeConsultations?: CodeConsultation[];
2723
+ /** The consultations of the agent defined as data, by subject type; missing on older servers. */
2724
+ dataConsultations?: DataConsultation[];
2725
+ /**
2726
+ * The ceiling within which the agent may get consultations as data: the application's for an agent
2727
+ * created here, the application's and its own together for an agent in code that is consultable as
2728
+ * data. `null` when it may get none; missing on older servers.
2729
+ */
2730
+ consultationCeiling?: ConsultationCeiling | null;
2731
+ }
2732
+ /** The role a person needs on the subject: to ask a consulted agent, or before it may propose. */
2733
+ type ConsultationSubjectRole = Exclude<AgentSubjectRole, 'none'>;
2734
+ /** Where the generated tools of a consultation are offered. */
2735
+ type ConsultationExposure = 'local' | 'agent' | 'mcp';
2736
+ /**
2737
+ * A consultation the agent allows in code with `AllowConsultation`; it cannot change here, apart from
2738
+ * the agent's route switches.
2739
+ */
2740
+ interface CodeConsultation {
2741
+ subjectType: string;
2742
+ description: string | null;
2743
+ /** The routes its registration allows, before the agent's route switches. */
2744
+ allowedRoutes: NhAssistantConsultationRoute[];
2745
+ allowRequests: boolean;
2746
+ exposure: ConsultationExposure[];
2747
+ /** The id of the generated consult tool, which asking agents select. */
2748
+ consultToolId: string;
2749
+ /** The id of the generated request tool; `null` without requests. */
2750
+ requestToolId: string | null;
2751
+ /** The agents whose tool selectors select the consult tool now, by id. */
2752
+ askingAgents: string[];
2753
+ }
2754
+ /**
2755
+ * A consultation defined as data: other assistants may consult the agent about subjects of one type.
2756
+ * It is in effect once saved and answers only when an asking agent selects its consult tool.
2757
+ */
2758
+ interface DataConsultation {
2759
+ subjectType: string;
2760
+ version: number;
2761
+ /** What the asking model reads about when to consult the agent. */
2762
+ description: string;
2763
+ /** Extra instructions of the consulted agent. */
2764
+ instructions: string | null;
2765
+ instructionsHash: string | null;
2766
+ /** The role the asking person needs on the subject. */
2767
+ minimumRole: ConsultationSubjectRole;
2768
+ /**
2769
+ * The policy the asking person must pass, one the application lists with `AddAgentPolicy`; `null`
2770
+ * uses the agent's required policy, else the assistant's access policy.
2771
+ */
2772
+ askerPolicy: string | null;
2773
+ /** The routes as saved; empty for a consultation that only answers. */
2774
+ routes: NhAssistantConsultationRoute[];
2775
+ /** The role the asking person needs before the agent may propose. */
2776
+ proposalRole: ConsultationSubjectRole;
2777
+ /** The approval policy of its proposals; `null` uses the agent's. */
2778
+ proposalPolicy: string | null;
2779
+ maxToolCalls: number;
2780
+ timeoutSeconds: number;
2781
+ maxAnswerChars: number;
2782
+ maxHistoryMessages: number;
2783
+ allowRequests: boolean;
2784
+ /** MCP clients may see its tools, while the ceiling allows MCP. */
2785
+ exposeToMcp: boolean;
2786
+ /** The classification of its answers; `null` uses the agent's. */
2787
+ dataClassification: AssistantDataClassification | null;
2788
+ changedAt: string;
2789
+ changedBy: string;
2790
+ reason: string | null;
2791
+ /** `false` with `problem` when the consultation no longer fits the code. */
2792
+ inEffect: boolean;
2793
+ /** The first problem: the reason it is out of effect when it is. */
2794
+ problem: string | null;
2795
+ /**
2796
+ * Every problem: the reason it is out of effect, or each part that no longer fits and was dropped or
2797
+ * capped, such as `route-not-allowed` or `limit-above-ceiling`.
2798
+ */
2799
+ problems: string[];
2800
+ /** The routes in effect: those saved that still fit the ceiling and the agent, before its route switches. */
2801
+ routesInEffect: NhAssistantConsultationRoute[];
2802
+ /** The id of the generated consult tool, which asking agents select. */
2803
+ consultToolId: string;
2804
+ /** The id of the generated request tool while requests are in effect. */
2805
+ requestToolId: string | null;
2806
+ /** The agents whose tool selectors select the consult tool now, by id: the consultation's second key. */
2807
+ askingAgents: string[];
2808
+ createdAt: string;
2809
+ createdBy: string;
2810
+ }
2811
+ /**
2812
+ * Body of `PUT admin/agents/{id}/consultations/{subjectType}`. Limits left out start at the code's
2813
+ * defaults within the ceiling.
2814
+ */
2815
+ interface DataConsultationRequest {
2816
+ /** Required, at most 1,000 characters. */
2817
+ description: string;
2818
+ /** At most the ceiling's `maxInstructionsLength`, 4,000 characters. */
2819
+ instructions?: string | null;
2820
+ /** `reader` by default. */
2821
+ minimumRole?: ConsultationSubjectRole | null;
2822
+ /** A policy of the run catalog's `agentPolicies`; `null` uses the agent's required policy. */
2823
+ askerPolicy?: string | null;
2824
+ /**
2825
+ * `asker-decides` and at most one of `subject-asker-rights` and `subject-agent-rights`, within the
2826
+ * ceiling; empty keeps the consultation read-only. A route outside the ceiling fails with
2827
+ * `routes: not-allowed`.
2828
+ */
2829
+ routes?: NhAssistantConsultationRoute[];
2830
+ /** `participant` by default. */
2831
+ proposalRole?: ConsultationSubjectRole | null;
2832
+ /** A registered approval policy; `null` uses the agent's. */
2833
+ proposalPolicy?: string | null;
2834
+ /** 0 to 32, at most the ceiling's. */
2835
+ maxToolCalls?: number | null;
2836
+ /** 1 to 600, at most the ceiling's. */
2837
+ timeoutSeconds?: number | null;
2838
+ /** 200 to 32,000, at most the ceiling's. */
2839
+ maxAnswerChars?: number | null;
2840
+ /** 0 to 200, at most the ceiling's. */
2841
+ maxHistoryMessages?: number | null;
2842
+ /** Also generates the request tool; only when the ceiling allows requests. */
2843
+ allowRequests?: boolean;
2844
+ /** MCP clients may see its tools; only when the ceiling allows MCP. */
2845
+ exposeToMcp?: boolean;
2846
+ /** `null` uses the agent's. */
2847
+ dataClassification?: AssistantDataClassification | null;
2848
+ /** The consultation's current version; `null` for a new consultation. */
2849
+ expectedVersion?: number | null;
2850
+ /** Optional, at most 500 characters. */
2851
+ reason?: string | null;
2447
2852
  }
2448
2853
 
2449
2854
  /** Decides whether the current user may see and use the assistant. */
@@ -2836,6 +3241,13 @@ declare class NhAssistantAdminApiService {
2836
3241
  * account that does not exist or may not sign in.
2837
3242
  */
2838
3243
  setServiceAccount(agentId: string, request: SetAgentServiceAccountRequest): Observable<AgentState>;
3244
+ /**
3245
+ * Switches the routes of the agent's consultations on, off or back to the setting in code; a route
3246
+ * left out keeps its switch. Code is the ceiling: switching on a route that no consultation in code
3247
+ * allows fails with `assistant-consult-route-not-allowed`. Returns the agent's state with its
3248
+ * `consultationRoutes`.
3249
+ */
3250
+ setConsultationRoutes(agentId: string, request: SetAgentConsultationRoutesRequest): Observable<AgentState>;
2839
3251
  /**
2840
3252
  * Puts an agent, in code or created here, in exactly `groups` of the run catalog's `agentGroups`
2841
3253
  * and out of the others. The choice wins over the agent's `InGroup` in code. Fails with a field error
@@ -2966,6 +3378,23 @@ declare class NhAssistantAdminApiService {
2966
3378
  removeDataTrigger(agentId: string, triggerId: string, removal?: RunConfigurationRemoval): Observable<void>;
2967
3379
  /** Puts a trigger defined as data in shadow or live. */
2968
3380
  setDataTriggerShadow(agentId: string, triggerId: string, request: DataTriggerShadowRequest): Observable<DataTrigger>;
3381
+ /**
3382
+ * Adds or changes the consultation defined as data of an agent about one subject type, within the
3383
+ * agent's `consultationCeiling`. It is in effect once saved and answers when an asking agent selects
3384
+ * its consult tool. An agent that may get none fails with `assistant-consultations-not-allowed`, an
3385
+ * agent created here without run settings with `assistant-agent-not-configured`, a type the agent
3386
+ * allows consultation about in code with `assistant-consultation-in-code`, more than the ceiling's
3387
+ * `maxConsultations` with `assistant-configuration-limit`, a stale `expectedVersion` with
3388
+ * `assistant-version-conflict` and invalid input with field errors, such as `routes: not-allowed` for
3389
+ * a route outside the ceiling.
3390
+ */
3391
+ saveDataConsultation(agentId: string, subjectType: string, request: DataConsultationRequest): Observable<DataConsultation>;
3392
+ /**
3393
+ * Removes a consultation defined as data: its tools disappear, while its recorded proposals can still
3394
+ * be decided. Fails with `assistant-consultation-not-found` without one and with
3395
+ * `assistant-consultation-in-code` for a consultation in code.
3396
+ */
3397
+ removeDataConsultation(agentId: string, subjectType: string, removal?: RunConfigurationRemoval): Observable<void>;
2969
3398
  private download;
2970
3399
  private request;
2971
3400
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAdminApiService, never>;
@@ -3086,8 +3515,18 @@ declare class NhAssistantAgentRunApiService {
3086
3515
  * again like `startAgent`, with the same outcomes and refusals; a resume answers `queued`.
3087
3516
  */
3088
3517
  retryRun(runId: string, mode: AgentRunRetryMode): Observable<AgentTriggerReceipt>;
3089
- /** Pending proposals the caller may decide, sorted by expiry. */
3518
+ /**
3519
+ * Pending proposals the caller may decide, sorted by expiry, or with `grouped` by parent and subject,
3520
+ * with what is new since the caller's last visit (`visitInbox`).
3521
+ */
3090
3522
  getInbox(filter?: AgentInboxFilter): Observable<AgentInbox>;
3523
+ /**
3524
+ * Records that the caller looked at the inbox now, so it marks the proposals made after this visit
3525
+ * as new. `divisionId` records the visit of the inbox of one division the caller may work in;
3526
+ * otherwise of the whole inbox. Fails with `assistant-subject-not-found` for a division the caller
3527
+ * may not work in.
3528
+ */
3529
+ visitInbox(divisionId?: string | null): Observable<AgentInboxVisit>;
3091
3530
  /**
3092
3531
  * Decides one proposal, bound to the proposal hash the person saw; the server checks the approval
3093
3532
  * policy and the tool's approve policy again. Accepts an inbox proposal or the approval part of an
@@ -3125,11 +3564,16 @@ declare class NhAssistantAgentRunApiService {
3125
3564
  * replaced by the server's `userMessageId` when `turn.started` arrives.
3126
3565
  */
3127
3566
  declare function applyNhAssistantEvent(conversation: Conversation, event: NhAssistantSseEvent, clientMessageId?: string): Conversation;
3128
- /** Records the user's approval decision locally until the server state is reloaded. */
3129
- declare function applyNhAssistantApprovalDecision(conversation: Conversation, approvalId: string, decision: 'approve' | 'reject'): Conversation;
3130
3567
  /**
3131
- * Applies a live update of another session: `message.created` adds a participant's message,
3132
- * the turn events behave exactly like the starting request's stream. Unknown types are ignored.
3568
+ * Records the user's approval decision locally until the server state is reloaded. A consulted
3569
+ * agent's proposal that the user left for the subject's approvers (`leave`) closes here as the server
3570
+ * closes it, rejected in this conversation, and can no longer be left; the waiting tool call goes on.
3571
+ */
3572
+ declare function applyNhAssistantApprovalDecision(conversation: Conversation, approvalId: string, decision: ApprovalDecision): Conversation;
3573
+ /**
3574
+ * Applies a live update of another session: `message.created` adds a participant's or the
3575
+ * application's message once, where its sequence number puts it; the turn events behave exactly
3576
+ * like the starting request's stream. Unknown types are ignored.
3133
3577
  */
3134
3578
  declare function applyNhAssistantLiveEvent(conversation: Conversation, event: LiveConversationEvent): Conversation;
3135
3579
  /** Applies the shared state of a conversation that a live update announced. */
@@ -3289,9 +3733,10 @@ declare const NH_ASSISTANT_MESSAGE_QUEUED_NOTICE_CODE = "assistant-message-queue
3289
3733
  /**
3290
3734
  * Who decides an approval the current user cannot decide: `turn`, the person whose turn created
3291
3735
  * it in a chat; `approver`, an approver of the agent thread's subject; `other-approver`, another
3292
- * approver, because the current user started the work and four-eyes applies.
3736
+ * approver, because the current user started the work and four-eyes applies; `asker`, the person
3737
+ * who consulted the thread's agent, in their own chat.
3293
3738
  */
3294
- type NhAssistantApprovalWaitingFor = 'turn' | 'approver' | 'other-approver';
3739
+ type NhAssistantApprovalWaitingFor = 'turn' | 'approver' | 'other-approver' | 'asker';
3295
3740
  /** The current user's right to decide, or to give feedback on, one approval of the open conversation. */
3296
3741
  interface NhAssistantApprovalRight {
3297
3742
  canDecide: boolean;
@@ -3413,6 +3858,12 @@ declare class NhAssistantStore {
3413
3858
  /** Non-blocking remark about the latest completed turn; shown only while no error is shown. */
3414
3859
  readonly notice: _angular_core.Signal<NhAssistantError | null>;
3415
3860
  readonly lastUsage: _angular_core.Signal<TurnUsage | null>;
3861
+ /**
3862
+ * The answer the running turn of the open conversation writes, while this tab streams the turn or
3863
+ * follows it live; `null` otherwise. Pass it to `nh-assistant-thread` as `writingMessageId`, so
3864
+ * the working indicator stays under that answer when a message arrives after it during the turn.
3865
+ */
3866
+ readonly writingMessageId: _angular_core.Signal<string | null>;
3416
3867
  /** Text of a message the server did not accept, so the composer can offer it again. */
3417
3868
  readonly restoredDraft: _angular_core.Signal<string | null>;
3418
3869
  /** Page context that the next message would send, for the transparency chip. */
@@ -3521,8 +3972,11 @@ declare class NhAssistantStore {
3521
3972
  /**
3522
3973
  * Approves or rejects an approval of the open conversation: `approvalId`, or the pending approval
3523
3974
  * when it is left out. A proposal of an agent's run is decided with its proposal hash through the
3524
- * agent-run endpoint; other approvals resume their turn as a stream. Ignores calls the current
3525
- * user may not make and repeated calls while a decision is in flight.
3975
+ * agent-run endpoint; other approvals resume their turn as a stream. `leave` leaves a consulted
3976
+ * agent's proposal that has a `consultation.leaveRoute` for the subject's approvers; it resumes the
3977
+ * turn like a decision and reads the conversation again, which then names the proposal that waits
3978
+ * at the subject. Ignores calls the current user may not make, `leave` for other approvals and
3979
+ * repeated calls while a decision is in flight.
3526
3980
  */
3527
3981
  decide(decision: ApprovalDecision, reason?: string, approvalId?: string): void;
3528
3982
  /**
@@ -3603,6 +4057,11 @@ declare class NhAssistantStore {
3603
4057
  private onLiveChanged;
3604
4058
  private onLiveRead;
3605
4059
  private onLiveRemoved;
4060
+ /**
4061
+ * Applies a live turn event or message to a conversation this tab shows. While the tab streams a
4062
+ * turn of the conversation, its stream brings the turn's events and its own message, so it applies
4063
+ * only messages that others stored meanwhile: the application's and other people's.
4064
+ */
3606
4065
  private onLiveEvent;
3607
4066
  /**
3608
4067
  * A run or proposal of an agent thread changed, for example a colleague decided a proposal in the
@@ -3988,9 +4447,12 @@ declare const NH_ASSISTANT_VIRTUAL_SCROLL_THRESHOLD = 200;
3988
4447
  * The messages of a conversation as a live log. Assistant text renders as sanitized
3989
4448
  * Markdown, consecutive tool calls as one collapsible group that counts along, and
3990
4449
  * approvals as cards. The files a person attached show by name, type and size. Messages a
3991
- * trigger wrote into an agent thread read as events, not as a person. While a turn runs
3992
- * without visible progress, a working indicator shows the elapsed time. The thread follows
3993
- * new content while the user is at the bottom.
4450
+ * trigger wrote into an agent thread read as events, not as a person, and a message the application
4451
+ * posted reads as the application's, with its sender, title, Markdown text and link, and a label when
4452
+ * the assistant follows it as an instruction. While a turn runs without visible progress, a working
4453
+ * indicator shows the elapsed time: under the answer `writingMessageId` names, also when the
4454
+ * application's or another person's message arrived after it, and at the end without it. The thread
4455
+ * follows new content while the user is at the bottom.
3994
4456
  */
3995
4457
  declare class NhAssistantThreadComponent {
3996
4458
  private readonly injector;
@@ -4019,6 +4481,13 @@ declare class NhAssistantThreadComponent {
4019
4481
  * card of a rejected proposal ask what was wrong.
4020
4482
  */
4021
4483
  readonly approvalRights: _angular_core.InputSignal<ReadonlyMap<string, NhAssistantApprovalRight> | null>;
4484
+ /**
4485
+ * The answer the running turn writes, for example `NhAssistantStore.writingMessageId`. The working
4486
+ * indicator stays under that answer, also when the application's or a colleague's message arrives
4487
+ * after it during the turn. Without it, or when it names no message of `messages`, the indicator
4488
+ * shows at the end of the thread.
4489
+ */
4490
+ readonly writingMessageId: _angular_core.InputSignal<string | null>;
4022
4491
  /** The decision about an approval card, without the approval it belongs to. */
4023
4492
  readonly approvalDecision: _angular_core.OutputEmitterRef<ApprovalDecision>;
4024
4493
  /** The decision about an approval card together with its approval id. */
@@ -4036,9 +4505,17 @@ declare class NhAssistantThreadComponent {
4036
4505
  /**
4037
4506
  * True while the turn runs and nothing else shows progress: before the first part and
4038
4507
  * between tool calls while the model decides what to do next. Streaming text and a
4039
- * running tool group show their own progress; an approval waits for the user.
4508
+ * running tool group show their own progress; an approval waits for the user. With
4509
+ * `writingMessageId`, the answer it names decides, as if the messages after it were not there.
4040
4510
  */
4041
4511
  readonly working: _angular_core.Signal<boolean>;
4512
+ /**
4513
+ * The message in whose row the working indicator shows: the answer `writingMessageId` names.
4514
+ * `null` puts the indicator at the end of the thread.
4515
+ */
4516
+ readonly workingAfterId: _angular_core.Signal<string | null>;
4517
+ /** While a turn runs: the answer `writingMessageId` names, when `messages` holds it. */
4518
+ private readonly answerBeingWritten;
4042
4519
  /** Whole seconds since the running turn started. */
4043
4520
  readonly elapsedSeconds: _angular_core.Signal<number>;
4044
4521
  private readonly turnStartedAt;
@@ -4049,6 +4526,8 @@ declare class NhAssistantThreadComponent {
4049
4526
  trackMessage(_index: number, message: Message): string;
4050
4527
  /** True for a user message a trigger wrote into an agent thread. */
4051
4528
  isTrigger(message: Message): boolean;
4529
+ /** True for a message the application posted into the conversation. */
4530
+ isApplication(message: Message): boolean;
4052
4531
  /** True for an assistant message the agent's rules wrote without a model. */
4053
4532
  isRule(message: Message): boolean;
4054
4533
  /** True for a user message written by another person in a shared conversation. */
@@ -4061,7 +4540,7 @@ declare class NhAssistantThreadComponent {
4061
4540
  private scrollElement;
4062
4541
  private scrollToEnd;
4063
4542
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantThreadComponent, never>;
4064
- 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; }; }, { "approvalDecision": "approvalDecision"; "approvalChoice": "approvalChoice"; "retryMessage": "retryMessage"; }, never, never, true, never>;
4543
+ 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>;
4065
4544
  }
4066
4545
 
4067
4546
  /**
@@ -4224,7 +4703,7 @@ declare class NhAssistantComposerComponent {
4224
4703
  /** True while a file of the next message still uploads. */
4225
4704
  readonly uploading: _angular_core.Signal<boolean>;
4226
4705
  readonly canSend: _angular_core.Signal<boolean>;
4227
- /** The `accept` attribute of the file input. */
4706
+ /** The `accept` attribute of the file input, with the extensions the application mapped. */
4228
4707
  readonly accept: _angular_core.Signal<string>;
4229
4708
  /** The values the attachment texts name: the accepted types, the largest size and the most files. */
4230
4709
  readonly uploadParams: _angular_core.Signal<{
@@ -4301,9 +4780,15 @@ declare function formatNhAssistantCountdown(milliseconds: number): string;
4301
4780
  * proposed arguments and a countdown to expiry. A decision is emitted at most once until
4302
4781
  * the host reports that it is no longer deciding. After the user rejected an agent's proposal
4303
4782
  * (`canGiveFeedback`), a low-key action asks what was wrong. A proposal that closed because it no
4304
- * longer fits shows why, such as "Already done", with the application's explanation.
4783
+ * longer fits shows why, such as "Already done", with the application's explanation. A proposal of
4784
+ * another agent the assistant consulted (`consultation`) names that agent and the subject, offers the
4785
+ * agent's answer and says that approving runs it with the user's own rights; with a
4786
+ * `consultation.leaveRoute` a third action leaves it for the subject's approvers (`leave`), after which
4787
+ * the card says that it waits for them.
4305
4788
  */
4306
4789
  declare class NhAssistantApprovalCardComponent {
4790
+ /** Names the consulted agent as the status does; the card also works outside `provideNhAssistant`. */
4791
+ private readonly store;
4307
4792
  readonly approval: _angular_core.InputSignal<ApprovalPart>;
4308
4793
  /** True while the host submits a decision; disables both buttons. */
4309
4794
  readonly deciding: _angular_core.InputSignal<boolean>;
@@ -4328,6 +4813,8 @@ declare class NhAssistantApprovalCardComponent {
4328
4813
  readonly decide: _angular_core.OutputEmitterRef<ApprovalDecision>;
4329
4814
  private readonly now;
4330
4815
  private readonly submitted;
4816
+ /** The decision this card sent last, so a proposal left for the approvers reads as such at once. */
4817
+ private readonly chosen;
4331
4818
  /** The feedback question is expanded. */
4332
4819
  readonly feedbackOpen: _angular_core.WritableSignal<boolean>;
4333
4820
  /** The feedback was stored; the question thanks the person and the action disappears. */
@@ -4336,9 +4823,25 @@ declare class NhAssistantApprovalCardComponent {
4336
4823
  readonly remainingMs: _angular_core.Signal<number>;
4337
4824
  readonly expired: _angular_core.Signal<boolean>;
4338
4825
  readonly effectiveStatus: _angular_core.Signal<ApprovalStatus>;
4826
+ /** Where a consulted agent's proposal comes from; `null` for the conversation's own proposals. */
4827
+ readonly consultation: _angular_core.Signal<ApprovalConsultation | null>;
4828
+ /**
4829
+ * The translation keys of the consulted agent's name: the name the assistant's status gives it,
4830
+ * then the convention `nh-assistant.agents.{id}.name`; the id when neither translates.
4831
+ */
4832
+ readonly consultedAgentKeys: _angular_core.Signal<string[]>;
4833
+ /** The subject the consulted agent was asked about, by name or else by id. */
4834
+ readonly consultedSubject: _angular_core.Signal<string | null>;
4835
+ /**
4836
+ * The user left the consulted agent's proposal for the subject's approvers: the server names the
4837
+ * proposal that waits there, or this card just sent the decision and it was accepted.
4838
+ */
4839
+ readonly leftForApprovers: _angular_core.Signal<boolean>;
4840
+ /** The status the card shows: `moved` for a proposal left for the subject's approvers. */
4841
+ readonly shownStatus: _angular_core.Signal<ApprovalStatus | "moved">;
4339
4842
  /**
4340
4843
  * Translation key of the status: the kind of a stale proposal, "replaced" for a superseded one,
4341
- * otherwise the status itself.
4844
+ * "left for approvers" for a consulted agent's proposal the user left, otherwise the status itself.
4342
4845
  */
4343
4846
  readonly statusKey: _angular_core.Signal<string>;
4344
4847
  /** Why the agent's rules proposed it; model proposals have none. */
@@ -4348,14 +4851,18 @@ declare class NhAssistantApprovalCardComponent {
4348
4851
  readonly actionable: _angular_core.Signal<boolean>;
4349
4852
  readonly succeeded: _angular_core.Signal<boolean>;
4350
4853
  readonly disabled: _angular_core.Signal<boolean>;
4854
+ /** The route at the subject the pending proposal may be left for; `null` when it can only be approved or rejected. */
4855
+ readonly leaveRoute: _angular_core.Signal<NhAssistantConsultationLeaveRoute | null>;
4856
+ readonly leaveHintId: string;
4351
4857
  readonly countdown: _angular_core.Signal<string>;
4352
4858
  readonly presentedSummary: _angular_core.Signal<string | null>;
4353
4859
  readonly feedbackAvailable: _angular_core.Signal<boolean>;
4354
4860
  readonly feedbackIds: _angular_core.Signal<string[]>;
4355
4861
  readonly feedbackPanelId: string;
4356
4862
  /** Translation key of the text shown instead of the buttons when the current user cannot decide. */
4357
- readonly waitingKey: _angular_core.Signal<"nh-assistant.approval.waiting-for-approver" | "nh-assistant.approval.waiting-for-other-approver" | "nh-assistant.approval.waiting-for" | "nh-assistant.approval.waiting-for-participant">;
4863
+ 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">;
4358
4864
  constructor();
4865
+ /** Emits a decision; `leave` only for a consulted agent's proposal with a route at the subject. */
4359
4866
  choose(decision: ApprovalDecision): void;
4360
4867
  toggleFeedback(): void;
4361
4868
  onFeedbackSaved(): void;
@@ -4800,5 +5307,16 @@ declare class NhAssistantMarkdownPipe implements PipeTransform {
4800
5307
  static ɵpipe: _angular_core.ɵɵPipeDeclaration<NhAssistantMarkdownPipe, "nhAssistantMarkdown", true>;
4801
5308
  }
4802
5309
 
4803
- export { NH_ASSISTANT_ACCESS_POLICY, 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_PAGE_CONTEXT_LIMITS, NH_ASSISTANT_PANEL_MOBILE_QUERY, NH_ASSISTANT_PANEL_WIDTH, NH_ASSISTANT_RESULT_PREVIEW_LENGTH, 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, nhAssistantReloadOnAgentWork as ɵnhAssistantReloadOnAgentWork, nhAssistantWatchAgentWork as ɵnhAssistantWatchAgentWork, toNhAssistantError as ɵtoNhAssistantError };
4804
- export type { AdminAgent, AdminAgentGroups, AdminAgentInput, AgentAccountability, AgentArtifact, AgentBoard, AgentBoardAgent, AgentBoardList, AgentBoardSubjectType, AgentBoardSummary, AgentBoardVisit, AgentBoardWorksOn, AgentConsultation, AgentConsultationList, AgentConsultationStatus, AgentDecisionOutcome, AgentElevatedReads, AgentEvaluation, AgentEvaluationCost, AgentEvaluationDecisions, AgentEvaluationDifference, AgentEvaluationFilter, AgentEvaluationRouting, AgentEvaluationRuns, AgentEvaluationTool, AgentExecutionResolution, AgentFeedbackCategoryCount, AgentFeedbackExportFilter, AgentFeedbackFilter, AgentFeedbackItem, AgentFeedbackList, AgentFeedbackListFilter, AgentFeedbackOutcome, AgentFeedbackSummary, AgentFeedbackSummaryRow, AgentGrantSource, AgentGroup, AgentInbox, AgentInboxFilter, AgentInvalidationCount, AgentLatestRun, AgentObjectAgent, AgentObjectAgents, AgentProposal, AgentProposalDecision, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalFeedbackCategory, AgentProposalFeedbackGroup, AgentProposalLookup, AgentProposalObject, AgentProposalOrigin, AgentProposalStatus, AgentReplay, AgentReplayList, AgentReplayRequest, AgentRun, AgentRunConfiguration, AgentRunFilter, AgentRunHistory, AgentRunHistoryItem, AgentRunKind, AgentRunList, AgentRunMcpSkip, AgentRunResult, AgentRunRetryMode, AgentRunSettings, AgentRunSettingsRequest, AgentRunState, AgentRunStatus, AgentServiceAccountState, AgentShadowMode, AgentShadowState, AgentSkillChooser, AgentSkillState, AgentState, AgentSubjectRole, AgentSubjectSearch, AgentSubjectSearchResult, AgentSubjectSummary, AgentSubjectSummaryList, AgentSubjectType, AgentSubjectWork, AgentSubjectWorkAgent, AgentSubjectWorkProposal, AgentSummary, AgentThread, AgentThreadLookup, AgentThreadMemory, AgentTriggerOutcome, AgentTriggerReceipt, AgentUploads, ApplicationContext, ApplicationContextVersion, ApprovalDecision, ApprovalPart, ApprovalPolicySummary, ApprovalPresentation, ApprovalPresentationField, ApprovalRequiredEvent, ApprovalStatus, ApproverSummary, AssistantAccount, AssistantAddressForm, AssistantAutonomy, AssistantCollaboration, AssistantConfigurationWarning, AssistantDataClassification, AssistantErrorEvent, AssistantPreferences, AssistantResponseLength, AssistantStatus, AssistantStyle, ClientContext, ClientContextEntity, CodeRunSettings, CodeSkill, CodeTrigger, ConnectionRequiredEvent, ConnectionRequiredPart, ConnectionRequiredReason, Conversation, ConversationKind, ConversationMember, ConversationPage, ConversationRole, ConversationStatus, ConversationSummary, ConversationThread, ConversationThreadDecision, CreateConversationRequest, DataSkill, DataSkillRequest, DataSkillVersion, DataSkillVersionStatus, DataTrigger, DataTriggerRequest, DataTriggerShadowRequest, DecideApprovalRequest, DirectoryEntry, FileLimits, FilePart, FileReference, 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, 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, PushSubscriptionRequest, RunBlock, RunCatalog, RunConfigurationProblem, RunConfigurationProblemKind, RunConfigurationRemoval, SendMessageRequest, SetAgentServiceAccountRequest, SetAgentShadowRequest, SetAgentStateRequest, ShareLink, SkillApplyMode, SkillCandidateRequest, SkillComparison, SkillComparisonFilter, SkillComparisonTool, SkillVersionStats, StaleKind, StartAgentRequest, TextPart, ToolCallPart, ToolCallStatus, ToolCatalogEffect, ToolCatalogEntry, ToolCompletedEvent, ToolStartedEvent, TriggerConflict, TurnCompletedEvent, TurnCompletionStatus, TurnStartedEvent, TurnUsage, UpdateAdminAgentRequest, UpdateApplicationContextRequest, UpdateMcpConnectionRequest, UpdateMcpToolRequest, NhAssistantPickerOption as ɵNhAssistantPickerOption };
5310
+ /**
5311
+ * The media type a chosen file uploads as, lowercase and without parameters, by the same rule as the
5312
+ * server. A browser gives no type, or a generic one, for a file its system does not know, and some
5313
+ * systems name an extension after the program that opens it, such as `application/vnd.ms-excel` for
5314
+ * a `.csv` file; the file name's extension then names the type, but only a type of
5315
+ * `acceptedMediaTypes`: the type the application mapped the extension to (`mappedExtensions`),
5316
+ * otherwise the platform's. A specific type stays as it is, so a type that is not accepted is refused
5317
+ * whatever the extension. Without a type and an accepted extension, `application/octet-stream`.
5318
+ */
5319
+ declare function nhAssistantMediaTypeOf(file: Pick<File, 'name' | 'type'>, acceptedMediaTypes: readonly string[], mappedExtensions?: readonly AgentUploadExtension[] | null): string;
5320
+
5321
+ export { NH_ASSISTANT_ACCESS_POLICY, 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_PAGE_CONTEXT_LIMITS, NH_ASSISTANT_PANEL_MOBILE_QUERY, NH_ASSISTANT_PANEL_WIDTH, NH_ASSISTANT_RESULT_PREVIEW_LENGTH, 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 };
5322
+ 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, AgentInbox, AgentInboxFilter, AgentInboxGroup, AgentInboxSubjectGroup, AgentInboxVisit, AgentInvalidationCount, AgentLatestRun, AgentObjectAgent, AgentObjectAgents, 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, 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, CodeRunSettings, CodeSkill, CodeTrigger, ConnectionRequiredEvent, ConnectionRequiredPart, ConnectionRequiredReason, ConsultationCeiling, ConsultationExposure, ConsultationSubjectRole, Conversation, ConversationKind, ConversationMember, ConversationPage, ConversationRole, ConversationStatus, ConversationSummary, ConversationThread, ConversationThreadDecision, CreateConversationRequest, DataConsultation, DataConsultationRequest, DataSkill, DataSkillRequest, DataSkillVersion, DataSkillVersionStatus, DataTrigger, DataTriggerRequest, DataTriggerShadowRequest, DecideApprovalRequest, DirectoryEntry, FileLimits, FilePart, FileReference, 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, PushSubscriptionRequest, RunBlock, RunCatalog, RunConfigurationProblem, RunConfigurationProblemKind, RunConfigurationRemoval, SendMessageRequest, SetAgentConsultationRoutesRequest, SetAgentServiceAccountRequest, SetAgentShadowRequest, SetAgentStateRequest, ShareLink, SkillApplyMode, SkillCandidateRequest, SkillComparison, SkillComparisonFilter, SkillComparisonTool, SkillVersionStats, StaleKind, StartAgentRequest, TextPart, ToolCallPart, ToolCallStatus, ToolCatalogEffect, ToolCatalogEntry, ToolCompletedEvent, ToolStartedEvent, TriggerConflict, TurnCompletedEvent, TurnCompletionStatus, TurnStartedEvent, TurnUsage, UpdateAdminAgentRequest, UpdateApplicationContextRequest, UpdateMcpConnectionRequest, UpdateMcpToolRequest, NhAssistantPickerOption as ɵNhAssistantPickerOption };