@newheap/platform-ai-chat 0.15.0 → 0.17.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.
@@ -1,8 +1,8 @@
1
+ import { NgTemplateOutlet, DatePipe, DOCUMENT } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
3
  import { inject, ElementRef, Injector, input, output, signal, computed, DestroyRef, afterNextRender, ChangeDetectionStrategy, Component, viewChild, effect, untracked } from '@angular/core';
3
4
  import { TranslatePipe, TranslateService } from '@ngx-translate/core';
4
5
  import { NhAssistantAgentRunApiService, ɵnhAssistantErrorKeys as _nhAssistantErrorKeys, NH_ASSISTANT_MAX_PROPOSAL_LOOKUP, ɵtoNhAssistantError as _toNhAssistantError, ɵNhAssistantIconComponent as _NhAssistantIconComponent, ɵNhAssistantSubjectLinkComponent as _NhAssistantSubjectLinkComponent, NhAssistantProposalFeedbackComponent, ɵNhAssistantTranslatePipe as _NhAssistantTranslatePipe, ɵnhAssistantWatchAgentWork as _nhAssistantWatchAgentWork, ɵnhAssistantReloadOnAgentWork as _nhAssistantReloadOnAgentWork, ɵnhAssistantCodeKeys as _nhAssistantCodeKeys, NhAssistantApiError, ɵNhAssistantMarkdownPipe as _NhAssistantMarkdownPipe, NhAssistantPanelService, NhAssistantStore, NH_ASSISTANT_SYSTEM_GLOBAL_ID, ɵNhAssistantPickerComponent as _NhAssistantPickerComponent, NH_ASSISTANT_SYSTEM_SUBJECT_TYPE } from '@newheap/platform-ai-chat';
5
- import { DatePipe, DOCUMENT } from '@angular/common';
6
6
  import { Subscription, forkJoin, map } from 'rxjs';
7
7
 
8
8
  /**
@@ -18,7 +18,10 @@ import { Subscription, forkJoin, map } from 'rxjs';
18
18
  * replaced, as a closed card when it closes while shown, or when an approval is refused because of
19
19
  * it, until the person dismisses it. It reads those proposals by id with one lookup, never through
20
20
  * their threads. A proposal that a run placed here from another subject, such as a run for the whole
21
- * application, says so and offers that run's conversation through `openConversation`.
21
+ * application, says so and offers that run's conversation through `openConversation`. With `groups`
22
+ * from the grouped inbox the list shows a header per group and per subject, optionally per run
23
+ * (`groupByRun`), and "Select group" selects only the group's pending proposals in this list that
24
+ * the caller may decide, never those on another page. `newIds` marks proposals as new.
22
25
  */
23
26
  class NhAssistantAgentProposalsComponent {
24
27
  constructor() {
@@ -40,6 +43,16 @@ class NhAssistantAgentProposalsComponent {
40
43
  * it closes.
41
44
  */
42
45
  this.holdClosedCards = input(false, ...(ngDevMode ? [{ debugName: "holdClosedCards" }] : []));
46
+ /**
47
+ * The groups of the grouped inbox (`AgentInbox.groups`) for `proposals` in the order the inbox gave
48
+ * them: the first `count` proposals belong to the first group, and so on. Without groups, or when
49
+ * they do not describe `proposals`, the list is flat.
50
+ */
51
+ this.groups = input(null, ...(ngDevMode ? [{ debugName: "groups" }] : []));
52
+ /** Shows a header per run within a subject of a grouped list. */
53
+ this.groupByRun = input(false, ...(ngDevMode ? [{ debugName: "groupByRun" }] : []));
54
+ /** Proposals to mark as new, by approval id, for example those made since the last visit of the inbox. */
55
+ this.newIds = input(null, ...(ngDevMode ? [{ debugName: "newIds" }] : []));
43
56
  /** Emits after a proposal or its feedback changed, so the host reloads its list. */
44
57
  this.changed = output();
45
58
  /**
@@ -65,6 +78,26 @@ class NhAssistantAgentProposalsComponent {
65
78
  return [...held, ...this.proposals().filter(proposal => !heldIds.has(proposal.approvalId))];
66
79
  }, ...(ngDevMode ? [{ debugName: "shown" }] : []));
67
80
  this.lookups = new Subscription();
81
+ /**
82
+ * The grouped list: the held closed cards stay above it; `null` for a flat list, or when the groups
83
+ * do not describe the proposals.
84
+ */
85
+ this.sections = computed(() => {
86
+ const groups = this.groups();
87
+ const items = this.proposals();
88
+ if (!groups || groups.reduce((sum, group) => sum + group.count, 0) !== items.length) {
89
+ return null;
90
+ }
91
+ const heldIds = new Set(this.held().map(proposal => proposal.approvalId));
92
+ const sections = [];
93
+ let offset = 0;
94
+ for (const group of groups) {
95
+ const members = items.slice(offset, offset + group.count);
96
+ offset += group.count;
97
+ sections.push(this.groupSection(group, members, heldIds));
98
+ }
99
+ return sections;
100
+ }, ...(ngDevMode ? [{ debugName: "sections" }] : []));
68
101
  inject(DestroyRef).onDestroy(() => {
69
102
  this.subscription?.unsubscribe();
70
103
  this.lookups.unsubscribe();
@@ -96,6 +129,30 @@ class NhAssistantAgentProposalsComponent {
96
129
  ? { key: 'nh-assistant.agent-runs.proposal.placed-by.object-named', params: { type: origin.subjectTypeName } }
97
130
  : { key: 'nh-assistant.agent-runs.proposal.placed-by.object', params: {} };
98
131
  }
132
+ /** Whether the proposal is marked as new. */
133
+ isNew(proposal) {
134
+ return this.newIds()?.has(proposal.approvalId) ?? false;
135
+ }
136
+ /** Whether every proposal "Select group" would select in the group is selected. */
137
+ groupSelected(group) {
138
+ const selected = this.selected();
139
+ return group.selectableIds.length > 0 && group.selectableIds.every(id => selected.has(id));
140
+ }
141
+ /**
142
+ * Selects the group's pending proposals in this list that the caller may decide, or deselects them
143
+ * when all are selected. Proposals of the group on another page are never selected: an approver
144
+ * decides only what they see.
145
+ */
146
+ toggleGroup(group) {
147
+ const next = new Set(this.selected());
148
+ if (this.groupSelected(group)) {
149
+ group.selectableIds.forEach(id => next.delete(id));
150
+ }
151
+ else {
152
+ group.selectableIds.forEach(id => next.add(id));
153
+ }
154
+ this.selected.set(next);
155
+ }
99
156
  /** True when the newer proposal that replaced this one is in the list. */
100
157
  hasSuccessor(proposal) {
101
158
  const successor = proposal.supersededByApprovalId;
@@ -233,6 +290,48 @@ class NhAssistantAgentProposalsComponent {
233
290
  action?.focus();
234
291
  }, { injector: this.injector });
235
292
  }
293
+ groupSection(group, members, heldIds) {
294
+ const key = `${group.subjectType}|${group.subjectId}`;
295
+ const subjects = [];
296
+ let offset = 0;
297
+ for (const subject of group.subjects) {
298
+ const items = members
299
+ .slice(offset, offset + subject.count)
300
+ .filter(proposal => !heldIds.has(proposal.approvalId)
301
+ && proposal.subjectType === subject.subjectType
302
+ && proposal.subjectId === subject.subjectId);
303
+ offset += subject.count;
304
+ const first = items[0];
305
+ subjects.push({
306
+ key: `${key}|${subject.subjectType}|${subject.subjectId}`,
307
+ subjectType: subject.subjectType,
308
+ subjectId: subject.subjectId,
309
+ label: first?.subjectDisplayName ?? subject.subjectId,
310
+ typeName: first?.subjectTypeName ?? null,
311
+ link: first?.subjectLink ?? null,
312
+ own: subject.subjectType === group.subjectType && subject.subjectId === group.subjectId,
313
+ count: subject.count,
314
+ total: subject.total,
315
+ runs: runsOf(items)
316
+ });
317
+ }
318
+ return {
319
+ key,
320
+ subjectType: group.subjectType,
321
+ subjectId: group.subjectId,
322
+ label: group.displayName ?? group.subjectId,
323
+ typeName: group.subjectTypeName ?? null,
324
+ link: group.subjectLink ?? null,
325
+ count: group.count,
326
+ total: group.total,
327
+ continuesFromPreviousPage: group.continuesFromPreviousPage,
328
+ continuesOnNextPage: group.continuesOnNextPage,
329
+ subjects,
330
+ selectableIds: members
331
+ .filter(proposal => !heldIds.has(proposal.approvalId) && proposal.status === 'pending' && this.mayDecide(proposal))
332
+ .map(proposal => proposal.approvalId)
333
+ };
334
+ }
236
335
  ask(approvalIds, summary) {
237
336
  this.feedback.set({ approvalIds, initial: null, placement: 'prompt', summary, saved: false });
238
337
  }
@@ -291,19 +390,20 @@ class NhAssistantAgentProposalsComponent {
291
390
  });
292
391
  }
293
392
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentProposalsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentProposalsComponent, isStandalone: true, selector: "nh-assistant-agent-proposals", inputs: { proposals: { classPropertyName: "proposals", publicName: "proposals", isSignal: true, isRequired: true, transformFunction: null }, canDecide: { classPropertyName: "canDecide", publicName: "canDecide", isSignal: true, isRequired: false, transformFunction: null }, decisionRights: { classPropertyName: "decisionRights", publicName: "decisionRights", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, holdClosedCards: { classPropertyName: "holdClosedCards", publicName: "holdClosedCards", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", openConversation: "openConversation" }, ngImport: i0, template: "<div class=\"proposal-list\">\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n\n @if (feedback(); as request) {\n @if (request.placement === 'prompt') {\n <div class=\"feedback-prompt\">\n @if (request.summary && !request.saved) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.proposal.rejected-one' | translate: { summary: request.summary } }}</p>\n }\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n </div>\n }\n }\n\n @if (selectable() && pending().length > 0) {\n <div class=\"toolbar\">\n <label class=\"select\">\n <input type=\"checkbox\" [checked]=\"allSelected()\" [disabled]=\"busy()\" (change)=\"toggleAll()\" />\n {{ 'nh-assistant.agent-runs.inbox.select-all' | translate }}\n </label>\n <button class=\"primary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.inbox.approve-selected' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.inbox.reject-selected' | translate }}\n </button>\n </div>\n }\n\n @if (shown().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of shown(); track proposal.approvalId) {\n <li\n class=\"card\"\n tabindex=\"-1\"\n [attr.data-approval-id]=\"proposal.approvalId\"\n [class.selected]=\"selected().has(proposal.approvalId)\"\n [class.closed]=\"isHeld(proposal)\">\n <div class=\"card-header\">\n @if (selectable() && proposal.status === 'pending' && mayDecide(proposal)) {\n <input\n type=\"checkbox\"\n [checked]=\"selected().has(proposal.approvalId)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select' | translate\"\n (change)=\"toggle(proposal)\" />\n }\n <strong>\n <nh-assistant-subject-link\n [subjectType]=\"proposal.subjectType\"\n [subjectId]=\"proposal.subjectId\"\n [label]=\"proposal.subjectDisplayName ?? proposal.subjectId\"\n [typeName]=\"proposal.subjectTypeName\"\n [link]=\"proposal.subjectLink\" />\n </strong>\n <span class=\"muted\">{{ proposal.presentation?.toolDisplayName ?? proposal.toolId }}</span>\n <span\n class=\"badge\"\n [class.success]=\"proposal.status === 'executed' || proposal.status === 'resolved'\"\n [class.warning]=\"proposal.status === 'pending' || proposal.status === 'execution-unknown' || proposal.status === 'stale'\"\n [class.danger]=\"proposal.status === 'execution-failed' || proposal.status === 'rejected'\">\n {{ statusKey(proposal) | translate }}\n </span>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.proposal.mode.' + proposal.mode | translate }}</span>\n @if (proposal.grantSource !== 'none') {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.tool-call.grant-source.' + proposal.grantSource + '-hint' | translate\">\n {{ 'nh-assistant.tool-call.grant-source.' + proposal.grantSource | translate }}\n </span>\n }\n @if (proposal.consultationId) {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.agent-runs.proposal.from-consultation-hint' | translate\">\n {{ 'nh-assistant.agent-runs.proposal.from-consultation' | translate }}\n </span>\n }\n </div>\n @if (proposal.placedBy; as origin) {\n @let placedBy = originText(origin);\n <p class=\"placed-by\">\n <span>{{ placedBy.key | translate: placedBy.params }}</span>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.placed-by.open-label' | translate\"\n (click)=\"openConversation.emit(origin.conversationId)\">\n {{ 'nh-assistant.agent-runs.proposal.placed-by.open' | translate }}\n </button>\n </p>\n }\n @if (proposal.presentation; as presentation) {\n <p class=\"summary\">{{ presentation.summary }}</p>\n @if (presentation.fields.length > 0) {\n <dl class=\"presentation-fields\">\n @for (field of presentation.fields; track $index) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ field.value }}</dd>\n </div>\n }\n </dl>\n }\n @if (presentation.notice) {\n <p class=\"message warning\">{{ presentation.notice }}</p>\n }\n } @else {\n <p class=\"summary\">{{ 'nh-assistant.approval.fallback-summary' | translate }}</p>\n }\n @if (proposal.rationale) {\n <p class=\"rationale\">{{ 'nh-assistant.approval.rationale' | translate: { rationale: proposal.rationale } }}</p>\n }\n @if (proposal.status === 'stale' && proposal.staleExplanation) {\n <p class=\"message stale-explanation\">{{ proposal.staleExplanation }}</p>\n }\n @if (hasSuccessor(proposal)) {\n <button class=\"text-button\" type=\"button\" (click)=\"showSuccessor(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.show-successor' | translate }}\n </button>\n }\n @if (isHeld(proposal)) {\n <div class=\"closed-card\">\n <p class=\"muted\" role=\"status\">{{ 'nh-assistant.agent-runs.proposal.closed' | translate }}</p>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.dismiss-label' | translate: { summary: proposal.presentation?.summary ?? proposal.toolId }\"\n (click)=\"dismiss(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.dismiss' | translate }}\n </button>\n </div>\n }\n <details class=\"technical-details\">\n <summary>{{ 'nh-assistant.approval.technical-details' | translate }}</summary>\n <p class=\"label\">{{ 'nh-assistant.approval.tool-id' | translate }}</p>\n <code>{{ proposal.toolId }}</code>\n @if (proposal.targets.length > 0) {\n <p class=\"label\">{{ 'nh-assistant.approval.targets' | translate }}</p>\n <ul class=\"targets\">\n @for (target of proposal.targets; track $index) {\n <li>{{ target }}</li>\n }\n </ul>\n }\n @if (proposal.argumentsPreview) {\n <p class=\"label\">{{ 'nh-assistant.approval.arguments' | translate }}</p>\n <pre>{{ proposal.argumentsPreview }}</pre>\n }\n </details>\n <div class=\"meta\">\n @if (proposal.status === 'pending') {\n <span>{{ 'nh-assistant.agent-runs.proposal.expires' | translate: { date: (proposal.expiresAt | date: 'short') } }}</span>\n }\n @if (proposal.decidedByActorId) {\n <span\n data-proposal-decided-by\n [attr.title]=\"proposal.decidedByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.decidedByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.decided-by' | translate: { actor: proposal.decidedByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.decidedByActorId }) } }}</span>\n }\n @if (proposal.status === 'stale' && proposal.staleByActorId) {\n <span\n data-proposal-stale-by\n [attr.title]=\"proposal.staleByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.staleByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.stale-by' | translate: { actor: proposal.staleByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.staleByActorId }) } }}</span>\n }\n @if (proposal.executionResultCode; as code) {\n <span class=\"mono\">{{ code }}</span>\n }\n @if (proposal.feedback; as given) {\n <span>\n {{ 'nh-assistant.agent-runs.proposal.your-feedback' | translate: { category: ('nh-assistant.proposal-feedback.categories.' + given.category | translate) } }}\n </span>\n }\n @if (proposal.canGiveFeedback && !isAsking(proposal)) {\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.data-feedback-approval]=\"proposal.approvalId\"\n [disabled]=\"busy()\"\n (click)=\"giveFeedback(proposal)\">\n {{ (proposal.feedback ? 'nh-assistant.agent-runs.proposal.change-feedback' : 'nh-assistant.agent-runs.proposal.give-feedback') | translate }}\n </button>\n }\n </div>\n @if (inCard(proposal) && feedback(); as request) {\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n }\n @if (waitingForKey(proposal); as waitingFor) {\n <p class=\"waiting-for\"><nh-assistant-icon name=\"users\" />{{ waitingFor | translate }}</p>\n }\n @if (proposal.status === 'pending' && mayDecide(proposal)) {\n <div class=\"card-actions\">\n <button class=\"primary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.approve' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.proposal.reject' | translate }}\n </button>\n </div>\n }\n @if (proposal.status === 'execution-unknown' && mayDecide(proposal)) {\n <p class=\"message warning\"><nh-assistant-icon name=\"warning\" />{{ 'nh-assistant.agent-runs.proposal.unknown-hint' | translate }}</p>\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 'mark-resolved')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.mark-resolved' | translate }}\n </button>\n <button class=\"danger\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 're-execute')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.proposal.re-execute' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n }\n</div>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantProposalFeedbackComponent, selector: "nh-assistant-proposal-feedback", inputs: ["approvalIds", "initial"], outputs: ["saved", "dismissed"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
393
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentProposalsComponent, isStandalone: true, selector: "nh-assistant-agent-proposals", inputs: { proposals: { classPropertyName: "proposals", publicName: "proposals", isSignal: true, isRequired: true, transformFunction: null }, canDecide: { classPropertyName: "canDecide", publicName: "canDecide", isSignal: true, isRequired: false, transformFunction: null }, decisionRights: { classPropertyName: "decisionRights", publicName: "decisionRights", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, holdClosedCards: { classPropertyName: "holdClosedCards", publicName: "holdClosedCards", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, groupByRun: { classPropertyName: "groupByRun", publicName: "groupByRun", isSignal: true, isRequired: false, transformFunction: null }, newIds: { classPropertyName: "newIds", publicName: "newIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", openConversation: "openConversation" }, ngImport: i0, template: "<div class=\"proposal-list\">\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n\n @if (feedback(); as request) {\n @if (request.placement === 'prompt') {\n <div class=\"feedback-prompt\">\n @if (request.summary && !request.saved) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.proposal.rejected-one' | translate: { summary: request.summary } }}</p>\n }\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n </div>\n }\n }\n\n @if (selectable() && pending().length > 0) {\n <div class=\"toolbar\">\n <label class=\"select\">\n <input type=\"checkbox\" [checked]=\"allSelected()\" [disabled]=\"busy()\" (change)=\"toggleAll()\" />\n {{ 'nh-assistant.agent-runs.inbox.select-all' | translate }}\n </label>\n <button class=\"primary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.inbox.approve-selected' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.inbox.reject-selected' | translate }}\n </button>\n </div>\n }\n\n @if (sections(); as groups) {\n @if (held().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of held(); track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n @for (group of groups; track group.key) {\n <section class=\"proposal-group\" [attr.data-proposal-group]=\"group.key\" [attr.aria-label]=\"group.label\">\n <header class=\"proposal-group-header\">\n <h4>\n <nh-assistant-subject-link\n [subjectType]=\"group.subjectType\"\n [subjectId]=\"group.subjectId\"\n [label]=\"group.label\"\n [typeName]=\"group.typeName\"\n [link]=\"group.link\" />\n </h4>\n <span class=\"muted\" data-group-loaded>{{ 'nh-assistant.agent-runs.inbox.group-loaded' | translate: { loaded: group.count, total: group.total } }}</span>\n @if (selectable() && group.selectableIds.length > 0) {\n <label class=\"select\">\n <input\n type=\"checkbox\"\n data-select-group\n [checked]=\"groupSelected(group)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select-group-label' | translate: { count: group.selectableIds.length, name: group.label }\"\n (change)=\"toggleGroup(group)\" />\n {{ 'nh-assistant.agent-runs.inbox.select-group' | translate: { count: group.selectableIds.length } }}\n </label>\n }\n </header>\n @if (group.continuesFromPreviousPage) {\n <p class=\"muted\" data-group-continued>{{ 'nh-assistant.agent-runs.inbox.group-continued' | translate }}</p>\n }\n @for (subject of group.subjects; track subject.key) {\n @if (!subject.own) {\n <h5 class=\"proposal-subject-header\" [attr.data-proposal-subject]=\"subject.subjectType + '|' + subject.subjectId\">\n <nh-assistant-subject-link\n [subjectType]=\"subject.subjectType\"\n [subjectId]=\"subject.subjectId\"\n [label]=\"subject.label\"\n [typeName]=\"subject.typeName\"\n [link]=\"subject.link\" />\n @if (subject.count < subject.total) {\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.group-loaded' | translate: { loaded: subject.count, total: subject.total } }}</span>\n }\n </h5>\n }\n @for (run of subject.runs; track run.key) {\n @if (groupByRun()) {\n <p class=\"proposal-run-header\" [attr.data-proposal-run]=\"run.runId ?? ''\">\n @if (run.runId) {\n {{ 'nh-assistant.agent-runs.inbox.run' | translate: { agent: ([('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: run.agentId), date: (run.proposedAt | date: 'short') } }}\n } @else {\n {{ 'nh-assistant.agent-runs.inbox.no-run' | translate }}\n }\n </p>\n }\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of run.items; track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n }\n @if (group.continuesOnNextPage) {\n <p class=\"muted\" data-group-continues>{{ 'nh-assistant.agent-runs.inbox.group-continues' | translate }}</p>\n }\n </section>\n }\n } @else if (shown().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of shown(); track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n\n <ng-template #card let-proposal>\n <li\n class=\"card\"\n tabindex=\"-1\"\n [attr.data-approval-id]=\"proposal.approvalId\"\n [class.selected]=\"selected().has(proposal.approvalId)\"\n [class.closed]=\"isHeld(proposal)\"\n [class.new]=\"isNew(proposal)\">\n <div class=\"card-header\">\n @if (selectable() && proposal.status === 'pending' && mayDecide(proposal)) {\n <input\n type=\"checkbox\"\n [checked]=\"selected().has(proposal.approvalId)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select' | translate\"\n (change)=\"toggle(proposal)\" />\n }\n <strong>\n <nh-assistant-subject-link\n [subjectType]=\"proposal.subjectType\"\n [subjectId]=\"proposal.subjectId\"\n [label]=\"proposal.subjectDisplayName ?? proposal.subjectId\"\n [typeName]=\"proposal.subjectTypeName\"\n [link]=\"proposal.subjectLink\" />\n </strong>\n <span class=\"muted\">{{ proposal.presentation?.toolDisplayName ?? proposal.toolId }}</span>\n @if (isNew(proposal)) {\n <span class=\"badge new\" data-proposal-new [attr.title]=\"'nh-assistant.agent-runs.inbox.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.inbox.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.inbox.new-label' | translate }}</span>\n </span>\n }\n <span\n class=\"badge\"\n [class.success]=\"proposal.status === 'executed' || proposal.status === 'resolved'\"\n [class.warning]=\"proposal.status === 'pending' || proposal.status === 'execution-unknown' || proposal.status === 'stale'\"\n [class.danger]=\"proposal.status === 'execution-failed' || proposal.status === 'rejected'\">\n {{ statusKey(proposal) | translate }}\n </span>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.proposal.mode.' + proposal.mode | translate }}</span>\n @if (proposal.grantSource !== 'none') {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.tool-call.grant-source.' + proposal.grantSource + '-hint' | translate\">\n {{ 'nh-assistant.tool-call.grant-source.' + proposal.grantSource | translate }}\n </span>\n }\n @if (proposal.consultationId) {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.agent-runs.proposal.from-consultation-hint' | translate\">\n {{ 'nh-assistant.agent-runs.proposal.from-consultation' | translate }}\n </span>\n }\n </div>\n @if (proposal.placedBy; as origin) {\n @let placedBy = originText(origin);\n <p class=\"placed-by\">\n <span>{{ placedBy.key | translate: placedBy.params }}</span>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.placed-by.open-label' | translate\"\n (click)=\"openConversation.emit(origin.conversationId)\">\n {{ 'nh-assistant.agent-runs.proposal.placed-by.open' | translate }}\n </button>\n </p>\n }\n @if (proposal.presentation; as presentation) {\n <p class=\"summary\">{{ presentation.summary }}</p>\n @if (presentation.fields.length > 0) {\n <dl class=\"presentation-fields\">\n @for (field of presentation.fields; track $index) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ field.value }}</dd>\n </div>\n }\n </dl>\n }\n @if (presentation.notice) {\n <p class=\"message warning\">{{ presentation.notice }}</p>\n }\n } @else {\n <p class=\"summary\">{{ 'nh-assistant.approval.fallback-summary' | translate }}</p>\n }\n @if (proposal.rationale) {\n <p class=\"rationale\">{{ 'nh-assistant.approval.rationale' | translate: { rationale: proposal.rationale } }}</p>\n }\n @if (proposal.status === 'stale' && proposal.staleExplanation) {\n <p class=\"message stale-explanation\">{{ proposal.staleExplanation }}</p>\n }\n @if (hasSuccessor(proposal)) {\n <button class=\"text-button\" type=\"button\" (click)=\"showSuccessor(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.show-successor' | translate }}\n </button>\n }\n @if (isHeld(proposal)) {\n <div class=\"closed-card\">\n <p class=\"muted\" role=\"status\">{{ 'nh-assistant.agent-runs.proposal.closed' | translate }}</p>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.dismiss-label' | translate: { summary: proposal.presentation?.summary ?? proposal.toolId }\"\n (click)=\"dismiss(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.dismiss' | translate }}\n </button>\n </div>\n }\n <details class=\"technical-details\">\n <summary>{{ 'nh-assistant.approval.technical-details' | translate }}</summary>\n <p class=\"label\">{{ 'nh-assistant.approval.tool-id' | translate }}</p>\n <code>{{ proposal.toolId }}</code>\n @if (proposal.targets.length > 0) {\n <p class=\"label\">{{ 'nh-assistant.approval.targets' | translate }}</p>\n <ul class=\"targets\">\n @for (target of proposal.targets; track $index) {\n <li>{{ target }}</li>\n }\n </ul>\n }\n @if (proposal.argumentsPreview) {\n <p class=\"label\">{{ 'nh-assistant.approval.arguments' | translate }}</p>\n <pre>{{ proposal.argumentsPreview }}</pre>\n }\n </details>\n <div class=\"meta\">\n @if (proposal.status === 'pending') {\n <span>{{ 'nh-assistant.agent-runs.proposal.expires' | translate: { date: (proposal.expiresAt | date: 'short') } }}</span>\n }\n @if (proposal.decidedByActorId) {\n <span\n data-proposal-decided-by\n [attr.title]=\"proposal.decidedByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.decidedByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.decided-by' | translate: { actor: proposal.decidedByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.decidedByActorId }) } }}</span>\n }\n @if (proposal.status === 'stale' && proposal.staleByActorId) {\n <span\n data-proposal-stale-by\n [attr.title]=\"proposal.staleByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.staleByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.stale-by' | translate: { actor: proposal.staleByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.staleByActorId }) } }}</span>\n }\n @if (proposal.executionResultCode; as code) {\n <span class=\"mono\">{{ code }}</span>\n }\n @if (proposal.feedback; as given) {\n <span>\n {{ 'nh-assistant.agent-runs.proposal.your-feedback' | translate: { category: ('nh-assistant.proposal-feedback.categories.' + given.category | translate) } }}\n </span>\n }\n @if (proposal.canGiveFeedback && !isAsking(proposal)) {\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.data-feedback-approval]=\"proposal.approvalId\"\n [disabled]=\"busy()\"\n (click)=\"giveFeedback(proposal)\">\n {{ (proposal.feedback ? 'nh-assistant.agent-runs.proposal.change-feedback' : 'nh-assistant.agent-runs.proposal.give-feedback') | translate }}\n </button>\n }\n </div>\n @if (inCard(proposal) && feedback(); as request) {\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n }\n @if (waitingForKey(proposal); as waitingFor) {\n <p class=\"waiting-for\"><nh-assistant-icon name=\"users\" />{{ waitingFor | translate }}</p>\n }\n @if (proposal.status === 'pending' && mayDecide(proposal)) {\n <div class=\"card-actions\">\n <button class=\"primary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.approve' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.proposal.reject' | translate }}\n </button>\n </div>\n }\n @if (proposal.status === 'execution-unknown' && mayDecide(proposal)) {\n <p class=\"message warning\"><nh-assistant-icon name=\"warning\" />{{ 'nh-assistant.agent-runs.proposal.unknown-hint' | translate }}</p>\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 'mark-resolved')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.mark-resolved' | translate }}\n </button>\n <button class=\"danger\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 're-execute')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.proposal.re-execute' | translate }}\n </button>\n </div>\n }\n </li>\n </ng-template>\n</div>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantProposalFeedbackComponent, selector: "nh-assistant-proposal-feedback", inputs: ["approvalIds", "initial"], outputs: ["saved", "dismissed"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
295
394
  }
296
395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentProposalsComponent, decorators: [{
297
396
  type: Component,
298
397
  args: [{ selector: 'nh-assistant-agent-proposals', standalone: true, imports: [
299
398
  DatePipe,
399
+ NgTemplateOutlet,
300
400
  TranslatePipe,
301
401
  _NhAssistantTranslatePipe,
302
402
  _NhAssistantIconComponent,
303
403
  _NhAssistantSubjectLinkComponent,
304
404
  NhAssistantProposalFeedbackComponent
305
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"proposal-list\">\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n\n @if (feedback(); as request) {\n @if (request.placement === 'prompt') {\n <div class=\"feedback-prompt\">\n @if (request.summary && !request.saved) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.proposal.rejected-one' | translate: { summary: request.summary } }}</p>\n }\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n </div>\n }\n }\n\n @if (selectable() && pending().length > 0) {\n <div class=\"toolbar\">\n <label class=\"select\">\n <input type=\"checkbox\" [checked]=\"allSelected()\" [disabled]=\"busy()\" (change)=\"toggleAll()\" />\n {{ 'nh-assistant.agent-runs.inbox.select-all' | translate }}\n </label>\n <button class=\"primary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.inbox.approve-selected' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.inbox.reject-selected' | translate }}\n </button>\n </div>\n }\n\n @if (shown().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of shown(); track proposal.approvalId) {\n <li\n class=\"card\"\n tabindex=\"-1\"\n [attr.data-approval-id]=\"proposal.approvalId\"\n [class.selected]=\"selected().has(proposal.approvalId)\"\n [class.closed]=\"isHeld(proposal)\">\n <div class=\"card-header\">\n @if (selectable() && proposal.status === 'pending' && mayDecide(proposal)) {\n <input\n type=\"checkbox\"\n [checked]=\"selected().has(proposal.approvalId)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select' | translate\"\n (change)=\"toggle(proposal)\" />\n }\n <strong>\n <nh-assistant-subject-link\n [subjectType]=\"proposal.subjectType\"\n [subjectId]=\"proposal.subjectId\"\n [label]=\"proposal.subjectDisplayName ?? proposal.subjectId\"\n [typeName]=\"proposal.subjectTypeName\"\n [link]=\"proposal.subjectLink\" />\n </strong>\n <span class=\"muted\">{{ proposal.presentation?.toolDisplayName ?? proposal.toolId }}</span>\n <span\n class=\"badge\"\n [class.success]=\"proposal.status === 'executed' || proposal.status === 'resolved'\"\n [class.warning]=\"proposal.status === 'pending' || proposal.status === 'execution-unknown' || proposal.status === 'stale'\"\n [class.danger]=\"proposal.status === 'execution-failed' || proposal.status === 'rejected'\">\n {{ statusKey(proposal) | translate }}\n </span>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.proposal.mode.' + proposal.mode | translate }}</span>\n @if (proposal.grantSource !== 'none') {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.tool-call.grant-source.' + proposal.grantSource + '-hint' | translate\">\n {{ 'nh-assistant.tool-call.grant-source.' + proposal.grantSource | translate }}\n </span>\n }\n @if (proposal.consultationId) {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.agent-runs.proposal.from-consultation-hint' | translate\">\n {{ 'nh-assistant.agent-runs.proposal.from-consultation' | translate }}\n </span>\n }\n </div>\n @if (proposal.placedBy; as origin) {\n @let placedBy = originText(origin);\n <p class=\"placed-by\">\n <span>{{ placedBy.key | translate: placedBy.params }}</span>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.placed-by.open-label' | translate\"\n (click)=\"openConversation.emit(origin.conversationId)\">\n {{ 'nh-assistant.agent-runs.proposal.placed-by.open' | translate }}\n </button>\n </p>\n }\n @if (proposal.presentation; as presentation) {\n <p class=\"summary\">{{ presentation.summary }}</p>\n @if (presentation.fields.length > 0) {\n <dl class=\"presentation-fields\">\n @for (field of presentation.fields; track $index) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ field.value }}</dd>\n </div>\n }\n </dl>\n }\n @if (presentation.notice) {\n <p class=\"message warning\">{{ presentation.notice }}</p>\n }\n } @else {\n <p class=\"summary\">{{ 'nh-assistant.approval.fallback-summary' | translate }}</p>\n }\n @if (proposal.rationale) {\n <p class=\"rationale\">{{ 'nh-assistant.approval.rationale' | translate: { rationale: proposal.rationale } }}</p>\n }\n @if (proposal.status === 'stale' && proposal.staleExplanation) {\n <p class=\"message stale-explanation\">{{ proposal.staleExplanation }}</p>\n }\n @if (hasSuccessor(proposal)) {\n <button class=\"text-button\" type=\"button\" (click)=\"showSuccessor(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.show-successor' | translate }}\n </button>\n }\n @if (isHeld(proposal)) {\n <div class=\"closed-card\">\n <p class=\"muted\" role=\"status\">{{ 'nh-assistant.agent-runs.proposal.closed' | translate }}</p>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.dismiss-label' | translate: { summary: proposal.presentation?.summary ?? proposal.toolId }\"\n (click)=\"dismiss(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.dismiss' | translate }}\n </button>\n </div>\n }\n <details class=\"technical-details\">\n <summary>{{ 'nh-assistant.approval.technical-details' | translate }}</summary>\n <p class=\"label\">{{ 'nh-assistant.approval.tool-id' | translate }}</p>\n <code>{{ proposal.toolId }}</code>\n @if (proposal.targets.length > 0) {\n <p class=\"label\">{{ 'nh-assistant.approval.targets' | translate }}</p>\n <ul class=\"targets\">\n @for (target of proposal.targets; track $index) {\n <li>{{ target }}</li>\n }\n </ul>\n }\n @if (proposal.argumentsPreview) {\n <p class=\"label\">{{ 'nh-assistant.approval.arguments' | translate }}</p>\n <pre>{{ proposal.argumentsPreview }}</pre>\n }\n </details>\n <div class=\"meta\">\n @if (proposal.status === 'pending') {\n <span>{{ 'nh-assistant.agent-runs.proposal.expires' | translate: { date: (proposal.expiresAt | date: 'short') } }}</span>\n }\n @if (proposal.decidedByActorId) {\n <span\n data-proposal-decided-by\n [attr.title]=\"proposal.decidedByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.decidedByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.decided-by' | translate: { actor: proposal.decidedByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.decidedByActorId }) } }}</span>\n }\n @if (proposal.status === 'stale' && proposal.staleByActorId) {\n <span\n data-proposal-stale-by\n [attr.title]=\"proposal.staleByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.staleByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.stale-by' | translate: { actor: proposal.staleByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.staleByActorId }) } }}</span>\n }\n @if (proposal.executionResultCode; as code) {\n <span class=\"mono\">{{ code }}</span>\n }\n @if (proposal.feedback; as given) {\n <span>\n {{ 'nh-assistant.agent-runs.proposal.your-feedback' | translate: { category: ('nh-assistant.proposal-feedback.categories.' + given.category | translate) } }}\n </span>\n }\n @if (proposal.canGiveFeedback && !isAsking(proposal)) {\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.data-feedback-approval]=\"proposal.approvalId\"\n [disabled]=\"busy()\"\n (click)=\"giveFeedback(proposal)\">\n {{ (proposal.feedback ? 'nh-assistant.agent-runs.proposal.change-feedback' : 'nh-assistant.agent-runs.proposal.give-feedback') | translate }}\n </button>\n }\n </div>\n @if (inCard(proposal) && feedback(); as request) {\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n }\n @if (waitingForKey(proposal); as waitingFor) {\n <p class=\"waiting-for\"><nh-assistant-icon name=\"users\" />{{ waitingFor | translate }}</p>\n }\n @if (proposal.status === 'pending' && mayDecide(proposal)) {\n <div class=\"card-actions\">\n <button class=\"primary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.approve' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.proposal.reject' | translate }}\n </button>\n </div>\n }\n @if (proposal.status === 'execution-unknown' && mayDecide(proposal)) {\n <p class=\"message warning\"><nh-assistant-icon name=\"warning\" />{{ 'nh-assistant.agent-runs.proposal.unknown-hint' | translate }}</p>\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 'mark-resolved')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.mark-resolved' | translate }}\n </button>\n <button class=\"danger\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 're-execute')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.proposal.re-execute' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n }\n</div>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
306
- }], ctorParameters: () => [], propDecorators: { proposals: [{ type: i0.Input, args: [{ isSignal: true, alias: "proposals", required: true }] }], canDecide: [{ type: i0.Input, args: [{ isSignal: true, alias: "canDecide", required: false }] }], decisionRights: [{ type: i0.Input, args: [{ isSignal: true, alias: "decisionRights", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], holdClosedCards: [{ type: i0.Input, args: [{ isSignal: true, alias: "holdClosedCards", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
405
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"proposal-list\">\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n\n @if (feedback(); as request) {\n @if (request.placement === 'prompt') {\n <div class=\"feedback-prompt\">\n @if (request.summary && !request.saved) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.proposal.rejected-one' | translate: { summary: request.summary } }}</p>\n }\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n </div>\n }\n }\n\n @if (selectable() && pending().length > 0) {\n <div class=\"toolbar\">\n <label class=\"select\">\n <input type=\"checkbox\" [checked]=\"allSelected()\" [disabled]=\"busy()\" (change)=\"toggleAll()\" />\n {{ 'nh-assistant.agent-runs.inbox.select-all' | translate }}\n </label>\n <button class=\"primary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.inbox.approve-selected' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy() || selected().size === 0\" (click)=\"decideSelected('reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.inbox.reject-selected' | translate }}\n </button>\n </div>\n }\n\n @if (sections(); as groups) {\n @if (held().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of held(); track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n @for (group of groups; track group.key) {\n <section class=\"proposal-group\" [attr.data-proposal-group]=\"group.key\" [attr.aria-label]=\"group.label\">\n <header class=\"proposal-group-header\">\n <h4>\n <nh-assistant-subject-link\n [subjectType]=\"group.subjectType\"\n [subjectId]=\"group.subjectId\"\n [label]=\"group.label\"\n [typeName]=\"group.typeName\"\n [link]=\"group.link\" />\n </h4>\n <span class=\"muted\" data-group-loaded>{{ 'nh-assistant.agent-runs.inbox.group-loaded' | translate: { loaded: group.count, total: group.total } }}</span>\n @if (selectable() && group.selectableIds.length > 0) {\n <label class=\"select\">\n <input\n type=\"checkbox\"\n data-select-group\n [checked]=\"groupSelected(group)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select-group-label' | translate: { count: group.selectableIds.length, name: group.label }\"\n (change)=\"toggleGroup(group)\" />\n {{ 'nh-assistant.agent-runs.inbox.select-group' | translate: { count: group.selectableIds.length } }}\n </label>\n }\n </header>\n @if (group.continuesFromPreviousPage) {\n <p class=\"muted\" data-group-continued>{{ 'nh-assistant.agent-runs.inbox.group-continued' | translate }}</p>\n }\n @for (subject of group.subjects; track subject.key) {\n @if (!subject.own) {\n <h5 class=\"proposal-subject-header\" [attr.data-proposal-subject]=\"subject.subjectType + '|' + subject.subjectId\">\n <nh-assistant-subject-link\n [subjectType]=\"subject.subjectType\"\n [subjectId]=\"subject.subjectId\"\n [label]=\"subject.label\"\n [typeName]=\"subject.typeName\"\n [link]=\"subject.link\" />\n @if (subject.count < subject.total) {\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.group-loaded' | translate: { loaded: subject.count, total: subject.total } }}</span>\n }\n </h5>\n }\n @for (run of subject.runs; track run.key) {\n @if (groupByRun()) {\n <p class=\"proposal-run-header\" [attr.data-proposal-run]=\"run.runId ?? ''\">\n @if (run.runId) {\n {{ 'nh-assistant.agent-runs.inbox.run' | translate: { agent: ([('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: run.agentId), date: (run.proposedAt | date: 'short') } }}\n } @else {\n {{ 'nh-assistant.agent-runs.inbox.no-run' | translate }}\n }\n </p>\n }\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of run.items; track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n }\n @if (group.continuesOnNextPage) {\n <p class=\"muted\" data-group-continues>{{ 'nh-assistant.agent-runs.inbox.group-continues' | translate }}</p>\n }\n </section>\n }\n } @else if (shown().length > 0) {\n <ul class=\"cards\" [attr.aria-busy]=\"busy()\">\n @for (proposal of shown(); track proposal.approvalId) {\n <ng-container *ngTemplateOutlet=\"card; context: { $implicit: proposal }\" />\n }\n </ul>\n }\n\n <ng-template #card let-proposal>\n <li\n class=\"card\"\n tabindex=\"-1\"\n [attr.data-approval-id]=\"proposal.approvalId\"\n [class.selected]=\"selected().has(proposal.approvalId)\"\n [class.closed]=\"isHeld(proposal)\"\n [class.new]=\"isNew(proposal)\">\n <div class=\"card-header\">\n @if (selectable() && proposal.status === 'pending' && mayDecide(proposal)) {\n <input\n type=\"checkbox\"\n [checked]=\"selected().has(proposal.approvalId)\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.select' | translate\"\n (change)=\"toggle(proposal)\" />\n }\n <strong>\n <nh-assistant-subject-link\n [subjectType]=\"proposal.subjectType\"\n [subjectId]=\"proposal.subjectId\"\n [label]=\"proposal.subjectDisplayName ?? proposal.subjectId\"\n [typeName]=\"proposal.subjectTypeName\"\n [link]=\"proposal.subjectLink\" />\n </strong>\n <span class=\"muted\">{{ proposal.presentation?.toolDisplayName ?? proposal.toolId }}</span>\n @if (isNew(proposal)) {\n <span class=\"badge new\" data-proposal-new [attr.title]=\"'nh-assistant.agent-runs.inbox.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.inbox.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.inbox.new-label' | translate }}</span>\n </span>\n }\n <span\n class=\"badge\"\n [class.success]=\"proposal.status === 'executed' || proposal.status === 'resolved'\"\n [class.warning]=\"proposal.status === 'pending' || proposal.status === 'execution-unknown' || proposal.status === 'stale'\"\n [class.danger]=\"proposal.status === 'execution-failed' || proposal.status === 'rejected'\">\n {{ statusKey(proposal) | translate }}\n </span>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.proposal.mode.' + proposal.mode | translate }}</span>\n @if (proposal.grantSource !== 'none') {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.tool-call.grant-source.' + proposal.grantSource + '-hint' | translate\">\n {{ 'nh-assistant.tool-call.grant-source.' + proposal.grantSource | translate }}\n </span>\n }\n @if (proposal.consultationId) {\n <span class=\"badge\" [attr.title]=\"'nh-assistant.agent-runs.proposal.from-consultation-hint' | translate\">\n {{ 'nh-assistant.agent-runs.proposal.from-consultation' | translate }}\n </span>\n }\n </div>\n @if (proposal.placedBy; as origin) {\n @let placedBy = originText(origin);\n <p class=\"placed-by\">\n <span>{{ placedBy.key | translate: placedBy.params }}</span>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.placed-by.open-label' | translate\"\n (click)=\"openConversation.emit(origin.conversationId)\">\n {{ 'nh-assistant.agent-runs.proposal.placed-by.open' | translate }}\n </button>\n </p>\n }\n @if (proposal.presentation; as presentation) {\n <p class=\"summary\">{{ presentation.summary }}</p>\n @if (presentation.fields.length > 0) {\n <dl class=\"presentation-fields\">\n @for (field of presentation.fields; track $index) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ field.value }}</dd>\n </div>\n }\n </dl>\n }\n @if (presentation.notice) {\n <p class=\"message warning\">{{ presentation.notice }}</p>\n }\n } @else {\n <p class=\"summary\">{{ 'nh-assistant.approval.fallback-summary' | translate }}</p>\n }\n @if (proposal.rationale) {\n <p class=\"rationale\">{{ 'nh-assistant.approval.rationale' | translate: { rationale: proposal.rationale } }}</p>\n }\n @if (proposal.status === 'stale' && proposal.staleExplanation) {\n <p class=\"message stale-explanation\">{{ proposal.staleExplanation }}</p>\n }\n @if (hasSuccessor(proposal)) {\n <button class=\"text-button\" type=\"button\" (click)=\"showSuccessor(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.show-successor' | translate }}\n </button>\n }\n @if (isHeld(proposal)) {\n <div class=\"closed-card\">\n <p class=\"muted\" role=\"status\">{{ 'nh-assistant.agent-runs.proposal.closed' | translate }}</p>\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.proposal.dismiss-label' | translate: { summary: proposal.presentation?.summary ?? proposal.toolId }\"\n (click)=\"dismiss(proposal)\">\n {{ 'nh-assistant.agent-runs.proposal.dismiss' | translate }}\n </button>\n </div>\n }\n <details class=\"technical-details\">\n <summary>{{ 'nh-assistant.approval.technical-details' | translate }}</summary>\n <p class=\"label\">{{ 'nh-assistant.approval.tool-id' | translate }}</p>\n <code>{{ proposal.toolId }}</code>\n @if (proposal.targets.length > 0) {\n <p class=\"label\">{{ 'nh-assistant.approval.targets' | translate }}</p>\n <ul class=\"targets\">\n @for (target of proposal.targets; track $index) {\n <li>{{ target }}</li>\n }\n </ul>\n }\n @if (proposal.argumentsPreview) {\n <p class=\"label\">{{ 'nh-assistant.approval.arguments' | translate }}</p>\n <pre>{{ proposal.argumentsPreview }}</pre>\n }\n </details>\n <div class=\"meta\">\n @if (proposal.status === 'pending') {\n <span>{{ 'nh-assistant.agent-runs.proposal.expires' | translate: { date: (proposal.expiresAt | date: 'short') } }}</span>\n }\n @if (proposal.decidedByActorId) {\n <span\n data-proposal-decided-by\n [attr.title]=\"proposal.decidedByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.decidedByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.decided-by' | translate: { actor: proposal.decidedByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.decidedByActorId }) } }}</span>\n }\n @if (proposal.status === 'stale' && proposal.staleByActorId) {\n <span\n data-proposal-stale-by\n [attr.title]=\"proposal.staleByDisplayName ? ('nh-assistant.account-id-title' | translate: { id: proposal.staleByActorId }) : null\">{{ 'nh-assistant.agent-runs.proposal.stale-by' | translate: { actor: proposal.staleByDisplayName || ('nh-assistant.account-id' | translate: { id: proposal.staleByActorId }) } }}</span>\n }\n @if (proposal.executionResultCode; as code) {\n <span class=\"mono\">{{ code }}</span>\n }\n @if (proposal.feedback; as given) {\n <span>\n {{ 'nh-assistant.agent-runs.proposal.your-feedback' | translate: { category: ('nh-assistant.proposal-feedback.categories.' + given.category | translate) } }}\n </span>\n }\n @if (proposal.canGiveFeedback && !isAsking(proposal)) {\n <button\n class=\"text-button\"\n type=\"button\"\n [attr.data-feedback-approval]=\"proposal.approvalId\"\n [disabled]=\"busy()\"\n (click)=\"giveFeedback(proposal)\">\n {{ (proposal.feedback ? 'nh-assistant.agent-runs.proposal.change-feedback' : 'nh-assistant.agent-runs.proposal.give-feedback') | translate }}\n </button>\n }\n </div>\n @if (inCard(proposal) && feedback(); as request) {\n <nh-assistant-proposal-feedback\n [approvalIds]=\"request.approvalIds\"\n [initial]=\"request.initial\"\n (saved)=\"onFeedbackSaved()\"\n (dismissed)=\"onFeedbackDismissed()\" />\n }\n @if (waitingForKey(proposal); as waitingFor) {\n <p class=\"waiting-for\"><nh-assistant-icon name=\"users\" />{{ waitingFor | translate }}</p>\n }\n @if (proposal.status === 'pending' && mayDecide(proposal)) {\n <div class=\"card-actions\">\n <button class=\"primary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'approve')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.approve' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"decide(proposal, 'reject')\">\n <nh-assistant-icon name=\"x\" />{{ 'nh-assistant.agent-runs.proposal.reject' | translate }}\n </button>\n </div>\n }\n @if (proposal.status === 'execution-unknown' && mayDecide(proposal)) {\n <p class=\"message warning\"><nh-assistant-icon name=\"warning\" />{{ 'nh-assistant.agent-runs.proposal.unknown-hint' | translate }}</p>\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 'mark-resolved')\">\n <nh-assistant-icon name=\"check\" />{{ 'nh-assistant.agent-runs.proposal.mark-resolved' | translate }}\n </button>\n <button class=\"danger\" type=\"button\" [disabled]=\"busy()\" (click)=\"resolve(proposal, 're-execute')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.proposal.re-execute' | translate }}\n </button>\n </div>\n }\n </li>\n </ng-template>\n</div>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
406
+ }], ctorParameters: () => [], propDecorators: { proposals: [{ type: i0.Input, args: [{ isSignal: true, alias: "proposals", required: true }] }], canDecide: [{ type: i0.Input, args: [{ isSignal: true, alias: "canDecide", required: false }] }], decisionRights: [{ type: i0.Input, args: [{ isSignal: true, alias: "decisionRights", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], holdClosedCards: [{ type: i0.Input, args: [{ isSignal: true, alias: "holdClosedCards", required: false }] }], groups: [{ type: i0.Input, args: [{ isSignal: true, alias: "groups", required: false }] }], groupByRun: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupByRun", required: false }] }], newIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "newIds", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
307
407
  /** The refusal of an approval because the proposal no longer fits. */
308
408
  const staleCode = 'assistant-proposal-stale';
309
409
  /** The application's words for a proposal, falling back to its subject and tool. */
@@ -311,6 +411,25 @@ function summaryOf(proposal) {
311
411
  return proposal.presentation?.summary
312
412
  ?? `${proposal.subjectDisplayName ?? proposal.subjectId} · ${proposal.presentation?.toolDisplayName ?? proposal.toolId}`;
313
413
  }
414
+ /** The proposals of each run in a row, in the order given. */
415
+ function runsOf(items) {
416
+ const runs = [];
417
+ for (const proposal of items) {
418
+ const last = runs.at(-1);
419
+ if (last && last.runId === proposal.runId) {
420
+ last.items.push(proposal);
421
+ continue;
422
+ }
423
+ runs.push({
424
+ key: `${proposal.runId ?? 'none'}|${proposal.approvalId}`,
425
+ runId: proposal.runId,
426
+ agentId: proposal.agentId,
427
+ proposedAt: proposal.createdAt,
428
+ items: [proposal]
429
+ });
430
+ }
431
+ return runs;
432
+ }
314
433
  /** True for a proposal a newer proposal for the same objects replaced. */
315
434
  function isSuperseded(proposal) {
316
435
  return proposal.status === 'withdrawn' && !!proposal.supersededByApprovalId;
@@ -327,15 +446,48 @@ function isSuperseded(proposal) {
327
446
  * longer fits, for example because someone did the work by hand, stays as a closed card with the
328
447
  * reason until it is dismissed. A proposal a run placed at its object from another subject, such as a
329
448
  * run for the whole application, names that run; `openConversation` emits its conversation.
449
+ *
450
+ * `agentId`, `subjectType`, `divisionId` and `runId` filter the inbox; changing a filter, or `grouped`,
451
+ * reloads it from the first page. With `grouped` the inbox shows the proposals per parent, such as a
452
+ * project with its own proposals and those of its tasks, and per subject, optionally per run
453
+ * (`groupByRun`); a group that goes on on another page says so, and "Select group" selects only its
454
+ * proposals shown here. With `markNew` (on by default) it marks the proposals made since the person's
455
+ * last visit of the inbox in its scope, the whole application or the division of `divisionId`, and
456
+ * those that arrive while it is shown; with `recordVisit` (on by default) showing it records the
457
+ * visit. Turn `recordVisit` off for an inbox that shows only part of the scope, such as one agent's
458
+ * proposals, so the person's next visit of the whole inbox still marks what they have not seen.
330
459
  */
331
460
  class NhAssistantAgentInboxComponent {
332
461
  constructor() {
333
462
  this.api = inject(NhAssistantAgentRunApiService);
334
463
  this.proposalList = viewChild(NhAssistantAgentProposalsComponent, ...(ngDevMode ? [{ debugName: "proposalList" }] : []));
464
+ /** The scope whose visit this view recorded; the visit is recorded once per scope shown. */
465
+ this.visited = null;
466
+ /**
467
+ * What the first read of the shown scope found: the visit before this one and the proposals that
468
+ * were new since. Later reads, after live updates, paging or a decision, compare with both, so what
469
+ * was new when the inbox was opened stays new while it is shown.
470
+ */
471
+ this.opened = null;
335
472
  /** Limits the inbox to one agent. */
336
473
  this.agentId = input(undefined, ...(ngDevMode ? [{ debugName: "agentId" }] : []));
337
474
  /** Limits the inbox to one kind of subject, for example `project`. */
338
475
  this.subjectType = input(undefined, ...(ngDevMode ? [{ debugName: "subjectType" }] : []));
476
+ /**
477
+ * Limits the inbox to the subjects of one division, for example the active division; its visits are
478
+ * then those of that division.
479
+ */
480
+ this.divisionId = input(undefined, ...(ngDevMode ? [{ debugName: "divisionId" }] : []));
481
+ /** Limits the inbox to the proposals of one run. */
482
+ this.runId = input(undefined, ...(ngDevMode ? [{ debugName: "runId" }] : []));
483
+ /** Groups the proposals per parent and subject instead of listing them by expiry alone. */
484
+ this.grouped = input(false, ...(ngDevMode ? [{ debugName: "grouped" }] : []));
485
+ /** In a grouped inbox, also shows a header per run within a subject. */
486
+ this.groupByRun = input(false, ...(ngDevMode ? [{ debugName: "groupByRun" }] : []));
487
+ /** Marks the proposals made since the person's last visit of the inbox, and those that arrive while it is shown. */
488
+ this.markNew = input(true, ...(ngDevMode ? [{ debugName: "markNew" }] : []));
489
+ /** Records the person's visit of the inbox in its scope when it is shown. */
490
+ this.recordVisit = input(true, ...(ngDevMode ? [{ debugName: "recordVisit" }] : []));
339
491
  this.itemsPerPage = input(20, ...(ngDevMode ? [{ debugName: "itemsPerPage" }] : []));
340
492
  /**
341
493
  * Emits the conversation of the run that placed a proposal at its object from another subject, so
@@ -349,11 +501,26 @@ class NhAssistantAgentInboxComponent {
349
501
  this.loadFailed = signal(false, ...(ngDevMode ? [{ debugName: "loadFailed" }] : []));
350
502
  this.items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : []));
351
503
  this.total = signal(0, ...(ngDevMode ? [{ debugName: "total" }] : []));
504
+ /** The groups of the page in a grouped inbox; `null` for the flat inbox. */
505
+ this.groups = signal(null, ...(ngDevMode ? [{ debugName: "groups" }] : []));
506
+ /** The proposals of the page marked as new. */
507
+ this.newIds = signal(new Set(), ...(ngDevMode ? [{ debugName: "newIds" }] : []));
508
+ /**
509
+ * The person's visit of the shown scope before the inbox was opened: `null` before their first
510
+ * visit, `undefined` while unknown or when new proposals are not marked.
511
+ */
512
+ this.previousVisit = signal(undefined, ...(ngDevMode ? [{ debugName: "previousVisit" }] : []));
352
513
  this.pages = computed(() => Math.max(1, Math.ceil(this.total() / this.itemsPerPage())), ...(ngDevMode ? [{ debugName: "pages" }] : []));
353
- inject(DestroyRef).onDestroy(() => this.subscription?.unsubscribe());
514
+ inject(DestroyRef).onDestroy(() => {
515
+ this.subscription?.unsubscribe();
516
+ this.visitSubscription?.unsubscribe();
517
+ });
354
518
  effect(() => {
355
519
  this.agentId();
356
520
  this.subjectType();
521
+ this.divisionId();
522
+ this.runId();
523
+ this.grouped();
357
524
  untracked(() => {
358
525
  this.page.set(1);
359
526
  this.load();
@@ -387,11 +554,16 @@ class NhAssistantAgentInboxComponent {
387
554
  this.loading.set(true);
388
555
  this.loadFailed.set(false);
389
556
  }
557
+ const divisionId = this.divisionId() ?? null;
390
558
  this.subscription?.unsubscribe();
391
559
  this.subscription = this.api
392
560
  .getInbox({
393
561
  agentId: this.agentId(),
394
562
  subjectType: this.subjectType(),
563
+ divisionId: divisionId ?? undefined,
564
+ runId: this.runId() ?? undefined,
565
+ // Only a grouped inbox asks for groups, so the requests of a flat inbox stay as they were.
566
+ grouped: this.grouped() || undefined,
395
567
  page: this.page(),
396
568
  itemsPerPage: this.itemsPerPage()
397
569
  })
@@ -406,6 +578,8 @@ class NhAssistantAgentInboxComponent {
406
578
  }
407
579
  const previous = this.items();
408
580
  this.items.set(inbox.items);
581
+ this.groups.set(this.grouped() ? inbox.groups ?? null : null);
582
+ this.markNewOf(inbox);
409
583
  if (quiet) {
410
584
  this.proposalList()?.holdClosed(previous, inbox.items);
411
585
  }
@@ -413,6 +587,7 @@ class NhAssistantAgentInboxComponent {
413
587
  this.loading.set(false);
414
588
  this.loadFailed.set(false);
415
589
  this.loaded.set(true);
590
+ this.recordVisitOf(inbox, divisionId);
416
591
  },
417
592
  error: () => {
418
593
  if (quiet) {
@@ -423,13 +598,57 @@ class NhAssistantAgentInboxComponent {
423
598
  }
424
599
  });
425
600
  }
601
+ /**
602
+ * Marks what is new: what the server marks since the visit this view recorded, and what was made
603
+ * after the person's visit before the inbox was opened, on any page. Before the first visit
604
+ * everything is new. A server without visits marks nothing.
605
+ */
606
+ markNewOf(inbox) {
607
+ if (!this.markNew() || inbox.newApprovalIds === undefined) {
608
+ this.newIds.set(new Set());
609
+ this.previousVisit.set(undefined);
610
+ return;
611
+ }
612
+ const scopeKey = inbox.scopeKey ?? 'global';
613
+ if (this.opened?.scopeKey !== scopeKey) {
614
+ this.opened = { scopeKey, previousVisit: inbox.lastVisitedAt ?? null, newIds: new Set() };
615
+ }
616
+ const opened = this.opened;
617
+ const before = opened.previousVisit === null ? null : Date.parse(opened.previousVisit);
618
+ for (const id of inbox.newApprovalIds) {
619
+ opened.newIds.add(id);
620
+ }
621
+ for (const proposal of inbox.items) {
622
+ if (before === null || Date.parse(proposal.createdAt) > before) {
623
+ opened.newIds.add(proposal.approvalId);
624
+ }
625
+ }
626
+ this.previousVisit.set(opened.previousVisit);
627
+ this.newIds.set(new Set(inbox.items
628
+ .filter(proposal => opened.newIds.has(proposal.approvalId))
629
+ .map(proposal => proposal.approvalId)));
630
+ }
631
+ /**
632
+ * Records the visit of the shown scope after its first read, so that read still marks what arrived
633
+ * since the visit before.
634
+ */
635
+ recordVisitOf(inbox, divisionId) {
636
+ const scopeKey = inbox.scopeKey;
637
+ if (!this.recordVisit() || scopeKey === undefined || this.visited === scopeKey) {
638
+ return;
639
+ }
640
+ this.visited = scopeKey;
641
+ this.visitSubscription?.unsubscribe();
642
+ // A visit that cannot be recorded only means the next visit shows more as new.
643
+ this.visitSubscription = this.api.visitInbox(divisionId).subscribe({ error: () => undefined });
644
+ }
426
645
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentInboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
427
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentInboxComponent, isStandalone: true, selector: "nh-assistant-agent-inbox", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-inbox-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-inbox-title\">{{ 'nh-assistant.agent-runs.inbox.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (loading() && items().length === 0 && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"items()\"\n [canDecide]=\"true\"\n [selectable]=\"true\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n @if (items().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.inbox.empty' | translate }}</p>\n }\n @if (pages() > 1) {\n <nav class=\"toolbar\" [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.pages' | translate\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() <= 1 || loading()\" (click)=\"goTo(page() - 1)\">\n {{ 'nh-assistant.agent-runs.inbox.previous' | translate }}\n </button>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.page' | translate: { page: page(), pages: pages() } }}</span>\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() >= pages() || loading()\" (click)=\"goTo(page() + 1)\">\n {{ 'nh-assistant.agent-runs.inbox.next' | translate }}\n </button>\n </nav>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards"], outputs: ["changed", "openConversation"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
646
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentInboxComponent, isStandalone: true, selector: "nh-assistant-agent-inbox", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: false, transformFunction: null }, divisionId: { classPropertyName: "divisionId", publicName: "divisionId", isSignal: true, isRequired: false, transformFunction: null }, runId: { classPropertyName: "runId", publicName: "runId", isSignal: true, isRequired: false, transformFunction: null }, grouped: { classPropertyName: "grouped", publicName: "grouped", isSignal: true, isRequired: false, transformFunction: null }, groupByRun: { classPropertyName: "groupByRun", publicName: "groupByRun", isSignal: true, isRequired: false, transformFunction: null }, markNew: { classPropertyName: "markNew", publicName: "markNew", isSignal: true, isRequired: false, transformFunction: null }, recordVisit: { classPropertyName: "recordVisit", publicName: "recordVisit", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-inbox-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-inbox-title\">{{ 'nh-assistant.agent-runs.inbox.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.description' | translate }}</p>\n @if (items().length > 0) {\n @if (previousVisit(); as visitedAt) {\n <p class=\"muted\" data-inbox-last-visit>{{ 'nh-assistant.agent-runs.inbox.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else if (previousVisit() === null) {\n <p class=\"muted\" data-inbox-first-visit>{{ 'nh-assistant.agent-runs.inbox.first-visit' | translate }}</p>\n }\n }\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (loading() && items().length === 0 && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"items()\"\n [canDecide]=\"true\"\n [selectable]=\"true\"\n [holdClosedCards]=\"true\"\n [groups]=\"groups()\"\n [groupByRun]=\"groupByRun()\"\n [newIds]=\"newIds()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n @if (items().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.inbox.empty' | translate }}</p>\n }\n @if (pages() > 1) {\n <nav class=\"toolbar\" [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.pages' | translate\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() <= 1 || loading()\" (click)=\"goTo(page() - 1)\">\n {{ 'nh-assistant.agent-runs.inbox.previous' | translate }}\n </button>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.page' | translate: { page: page(), pages: pages() } }}</span>\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() >= pages() || loading()\" (click)=\"goTo(page() + 1)\">\n {{ 'nh-assistant.agent-runs.inbox.next' | translate }}\n </button>\n </nav>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards", "groups", "groupByRun", "newIds"], outputs: ["changed", "openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
428
647
  }
429
648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentInboxComponent, decorators: [{
430
649
  type: Component,
431
- args: [{ selector: 'nh-assistant-agent-inbox', standalone: true, imports: [TranslatePipe, _NhAssistantIconComponent, NhAssistantAgentProposalsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-inbox-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-inbox-title\">{{ 'nh-assistant.agent-runs.inbox.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (loading() && items().length === 0 && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"items()\"\n [canDecide]=\"true\"\n [selectable]=\"true\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n @if (items().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.inbox.empty' | translate }}</p>\n }\n @if (pages() > 1) {\n <nav class=\"toolbar\" [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.pages' | translate\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() <= 1 || loading()\" (click)=\"goTo(page() - 1)\">\n {{ 'nh-assistant.agent-runs.inbox.previous' | translate }}\n </button>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.page' | translate: { page: page(), pages: pages() } }}</span>\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() >= pages() || loading()\" (click)=\"goTo(page() + 1)\">\n {{ 'nh-assistant.agent-runs.inbox.next' | translate }}\n </button>\n </nav>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
432
- }], ctorParameters: () => [], propDecorators: { proposalList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NhAssistantAgentProposalsComponent), { isSignal: true }] }], agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: false }] }], subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: false }] }], itemsPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsPerPage", required: false }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
650
+ args: [{ selector: 'nh-assistant-agent-inbox', standalone: true, imports: [DatePipe, TranslatePipe, _NhAssistantIconComponent, NhAssistantAgentProposalsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-inbox-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-inbox-title\">{{ 'nh-assistant.agent-runs.inbox.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.description' | translate }}</p>\n @if (items().length > 0) {\n @if (previousVisit(); as visitedAt) {\n <p class=\"muted\" data-inbox-last-visit>{{ 'nh-assistant.agent-runs.inbox.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else if (previousVisit() === null) {\n <p class=\"muted\" data-inbox-first-visit>{{ 'nh-assistant.agent-runs.inbox.first-visit' | translate }}</p>\n }\n }\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (loading() && items().length === 0 && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"items()\"\n [canDecide]=\"true\"\n [selectable]=\"true\"\n [holdClosedCards]=\"true\"\n [groups]=\"groups()\"\n [groupByRun]=\"groupByRun()\"\n [newIds]=\"newIds()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n @if (items().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.inbox.empty' | translate }}</p>\n }\n @if (pages() > 1) {\n <nav class=\"toolbar\" [attr.aria-label]=\"'nh-assistant.agent-runs.inbox.pages' | translate\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() <= 1 || loading()\" (click)=\"goTo(page() - 1)\">\n {{ 'nh-assistant.agent-runs.inbox.previous' | translate }}\n </button>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.inbox.page' | translate: { page: page(), pages: pages() } }}</span>\n <button class=\"secondary\" type=\"button\" [disabled]=\"page() >= pages() || loading()\" (click)=\"goTo(page() + 1)\">\n {{ 'nh-assistant.agent-runs.inbox.next' | translate }}\n </button>\n </nav>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
651
+ }], ctorParameters: () => [], propDecorators: { proposalList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NhAssistantAgentProposalsComponent), { isSignal: true }] }], agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: false }] }], subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: false }] }], divisionId: [{ type: i0.Input, args: [{ isSignal: true, alias: "divisionId", required: false }] }], runId: [{ type: i0.Input, args: [{ isSignal: true, alias: "runId", required: false }] }], grouped: [{ type: i0.Input, args: [{ isSignal: true, alias: "grouped", required: false }] }], groupByRun: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupByRun", required: false }] }], markNew: [{ type: i0.Input, args: [{ isSignal: true, alias: "markNew", required: false }] }], recordVisit: [{ type: i0.Input, args: [{ isSignal: true, alias: "recordVisit", required: false }] }], itemsPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsPerPage", required: false }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
433
652
 
434
653
  /** The tone of a receipt's outcome (internal). */
435
654
  function nhAssistantRunReceiptTone(outcome) {
@@ -582,11 +801,11 @@ class NhAssistantAgentArtifactsComponent {
582
801
  });
583
802
  }
584
803
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentArtifactsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
585
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentArtifactsComponent, isStandalone: true, selector: "nh-assistant-agent-artifacts", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n\n@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (artifacts().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.artifacts.empty' | translate }}</p>\n} @else {\n <ul class=\"cards\">\n @for (artifact of artifacts(); track artifact.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ artifact.name }}</strong>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n }\n </div>\n <div class=\"meta\">\n <span class=\"mono\">{{ artifact.contentType }}</span>\n <span>{{ 'nh-assistant.agent-runs.artifacts.size' | translate: { size: artifact.sizeBytes } }}</span>\n <span>{{ artifact.createdAt | date: 'short' }}</span>\n </div>\n @if (!artifact.restricted) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"downloadingId() !== null\" (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
804
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentArtifactsComponent, isStandalone: true, selector: "nh-assistant-agent-artifacts", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n\n@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (artifacts().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.artifacts.empty' | translate }}</p>\n} @else {\n <ul class=\"cards\">\n @for (artifact of artifacts(); track artifact.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ artifact.name }}</strong>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n }\n </div>\n <div class=\"meta\">\n <span class=\"mono\">{{ artifact.contentType }}</span>\n <span>{{ 'nh-assistant.agent-runs.artifacts.size' | translate: { size: artifact.sizeBytes } }}</span>\n <span>{{ artifact.createdAt | date: 'short' }}</span>\n </div>\n @if (!artifact.restricted) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"downloadingId() !== null\" (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
586
805
  }
587
806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentArtifactsComponent, decorators: [{
588
807
  type: Component,
589
- args: [{ selector: 'nh-assistant-agent-artifacts', standalone: true, imports: [DatePipe, TranslatePipe, _NhAssistantTranslatePipe, _NhAssistantIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n\n@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (artifacts().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.artifacts.empty' | translate }}</p>\n} @else {\n <ul class=\"cards\">\n @for (artifact of artifacts(); track artifact.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ artifact.name }}</strong>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n }\n </div>\n <div class=\"meta\">\n <span class=\"mono\">{{ artifact.contentType }}</span>\n <span>{{ 'nh-assistant.agent-runs.artifacts.size' | translate: { size: artifact.sizeBytes } }}</span>\n <span>{{ artifact.createdAt | date: 'short' }}</span>\n </div>\n @if (!artifact.restricted) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"downloadingId() !== null\" (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
808
+ args: [{ selector: 'nh-assistant-agent-artifacts', standalone: true, imports: [DatePipe, TranslatePipe, _NhAssistantTranslatePipe, _NhAssistantIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n\n@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (artifacts().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.artifacts.empty' | translate }}</p>\n} @else {\n <ul class=\"cards\">\n @for (artifact of artifacts(); track artifact.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ artifact.name }}</strong>\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n }\n </div>\n <div class=\"meta\">\n <span class=\"mono\">{{ artifact.contentType }}</span>\n <span>{{ 'nh-assistant.agent-runs.artifacts.size' | translate: { size: artifact.sizeBytes } }}</span>\n <span>{{ artifact.createdAt | date: 'short' }}</span>\n </div>\n @if (!artifact.restricted) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"downloadingId() !== null\" (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n </div>\n }\n </li>\n }\n </ul>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
590
809
  }], ctorParameters: () => [], propDecorators: { conversationId: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationId", required: true }] }] } });
591
810
 
592
811
  /**
@@ -638,11 +857,11 @@ class NhAssistantAgentConsultationsComponent {
638
857
  });
639
858
  }
640
859
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentConsultationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
641
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentConsultationsComponent, isStandalone: true, selector: "nh-assistant-agent-consultations", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (loading() && consultations().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (consultations().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.consultation.empty' | translate }}</p>\n} @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.private' | translate }}</p>\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.consultations' | translate\">\n @for (consultation of consultations(); track consultation.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ consultation.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"consultation.status === 'completed'\"\n [class.warning]=\"consultation.status === 'running'\"\n [class.danger]=\"consultation.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.consultation.status.' + consultation.status | translate }}\n </span>\n <span\n data-consultation-asker\n [attr.title]=\"consultation.askerDisplayName ? ('nh-assistant.account-id-title' | translate: { id: consultation.askerActorId }) : null\">\n {{ 'nh-assistant.agent-runs.consultation.asked-by' | translate: { name: consultation.askerDisplayName ?? ('nh-assistant.account-id' | translate: { id: consultation.askerActorId }) } }}\n @if (consultation.askingAgentId; as agentId) {\n {{ 'nh-assistant.agent-runs.consultation.through' | translate: { agent: (['nh-assistant.agents.' + agentId + '.name'] | nhAssistantTranslate: agentId) } }}\n }\n </span>\n @if (consultation.depth > 1) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.consultation.depth' | translate: { depth: consultation.depth } }}</span>\n }\n </div>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: consultation.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: consultation.inputTokens + consultation.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: consultation.proposalCount } }}</span>\n @if (consultation.failureCode; as code) {\n <span><nh-assistant-icon name=\"warning\" />{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n </li>\n }\n </ol>\n @if (total() > consultations().length) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.more' | translate: { count: total() - consultations().length } }}</p>\n }\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
860
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentConsultationsComponent, isStandalone: true, selector: "nh-assistant-agent-consultations", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (loading() && consultations().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (consultations().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.consultation.empty' | translate }}</p>\n} @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.private' | translate }}</p>\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.consultations' | translate\">\n @for (consultation of consultations(); track consultation.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ consultation.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"consultation.status === 'completed'\"\n [class.warning]=\"consultation.status === 'running'\"\n [class.danger]=\"consultation.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.consultation.status.' + consultation.status | translate }}\n </span>\n <span\n data-consultation-asker\n [attr.title]=\"consultation.askerDisplayName ? ('nh-assistant.account-id-title' | translate: { id: consultation.askerActorId }) : null\">\n {{ 'nh-assistant.agent-runs.consultation.asked-by' | translate: { name: consultation.askerDisplayName ?? ('nh-assistant.account-id' | translate: { id: consultation.askerActorId }) } }}\n @if (consultation.askingAgentId; as agentId) {\n {{ 'nh-assistant.agent-runs.consultation.through' | translate: { agent: (['nh-assistant.agents.' + agentId + '.name'] | nhAssistantTranslate: agentId) } }}\n }\n </span>\n @if (consultation.depth > 1) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.consultation.depth' | translate: { depth: consultation.depth } }}</span>\n }\n </div>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: consultation.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: consultation.inputTokens + consultation.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: consultation.proposalCount } }}</span>\n @if (consultation.failureCode; as code) {\n <span><nh-assistant-icon name=\"warning\" />{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n </li>\n }\n </ol>\n @if (total() > consultations().length) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.more' | translate: { count: total() - consultations().length } }}</p>\n }\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
642
861
  }
643
862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentConsultationsComponent, decorators: [{
644
863
  type: Component,
645
- args: [{ selector: 'nh-assistant-agent-consultations', standalone: true, imports: [DatePipe, TranslatePipe, _NhAssistantTranslatePipe, _NhAssistantIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (loading() && consultations().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (consultations().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.consultation.empty' | translate }}</p>\n} @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.private' | translate }}</p>\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.consultations' | translate\">\n @for (consultation of consultations(); track consultation.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ consultation.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"consultation.status === 'completed'\"\n [class.warning]=\"consultation.status === 'running'\"\n [class.danger]=\"consultation.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.consultation.status.' + consultation.status | translate }}\n </span>\n <span\n data-consultation-asker\n [attr.title]=\"consultation.askerDisplayName ? ('nh-assistant.account-id-title' | translate: { id: consultation.askerActorId }) : null\">\n {{ 'nh-assistant.agent-runs.consultation.asked-by' | translate: { name: consultation.askerDisplayName ?? ('nh-assistant.account-id' | translate: { id: consultation.askerActorId }) } }}\n @if (consultation.askingAgentId; as agentId) {\n {{ 'nh-assistant.agent-runs.consultation.through' | translate: { agent: (['nh-assistant.agents.' + agentId + '.name'] | nhAssistantTranslate: agentId) } }}\n }\n </span>\n @if (consultation.depth > 1) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.consultation.depth' | translate: { depth: consultation.depth } }}</span>\n }\n </div>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: consultation.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: consultation.inputTokens + consultation.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: consultation.proposalCount } }}</span>\n @if (consultation.failureCode; as code) {\n <span><nh-assistant-icon name=\"warning\" />{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n </li>\n }\n </ol>\n @if (total() > consultations().length) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.more' | translate: { count: total() - consultations().length } }}</p>\n }\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
864
+ args: [{ selector: 'nh-assistant-agent-consultations', standalone: true, imports: [DatePipe, TranslatePipe, _NhAssistantTranslatePipe, _NhAssistantIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (loading() && consultations().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (consultations().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.consultation.empty' | translate }}</p>\n} @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.private' | translate }}</p>\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.consultations' | translate\">\n @for (consultation of consultations(); track consultation.id) {\n <li class=\"card\">\n <div class=\"card-header\">\n <strong>{{ consultation.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"consultation.status === 'completed'\"\n [class.warning]=\"consultation.status === 'running'\"\n [class.danger]=\"consultation.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.consultation.status.' + consultation.status | translate }}\n </span>\n <span\n data-consultation-asker\n [attr.title]=\"consultation.askerDisplayName ? ('nh-assistant.account-id-title' | translate: { id: consultation.askerActorId }) : null\">\n {{ 'nh-assistant.agent-runs.consultation.asked-by' | translate: { name: consultation.askerDisplayName ?? ('nh-assistant.account-id' | translate: { id: consultation.askerActorId }) } }}\n @if (consultation.askingAgentId; as agentId) {\n {{ 'nh-assistant.agent-runs.consultation.through' | translate: { agent: (['nh-assistant.agents.' + agentId + '.name'] | nhAssistantTranslate: agentId) } }}\n }\n </span>\n @if (consultation.depth > 1) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.consultation.depth' | translate: { depth: consultation.depth } }}</span>\n }\n </div>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: consultation.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: consultation.inputTokens + consultation.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: consultation.proposalCount } }}</span>\n @if (consultation.failureCode; as code) {\n <span><nh-assistant-icon name=\"warning\" />{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n </li>\n }\n </ol>\n @if (total() > consultations().length) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.consultation.more' | translate: { count: total() - consultations().length } }}</p>\n }\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
646
865
  }], ctorParameters: () => [], propDecorators: { conversationId: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationId", required: true }] }] } });
647
866
 
648
867
  /**
@@ -695,11 +914,11 @@ class NhAssistantAgentMemoryComponent {
695
914
  });
696
915
  }
697
916
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentMemoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
698
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentMemoryComponent, isStandalone: true, selector: "nh-assistant-agent-memory", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (!memory()?.configured) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.not-configured' | translate }}</p>\n} @else if (formatted(); as json) {\n <div class=\"section\">\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.memory.version' | translate: { version: memory()!.schemaVersion } }}</span>\n @if (memory()!.updatedAt; as updatedAt) {\n <span>{{ 'nh-assistant.agent-runs.memory.updated' | translate: { date: (updatedAt | date: 'short') } }}</span>\n }\n </div>\n <pre [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.memory' | translate\">{{ json }}</pre>\n </div>\n} @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.empty' | translate }}</p>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
917
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentMemoryComponent, isStandalone: true, selector: "nh-assistant-agent-memory", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (!memory()?.configured) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.not-configured' | translate }}</p>\n} @else if (formatted(); as json) {\n <div class=\"section\">\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.memory.version' | translate: { version: memory()!.schemaVersion } }}</span>\n @if (memory()!.updatedAt; as updatedAt) {\n <span>{{ 'nh-assistant.agent-runs.memory.updated' | translate: { date: (updatedAt | date: 'short') } }}</span>\n }\n </div>\n <pre [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.memory' | translate\">{{ json }}</pre>\n </div>\n} @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.empty' | translate }}</p>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
699
918
  }
700
919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentMemoryComponent, decorators: [{
701
920
  type: Component,
702
- args: [{ selector: 'nh-assistant-agent-memory', standalone: true, imports: [DatePipe, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (!memory()?.configured) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.not-configured' | translate }}</p>\n} @else if (formatted(); as json) {\n <div class=\"section\">\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.memory.version' | translate: { version: memory()!.schemaVersion } }}</span>\n @if (memory()!.updatedAt; as updatedAt) {\n <span>{{ 'nh-assistant.agent-runs.memory.updated' | translate: { date: (updatedAt | date: 'short') } }}</span>\n }\n </div>\n <pre [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.memory' | translate\">{{ json }}</pre>\n </div>\n} @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.empty' | translate }}</p>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
921
+ args: [{ selector: 'nh-assistant-agent-memory', standalone: true, imports: [DatePipe, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (loading()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (!memory()?.configured) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.not-configured' | translate }}</p>\n} @else if (formatted(); as json) {\n <div class=\"section\">\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.memory.version' | translate: { version: memory()!.schemaVersion } }}</span>\n @if (memory()!.updatedAt; as updatedAt) {\n <span>{{ 'nh-assistant.agent-runs.memory.updated' | translate: { date: (updatedAt | date: 'short') } }}</span>\n }\n </div>\n <pre [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.memory' | translate\">{{ json }}</pre>\n </div>\n} @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.memory.empty' | translate }}</p>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
703
922
  }], ctorParameters: () => [], propDecorators: { conversationId: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationId", required: true }] }] } });
704
923
 
705
924
  let nextId$6 = 0;
@@ -712,6 +931,12 @@ let nextId$6 = 0;
712
931
  * its object, for the whole application the agent's view policy, administrators every run. The
713
932
  * thread view's run timeline and the administration's runs view open it; an application may show
714
933
  * it anywhere with a run id. With live updates it reloads by itself while the run works.
934
+ *
935
+ * The run's pending proposals that the reader may decide, by the same live check as the inbox and the
936
+ * subject's work (`POST approvals/lookup`), can be decided in place, one by one or selected together
937
+ * with "Select all"; a pending proposal the reader may not decide says who does, and a reader who may
938
+ * decide none sees no selection. After a rejection the list asks, optionally, what was wrong, and a
939
+ * proposal refused because it no longer fits stays as a closed card with the reason until dismissed.
715
940
  */
716
941
  class NhAssistantRunResultComponent {
717
942
  constructor() {
@@ -743,6 +968,13 @@ class NhAssistantRunResultComponent {
743
968
  return keys.length > 0 ? [...keys.slice(0, -1), 'nh-assistant.agent-runs.artifacts.download-failed'] : [];
744
969
  }, ...(ngDevMode ? [{ debugName: "downloadErrorKeys" }] : []));
745
970
  this.codeKeys = _nhAssistantCodeKeys;
971
+ /**
972
+ * The reader's live right to decide each pending proposal of the run, by approval id; `null` until
973
+ * it is known, when nobody may decide.
974
+ */
975
+ this.rights = signal(null, ...(ngDevMode ? [{ debugName: "rights" }] : []));
976
+ /** Whether the reader may decide at least one of the run's proposals: only then can they select. */
977
+ this.decidable = computed(() => [...(this.rights()?.values() ?? [])].some(right => right.canDecide), ...(ngDevMode ? [{ debugName: "decidable" }] : []));
746
978
  this.duration = computed(() => {
747
979
  const run = this.detail()?.run;
748
980
  return run ? durationOf(run.startedAt, run.endedAt) : null;
@@ -751,7 +983,10 @@ class NhAssistantRunResultComponent {
751
983
  const run = this.detail()?.run;
752
984
  return run ? run.inputTokens + run.outputTokens : 0;
753
985
  }, ...(ngDevMode ? [{ debugName: "tokens" }] : []));
754
- inject(DestroyRef).onDestroy(() => this.subscription?.unsubscribe());
986
+ inject(DestroyRef).onDestroy(() => {
987
+ this.subscription?.unsubscribe();
988
+ this.rightsSubscription?.unsubscribe();
989
+ });
755
990
  effect(() => {
756
991
  this.runId();
757
992
  untracked(() => this.fetch(false));
@@ -761,6 +996,10 @@ class NhAssistantRunResultComponent {
761
996
  load() {
762
997
  this.fetch(false);
763
998
  }
999
+ /** A proposal was decided or its feedback given: the run's proposals and the rights are read again. */
1000
+ onProposalsChanged() {
1001
+ this.fetch(true);
1002
+ }
764
1003
  async download(artifact) {
765
1004
  this.downloadingId.set(artifact.id);
766
1005
  this.downloadError.set(null);
@@ -780,6 +1019,24 @@ class NhAssistantRunResultComponent {
780
1019
  this.downloadingId.set(null);
781
1020
  }
782
1021
  }
1022
+ /**
1023
+ * Reads the reader's live right to decide each pending proposal of the run, as the server checks it
1024
+ * for every decision. Without an answer nobody may decide here; the server checks again anyway.
1025
+ */
1026
+ readRights(detail) {
1027
+ this.rightsSubscription?.unsubscribe();
1028
+ const batches = pendingBatches(detail);
1029
+ if (batches.length === 0) {
1030
+ this.rights.set(new Map());
1031
+ return;
1032
+ }
1033
+ this.rightsSubscription = forkJoin(batches.map(batch => this.api.lookupProposals(batch))).subscribe({
1034
+ next: lookups => this.rights.set(new Map(lookups
1035
+ .flatMap(lookup => lookup.items)
1036
+ .map(item => [item.proposal.approvalId, { canDecide: item.canDecide, reasonCode: item.reasonCode }]))),
1037
+ error: () => this.rights.set(new Map())
1038
+ });
1039
+ }
783
1040
  /**
784
1041
  * Reads the run. A quiet reload, after a live update, keeps what is shown when it fails and shows
785
1042
  * no loading state.
@@ -797,6 +1054,7 @@ class NhAssistantRunResultComponent {
797
1054
  this.loading.set(false);
798
1055
  this.loadFailed.set(false);
799
1056
  this.notFound.set(false);
1057
+ this.readRights(detail);
800
1058
  },
801
1059
  error: (failure) => {
802
1060
  if (quiet && this.detail() !== null) {
@@ -811,7 +1069,7 @@ class NhAssistantRunResultComponent {
811
1069
  });
812
1070
  }
813
1071
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantRunResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
814
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantRunResultComponent, isStandalone: true, selector: "nh-assistant-run-result", inputs: { runId: { classPropertyName: "runId", publicName: "runId", isSignal: true, isRequired: true, transformFunction: null }, conversationLink: { classPropertyName: "conversationLink", publicName: "conversationLink", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"run-result\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n @if (loading() && !detail()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.result.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-run-not-found>{{ 'nh-assistant.agent-runs.result.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else if (detail(); as current) {\n @let run = current.run;\n <header class=\"run-result-header\">\n <h4 [id]=\"id + '-title'\">\n <span>{{ [run.agentDisplayNameKey ?? ('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: (run.agentDisplayNameKey ?? run.agentId) }}</span>{{ ' ' }}\n <span class=\"muted\" aria-hidden=\"true\">\u00B7</span>{{ ' ' }}\n <nh-assistant-subject-link\n [subjectType]=\"run.subjectType\"\n [subjectId]=\"run.subjectId\"\n [label]=\"run.subjectDisplayName ?? run.subjectId\"\n [typeName]=\"run.subjectTypeName\"\n [link]=\"run.subjectLink\" />\n </h4>\n <div class=\"meta\">\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n @if (run.shadow) {\n <span class=\"badge warning\" data-run-shadow>{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind !== 'model') {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}</span>\n }\n </div>\n </header>\n\n <dl class=\"facts\">\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.started' | translate }}</dt>\n <dd><time [attr.datetime]=\"run.startedAt ?? run.createdAt\">{{ (run.startedAt ?? run.createdAt) | date: 'medium' }}</time></dd>\n </div>\n @if (duration(); as took) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.duration' | translate }}</dt>\n <dd data-run-duration>{{ took.key | translate: { count: took.value } }}</dd>\n </div>\n }\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.usage' | translate }}</dt>\n <dd>\n {{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }},\n {{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: tokens() } }}\n </dd>\n </div>\n @if (run.failureCode; as code) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.failure' | translate }}</dt>\n <dd data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</dd>\n </div>\n }\n @if (run.mcpConnectionSkips?.length) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.mcp-skipped' | translate }}</dt>\n <dd>\n <ul class=\"mcp-skips\" data-run-mcp-skips>\n @for (skip of run.mcpConnectionSkips; track skip.serverId) {\n <li [attr.data-run-mcp-skip]=\"skip.serverId\">\n <strong>{{ skip.serverDisplayName || skip.serverId }}</strong>: {{ codeKeys(skip.code) | nhAssistantTranslate: skip.code }}\n </li>\n }\n </ul>\n </dd>\n </div>\n }\n </dl>\n\n <!-- The answer is model output: the safe Markdown rendering shows inline HTML as text. -->\n <div class=\"result-body\">\n <h5>{{ 'nh-assistant.agent-runs.result.answer' | translate }}</h5>\n @if (current.result; as answer) {\n <div class=\"markdown\" data-run-answer [innerHTML]=\"answer | nhAssistantMarkdown\"></div>\n @if (current.resultTruncated) {\n <p class=\"muted\" data-run-truncated>{{ 'nh-assistant.agent-runs.result.truncated' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-run-no-answer>{{ 'nh-assistant.agent-runs.result.no-answer' | translate }}</p>\n @if (current.summary; as summary) {\n <p class=\"summary\">{{ summary }}</p>\n }\n }\n </div>\n\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.proposals' | translate }}</h5>\n @if (current.proposals.length > 0) {\n <nh-assistant-agent-proposals\n [proposals]=\"current.proposals\"\n (openConversation)=\"openConversation.emit($event)\" />\n } @else if (current.hiddenProposals === 0) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.result.no-proposals' | translate }}</p>\n }\n @if (current.hiddenProposals > 0) {\n <p class=\"muted\" data-hidden-proposals>{{ 'nh-assistant.agent-runs.result.hidden-proposals' | translate: { count: current.hiddenProposals } }}</p>\n }\n </div>\n\n @if (current.artifacts.length > 0) {\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.files' | translate }}</h5>\n @if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n <ul class=\"files\">\n @for (artifact of current.artifacts; track artifact.id) {\n <li [attr.data-run-artifact]=\"artifact.id\">\n <span class=\"file-name\">{{ artifact.name }}</span>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n } @else {\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.aria-label]=\"('nh-assistant.agent-runs.artifacts.download' | translate) + ' ' + artifact.name\"\n [disabled]=\"downloadingId() !== null\"\n (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (conversationLink() && current.canOpenConversation) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" data-run-conversation (click)=\"openConversation.emit(run.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n </div>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards"], outputs: ["changed", "openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }, { kind: "pipe", type: _NhAssistantMarkdownPipe, name: "nhAssistantMarkdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1072
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantRunResultComponent, isStandalone: true, selector: "nh-assistant-run-result", inputs: { runId: { classPropertyName: "runId", publicName: "runId", isSignal: true, isRequired: true, transformFunction: null }, conversationLink: { classPropertyName: "conversationLink", publicName: "conversationLink", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"run-result\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n @if (loading() && !detail()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.result.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-run-not-found>{{ 'nh-assistant.agent-runs.result.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else if (detail(); as current) {\n @let run = current.run;\n <header class=\"run-result-header\">\n <h4 [id]=\"id + '-title'\">\n <span>{{ [run.agentDisplayNameKey ?? ('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: (run.agentDisplayNameKey ?? run.agentId) }}</span>{{ ' ' }}\n <span class=\"muted\" aria-hidden=\"true\">\u00B7</span>{{ ' ' }}\n <nh-assistant-subject-link\n [subjectType]=\"run.subjectType\"\n [subjectId]=\"run.subjectId\"\n [label]=\"run.subjectDisplayName ?? run.subjectId\"\n [typeName]=\"run.subjectTypeName\"\n [link]=\"run.subjectLink\" />\n </h4>\n <div class=\"meta\">\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n @if (run.shadow) {\n <span class=\"badge warning\" data-run-shadow>{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind !== 'model') {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}</span>\n }\n </div>\n </header>\n\n <dl class=\"facts\">\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.started' | translate }}</dt>\n <dd><time [attr.datetime]=\"run.startedAt ?? run.createdAt\">{{ (run.startedAt ?? run.createdAt) | date: 'medium' }}</time></dd>\n </div>\n @if (duration(); as took) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.duration' | translate }}</dt>\n <dd data-run-duration>{{ took.key | translate: { count: took.value } }}</dd>\n </div>\n }\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.usage' | translate }}</dt>\n <dd>\n {{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }},\n {{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: tokens() } }}\n </dd>\n </div>\n @if (run.failureCode; as code) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.failure' | translate }}</dt>\n <dd data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</dd>\n </div>\n }\n @if (run.mcpConnectionSkips?.length) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.mcp-skipped' | translate }}</dt>\n <dd>\n <ul class=\"mcp-skips\" data-run-mcp-skips>\n @for (skip of run.mcpConnectionSkips; track skip.serverId) {\n <li [attr.data-run-mcp-skip]=\"skip.serverId\">\n <strong>{{ skip.serverDisplayName || skip.serverId }}</strong>: {{ codeKeys(skip.code) | nhAssistantTranslate: skip.code }}\n </li>\n }\n </ul>\n </dd>\n </div>\n }\n </dl>\n\n <!-- The answer is model output: the safe Markdown rendering shows inline HTML as text. -->\n <div class=\"result-body\">\n <h5>{{ 'nh-assistant.agent-runs.result.answer' | translate }}</h5>\n @if (current.result; as answer) {\n <div class=\"markdown\" data-run-answer [innerHTML]=\"answer | nhAssistantMarkdown\"></div>\n @if (current.resultTruncated) {\n <p class=\"muted\" data-run-truncated>{{ 'nh-assistant.agent-runs.result.truncated' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-run-no-answer>{{ 'nh-assistant.agent-runs.result.no-answer' | translate }}</p>\n @if (current.summary; as summary) {\n <p class=\"summary\">{{ summary }}</p>\n }\n }\n </div>\n\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.proposals' | translate }}</h5>\n @if (current.proposals.length > 0) {\n <nh-assistant-agent-proposals\n [proposals]=\"current.proposals\"\n [decisionRights]=\"rights()\"\n [selectable]=\"decidable()\"\n [holdClosedCards]=\"true\"\n (changed)=\"onProposalsChanged()\"\n (openConversation)=\"openConversation.emit($event)\" />\n } @else if (current.hiddenProposals === 0) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.result.no-proposals' | translate }}</p>\n }\n @if (current.hiddenProposals > 0) {\n <p class=\"muted\" data-hidden-proposals>{{ 'nh-assistant.agent-runs.result.hidden-proposals' | translate: { count: current.hiddenProposals } }}</p>\n }\n </div>\n\n @if (current.artifacts.length > 0) {\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.files' | translate }}</h5>\n @if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n <ul class=\"files\">\n @for (artifact of current.artifacts; track artifact.id) {\n <li [attr.data-run-artifact]=\"artifact.id\">\n <span class=\"file-name\">{{ artifact.name }}</span>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n } @else {\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.aria-label]=\"('nh-assistant.agent-runs.artifacts.download' | translate) + ' ' + artifact.name\"\n [disabled]=\"downloadingId() !== null\"\n (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (conversationLink() && current.canOpenConversation) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" data-run-conversation (click)=\"openConversation.emit(run.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n </div>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards", "groups", "groupByRun", "newIds"], outputs: ["changed", "openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }, { kind: "pipe", type: _NhAssistantMarkdownPipe, name: "nhAssistantMarkdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
815
1073
  }
816
1074
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantRunResultComponent, decorators: [{
817
1075
  type: Component,
@@ -823,8 +1081,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
823
1081
  _NhAssistantMarkdownPipe,
824
1082
  _NhAssistantSubjectLinkComponent,
825
1083
  NhAssistantAgentProposalsComponent
826
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"run-result\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n @if (loading() && !detail()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.result.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-run-not-found>{{ 'nh-assistant.agent-runs.result.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else if (detail(); as current) {\n @let run = current.run;\n <header class=\"run-result-header\">\n <h4 [id]=\"id + '-title'\">\n <span>{{ [run.agentDisplayNameKey ?? ('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: (run.agentDisplayNameKey ?? run.agentId) }}</span>{{ ' ' }}\n <span class=\"muted\" aria-hidden=\"true\">\u00B7</span>{{ ' ' }}\n <nh-assistant-subject-link\n [subjectType]=\"run.subjectType\"\n [subjectId]=\"run.subjectId\"\n [label]=\"run.subjectDisplayName ?? run.subjectId\"\n [typeName]=\"run.subjectTypeName\"\n [link]=\"run.subjectLink\" />\n </h4>\n <div class=\"meta\">\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n @if (run.shadow) {\n <span class=\"badge warning\" data-run-shadow>{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind !== 'model') {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}</span>\n }\n </div>\n </header>\n\n <dl class=\"facts\">\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.started' | translate }}</dt>\n <dd><time [attr.datetime]=\"run.startedAt ?? run.createdAt\">{{ (run.startedAt ?? run.createdAt) | date: 'medium' }}</time></dd>\n </div>\n @if (duration(); as took) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.duration' | translate }}</dt>\n <dd data-run-duration>{{ took.key | translate: { count: took.value } }}</dd>\n </div>\n }\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.usage' | translate }}</dt>\n <dd>\n {{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }},\n {{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: tokens() } }}\n </dd>\n </div>\n @if (run.failureCode; as code) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.failure' | translate }}</dt>\n <dd data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</dd>\n </div>\n }\n @if (run.mcpConnectionSkips?.length) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.mcp-skipped' | translate }}</dt>\n <dd>\n <ul class=\"mcp-skips\" data-run-mcp-skips>\n @for (skip of run.mcpConnectionSkips; track skip.serverId) {\n <li [attr.data-run-mcp-skip]=\"skip.serverId\">\n <strong>{{ skip.serverDisplayName || skip.serverId }}</strong>: {{ codeKeys(skip.code) | nhAssistantTranslate: skip.code }}\n </li>\n }\n </ul>\n </dd>\n </div>\n }\n </dl>\n\n <!-- The answer is model output: the safe Markdown rendering shows inline HTML as text. -->\n <div class=\"result-body\">\n <h5>{{ 'nh-assistant.agent-runs.result.answer' | translate }}</h5>\n @if (current.result; as answer) {\n <div class=\"markdown\" data-run-answer [innerHTML]=\"answer | nhAssistantMarkdown\"></div>\n @if (current.resultTruncated) {\n <p class=\"muted\" data-run-truncated>{{ 'nh-assistant.agent-runs.result.truncated' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-run-no-answer>{{ 'nh-assistant.agent-runs.result.no-answer' | translate }}</p>\n @if (current.summary; as summary) {\n <p class=\"summary\">{{ summary }}</p>\n }\n }\n </div>\n\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.proposals' | translate }}</h5>\n @if (current.proposals.length > 0) {\n <nh-assistant-agent-proposals\n [proposals]=\"current.proposals\"\n (openConversation)=\"openConversation.emit($event)\" />\n } @else if (current.hiddenProposals === 0) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.result.no-proposals' | translate }}</p>\n }\n @if (current.hiddenProposals > 0) {\n <p class=\"muted\" data-hidden-proposals>{{ 'nh-assistant.agent-runs.result.hidden-proposals' | translate: { count: current.hiddenProposals } }}</p>\n }\n </div>\n\n @if (current.artifacts.length > 0) {\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.files' | translate }}</h5>\n @if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n <ul class=\"files\">\n @for (artifact of current.artifacts; track artifact.id) {\n <li [attr.data-run-artifact]=\"artifact.id\">\n <span class=\"file-name\">{{ artifact.name }}</span>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n } @else {\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.aria-label]=\"('nh-assistant.agent-runs.artifacts.download' | translate) + ' ' + artifact.name\"\n [disabled]=\"downloadingId() !== null\"\n (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (conversationLink() && current.canOpenConversation) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" data-run-conversation (click)=\"openConversation.emit(run.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n </div>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
1084
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"run-result\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n @if (loading() && !detail()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.result.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-run-not-found>{{ 'nh-assistant.agent-runs.result.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else if (detail(); as current) {\n @let run = current.run;\n <header class=\"run-result-header\">\n <h4 [id]=\"id + '-title'\">\n <span>{{ [run.agentDisplayNameKey ?? ('nh-assistant.agents.' + run.agentId + '.name')] | nhAssistantTranslate: (run.agentDisplayNameKey ?? run.agentId) }}</span>{{ ' ' }}\n <span class=\"muted\" aria-hidden=\"true\">\u00B7</span>{{ ' ' }}\n <nh-assistant-subject-link\n [subjectType]=\"run.subjectType\"\n [subjectId]=\"run.subjectId\"\n [label]=\"run.subjectDisplayName ?? run.subjectId\"\n [typeName]=\"run.subjectTypeName\"\n [link]=\"run.subjectLink\" />\n </h4>\n <div class=\"meta\">\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n @if (run.shadow) {\n <span class=\"badge warning\" data-run-shadow>{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind !== 'model') {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}</span>\n }\n </div>\n </header>\n\n <dl class=\"facts\">\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.started' | translate }}</dt>\n <dd><time [attr.datetime]=\"run.startedAt ?? run.createdAt\">{{ (run.startedAt ?? run.createdAt) | date: 'medium' }}</time></dd>\n </div>\n @if (duration(); as took) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.duration' | translate }}</dt>\n <dd data-run-duration>{{ took.key | translate: { count: took.value } }}</dd>\n </div>\n }\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.usage' | translate }}</dt>\n <dd>\n {{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }},\n {{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: tokens() } }}\n </dd>\n </div>\n @if (run.failureCode; as code) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.failure' | translate }}</dt>\n <dd data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</dd>\n </div>\n }\n @if (run.mcpConnectionSkips?.length) {\n <div>\n <dt>{{ 'nh-assistant.agent-runs.result.mcp-skipped' | translate }}</dt>\n <dd>\n <ul class=\"mcp-skips\" data-run-mcp-skips>\n @for (skip of run.mcpConnectionSkips; track skip.serverId) {\n <li [attr.data-run-mcp-skip]=\"skip.serverId\">\n <strong>{{ skip.serverDisplayName || skip.serverId }}</strong>: {{ codeKeys(skip.code) | nhAssistantTranslate: skip.code }}\n </li>\n }\n </ul>\n </dd>\n </div>\n }\n </dl>\n\n <!-- The answer is model output: the safe Markdown rendering shows inline HTML as text. -->\n <div class=\"result-body\">\n <h5>{{ 'nh-assistant.agent-runs.result.answer' | translate }}</h5>\n @if (current.result; as answer) {\n <div class=\"markdown\" data-run-answer [innerHTML]=\"answer | nhAssistantMarkdown\"></div>\n @if (current.resultTruncated) {\n <p class=\"muted\" data-run-truncated>{{ 'nh-assistant.agent-runs.result.truncated' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-run-no-answer>{{ 'nh-assistant.agent-runs.result.no-answer' | translate }}</p>\n @if (current.summary; as summary) {\n <p class=\"summary\">{{ summary }}</p>\n }\n }\n </div>\n\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.proposals' | translate }}</h5>\n @if (current.proposals.length > 0) {\n <nh-assistant-agent-proposals\n [proposals]=\"current.proposals\"\n [decisionRights]=\"rights()\"\n [selectable]=\"decidable()\"\n [holdClosedCards]=\"true\"\n (changed)=\"onProposalsChanged()\"\n (openConversation)=\"openConversation.emit($event)\" />\n } @else if (current.hiddenProposals === 0) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.result.no-proposals' | translate }}</p>\n }\n @if (current.hiddenProposals > 0) {\n <p class=\"muted\" data-hidden-proposals>{{ 'nh-assistant.agent-runs.result.hidden-proposals' | translate: { count: current.hiddenProposals } }}</p>\n }\n </div>\n\n @if (current.artifacts.length > 0) {\n <div class=\"result-section\">\n <h5>{{ 'nh-assistant.agent-runs.result.files' | translate }}</h5>\n @if (downloadError(); as failure) {\n <p class=\"message error\" role=\"alert\" data-download-error><nh-assistant-icon name=\"warning\" />{{ downloadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n <ul class=\"files\">\n @for (artifact of current.artifacts; track artifact.id) {\n <li [attr.data-run-artifact]=\"artifact.id\">\n <span class=\"file-name\">{{ artifact.name }}</span>\n <span class=\"muted\">{{ 'nh-assistant.agent-runs.artifacts.version' | translate: { version: artifact.version } }}</span>\n @if (artifact.restricted) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.artifacts.restricted' | translate }}</span>\n } @else {\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.aria-label]=\"('nh-assistant.agent-runs.artifacts.download' | translate) + ' ' + artifact.name\"\n [disabled]=\"downloadingId() !== null\"\n (click)=\"download(artifact)\">\n <nh-assistant-icon name=\"page\" />{{ 'nh-assistant.agent-runs.artifacts.download' | translate }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n\n @if (conversationLink() && current.canOpenConversation) {\n <div class=\"card-actions\">\n <button class=\"secondary\" type=\"button\" data-run-conversation (click)=\"openConversation.emit(run.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n </div>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
827
1085
  }], ctorParameters: () => [], propDecorators: { runId: [{ type: i0.Input, args: [{ isSignal: true, alias: "runId", required: true }] }], conversationLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationLink", required: false }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
1086
+ /** The ids of the run's pending proposals in lookups of at most the lookup's limit each. */
1087
+ function pendingBatches(detail) {
1088
+ const ids = detail.proposals.filter(proposal => proposal.status === 'pending').map(proposal => proposal.approvalId);
1089
+ const batches = [];
1090
+ for (let start = 0; start < ids.length; start += NH_ASSISTANT_MAX_PROPOSAL_LOOKUP) {
1091
+ batches.push(ids.slice(start, start + NH_ASSISTANT_MAX_PROPOSAL_LOOKUP));
1092
+ }
1093
+ return batches;
1094
+ }
828
1095
  /** The time between a run's start and end, in seconds below two minutes and in minutes above. */
829
1096
  function durationOf(startedAt, endedAt) {
830
1097
  if (!startedAt || !endedAt) {
@@ -946,7 +1213,7 @@ class NhAssistantRunTimelineComponent {
946
1213
  });
947
1214
  }
948
1215
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantRunTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
949
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantRunTimelineComponent, isStandalone: true, selector: "nh-assistant-run-timeline", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", openConversation: "openConversation" }, ngImport: i0, template: "@if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n@if (receipt(); as restarted) {\n <nh-assistant-run-receipt [receipt]=\"restarted\" />\n}\n\n@if (loading() && runs().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (runs().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.run.empty' | translate }}</p>\n} @else {\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.runs' | translate\">\n @for (run of runs(); track run.id) {\n <li class=\"card\" [attr.aria-busy]=\"busyRunId() === run.id\">\n <div class=\"card-header\">\n <strong>{{ run.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}\n </span>\n @if (run.shadow) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind && run.kind !== 'model') {\n <span class=\"badge\" [attr.data-kind]=\"run.kind\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\" [attr.data-skill]=\"run.skill\">\n {{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}\n @if (run.skillChosenBy) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.skill-chosen-by.' + run.skillChosenBy | translate }}\n }\n </span>\n }\n </div>\n @if (run.requestedByAgentId; as source) {\n <p class=\"handed-off\" [attr.data-handed-off-by]=\"source\">\n {{ 'nh-assistant.agent-runs.run.handed-off-by' | translate: { agent: (['nh-assistant.agents.' + source + '.name'] | nhAssistantTranslate: source) } }}\n @if (run.requestedByConversationId; as sourceThread) {\n <button class=\"link\" type=\"button\" (click)=\"openConversation.emit(sourceThread)\">\n {{ 'nh-assistant.agent-runs.run.open-source-thread' | translate }}\n </button>\n }\n </p>\n }\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: run.inputTokens + run.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: run.proposalCount } }}</span>\n @if (run.attempt > 1) {\n <span>{{ 'nh-assistant.agent-runs.run.attempt' | translate: { attempt: run.attempt } }}</span>\n }\n @if (run.failureCode; as code) {\n <span data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n @if (run.summary) {\n <p class=\"summary\">{{ run.summary }}</p>\n }\n <div class=\"card-actions\">\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-run-result\n [attr.aria-expanded]=\"openedRunId() === run.id\"\n [attr.aria-controls]=\"id + '-' + run.id + '-result'\"\n (click)=\"toggleResult(run)\">\n <nh-assistant-icon name=\"list\" />{{ (openedRunId() === run.id ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n @if ((isOpen(run) && canCancel()) || canRetryRun(run)) {\n @if (isOpen(run) && canCancel()) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"cancel(run)\">\n <nh-assistant-icon name=\"stop\" />{{ 'nh-assistant.agent-runs.run.cancel' | translate }}\n </button>\n }\n @if (canRetryRun(run)) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'resume')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.resume' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'restart')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.restart' | translate }}\n </button>\n }\n }\n </div>\n @if (openedRunId() === run.id) {\n <div class=\"work\" [id]=\"id + '-' + run.id + '-result'\">\n <nh-assistant-run-result\n [runId]=\"run.id\"\n [conversationLink]=\"false\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ol>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantRunTimelineComponent, isStandalone: true, selector: "nh-assistant-run-timeline", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", openConversation: "openConversation" }, ngImport: i0, template: "@if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n@if (receipt(); as restarted) {\n <nh-assistant-run-receipt [receipt]=\"restarted\" />\n}\n\n@if (loading() && runs().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (runs().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.run.empty' | translate }}</p>\n} @else {\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.runs' | translate\">\n @for (run of runs(); track run.id) {\n <li class=\"card\" [attr.aria-busy]=\"busyRunId() === run.id\">\n <div class=\"card-header\">\n <strong>{{ run.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}\n </span>\n @if (run.shadow) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind && run.kind !== 'model') {\n <span class=\"badge\" [attr.data-kind]=\"run.kind\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\" [attr.data-skill]=\"run.skill\">\n {{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}\n @if (run.skillChosenBy) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.skill-chosen-by.' + run.skillChosenBy | translate }}\n }\n </span>\n }\n </div>\n @if (run.requestedByAgentId; as source) {\n <p class=\"handed-off\" [attr.data-handed-off-by]=\"source\">\n {{ 'nh-assistant.agent-runs.run.handed-off-by' | translate: { agent: (['nh-assistant.agents.' + source + '.name'] | nhAssistantTranslate: source) } }}\n @if (run.requestedByConversationId; as sourceThread) {\n <button class=\"link\" type=\"button\" (click)=\"openConversation.emit(sourceThread)\">\n {{ 'nh-assistant.agent-runs.run.open-source-thread' | translate }}\n </button>\n }\n </p>\n }\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: run.inputTokens + run.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: run.proposalCount } }}</span>\n @if (run.attempt > 1) {\n <span>{{ 'nh-assistant.agent-runs.run.attempt' | translate: { attempt: run.attempt } }}</span>\n }\n @if (run.failureCode; as code) {\n <span data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n @if (run.summary) {\n <p class=\"summary\">{{ run.summary }}</p>\n }\n <div class=\"card-actions\">\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-run-result\n [attr.aria-expanded]=\"openedRunId() === run.id\"\n [attr.aria-controls]=\"id + '-' + run.id + '-result'\"\n (click)=\"toggleResult(run)\">\n <nh-assistant-icon name=\"list\" />{{ (openedRunId() === run.id ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n @if ((isOpen(run) && canCancel()) || canRetryRun(run)) {\n @if (isOpen(run) && canCancel()) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"cancel(run)\">\n <nh-assistant-icon name=\"stop\" />{{ 'nh-assistant.agent-runs.run.cancel' | translate }}\n </button>\n }\n @if (canRetryRun(run)) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'resume')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.resume' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'restart')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.restart' | translate }}\n </button>\n }\n }\n </div>\n @if (openedRunId() === run.id) {\n <div class=\"work\" [id]=\"id + '-' + run.id + '-result'\">\n <nh-assistant-run-result\n [runId]=\"run.id\"\n [conversationLink]=\"false\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ol>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
950
1217
  }
951
1218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantRunTimelineComponent, decorators: [{
952
1219
  type: Component,
@@ -957,7 +1224,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
957
1224
  _NhAssistantIconComponent,
958
1225
  NhAssistantRunResultComponent,
959
1226
  NhAssistantRunReceiptComponent
960
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n@if (receipt(); as restarted) {\n <nh-assistant-run-receipt [receipt]=\"restarted\" />\n}\n\n@if (loading() && runs().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (runs().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.run.empty' | translate }}</p>\n} @else {\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.runs' | translate\">\n @for (run of runs(); track run.id) {\n <li class=\"card\" [attr.aria-busy]=\"busyRunId() === run.id\">\n <div class=\"card-header\">\n <strong>{{ run.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}\n </span>\n @if (run.shadow) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind && run.kind !== 'model') {\n <span class=\"badge\" [attr.data-kind]=\"run.kind\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\" [attr.data-skill]=\"run.skill\">\n {{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}\n @if (run.skillChosenBy) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.skill-chosen-by.' + run.skillChosenBy | translate }}\n }\n </span>\n }\n </div>\n @if (run.requestedByAgentId; as source) {\n <p class=\"handed-off\" [attr.data-handed-off-by]=\"source\">\n {{ 'nh-assistant.agent-runs.run.handed-off-by' | translate: { agent: (['nh-assistant.agents.' + source + '.name'] | nhAssistantTranslate: source) } }}\n @if (run.requestedByConversationId; as sourceThread) {\n <button class=\"link\" type=\"button\" (click)=\"openConversation.emit(sourceThread)\">\n {{ 'nh-assistant.agent-runs.run.open-source-thread' | translate }}\n </button>\n }\n </p>\n }\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: run.inputTokens + run.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: run.proposalCount } }}</span>\n @if (run.attempt > 1) {\n <span>{{ 'nh-assistant.agent-runs.run.attempt' | translate: { attempt: run.attempt } }}</span>\n }\n @if (run.failureCode; as code) {\n <span data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n @if (run.summary) {\n <p class=\"summary\">{{ run.summary }}</p>\n }\n <div class=\"card-actions\">\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-run-result\n [attr.aria-expanded]=\"openedRunId() === run.id\"\n [attr.aria-controls]=\"id + '-' + run.id + '-result'\"\n (click)=\"toggleResult(run)\">\n <nh-assistant-icon name=\"list\" />{{ (openedRunId() === run.id ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n @if ((isOpen(run) && canCancel()) || canRetryRun(run)) {\n @if (isOpen(run) && canCancel()) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"cancel(run)\">\n <nh-assistant-icon name=\"stop\" />{{ 'nh-assistant.agent-runs.run.cancel' | translate }}\n </button>\n }\n @if (canRetryRun(run)) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'resume')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.resume' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'restart')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.restart' | translate }}\n </button>\n }\n }\n </div>\n @if (openedRunId() === run.id) {\n <div class=\"work\" [id]=\"id + '-' + run.id + '-result'\">\n <nh-assistant-run-result\n [runId]=\"run.id\"\n [conversationLink]=\"false\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ol>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
1227
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n}\n@if (receipt(); as restarted) {\n <nh-assistant-run-receipt [receipt]=\"restarted\" />\n}\n\n@if (loading() && runs().length === 0) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n} @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n} @else if (runs().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.run.empty' | translate }}</p>\n} @else {\n <ol class=\"cards\" [attr.aria-label]=\"'nh-assistant.agent-runs.thread.tabs.runs' | translate\">\n @for (run of runs(); track run.id) {\n <li class=\"card\" [attr.aria-busy]=\"busyRunId() === run.id\">\n <div class=\"card-header\">\n <strong>{{ run.createdAt | date: 'short' }}</strong>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.warning]=\"run.status === 'waiting-for-approval' || run.status === 'queued' || run.status === 'running'\"\n [class.danger]=\"run.status === 'failed'\">\n {{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}\n </span>\n @if (run.shadow) {\n <span class=\"badge\">{{ 'nh-assistant.agent-runs.run.shadow' | translate }}</span>\n }\n @if (run.kind && run.kind !== 'model') {\n <span class=\"badge\" [attr.data-kind]=\"run.kind\">{{ 'nh-assistant.agent-runs.run.kind.' + run.kind | translate }}</span>\n }\n <span class=\"mono muted\">{{ 'nh-assistant.agent-runs.run.trigger' | translate: { trigger: run.triggerId } }}</span>\n @if (run.skill) {\n <span class=\"badge\" [attr.data-skill]=\"run.skill\">\n {{ 'nh-assistant.agent-runs.run.skill' | translate: { skill: run.skill } }}\n @if (run.skillChosenBy) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.skill-chosen-by.' + run.skillChosenBy | translate }}\n }\n </span>\n }\n </div>\n @if (run.requestedByAgentId; as source) {\n <p class=\"handed-off\" [attr.data-handed-off-by]=\"source\">\n {{ 'nh-assistant.agent-runs.run.handed-off-by' | translate: { agent: (['nh-assistant.agents.' + source + '.name'] | nhAssistantTranslate: source) } }}\n @if (run.requestedByConversationId; as sourceThread) {\n <button class=\"link\" type=\"button\" (click)=\"openConversation.emit(sourceThread)\">\n {{ 'nh-assistant.agent-runs.run.open-source-thread' | translate }}\n </button>\n }\n </p>\n }\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.run.tool-calls' | translate: { count: run.toolCalls } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.tokens' | translate: { count: run.inputTokens + run.outputTokens } }}</span>\n <span>{{ 'nh-assistant.agent-runs.run.proposals' | translate: { count: run.proposalCount } }}</span>\n @if (run.attempt > 1) {\n <span>{{ 'nh-assistant.agent-runs.run.attempt' | translate: { attempt: run.attempt } }}</span>\n }\n @if (run.failureCode; as code) {\n <span data-run-failure>{{ codeKeys(code) | nhAssistantTranslate: code }}</span>\n }\n </div>\n @if (run.summary) {\n <p class=\"summary\">{{ run.summary }}</p>\n }\n <div class=\"card-actions\">\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-run-result\n [attr.aria-expanded]=\"openedRunId() === run.id\"\n [attr.aria-controls]=\"id + '-' + run.id + '-result'\"\n (click)=\"toggleResult(run)\">\n <nh-assistant-icon name=\"list\" />{{ (openedRunId() === run.id ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n @if ((isOpen(run) && canCancel()) || canRetryRun(run)) {\n @if (isOpen(run) && canCancel()) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"cancel(run)\">\n <nh-assistant-icon name=\"stop\" />{{ 'nh-assistant.agent-runs.run.cancel' | translate }}\n </button>\n }\n @if (canRetryRun(run)) {\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'resume')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.resume' | translate }}\n </button>\n <button class=\"secondary\" type=\"button\" [disabled]=\"busyRunId() !== null\" (click)=\"retry(run, 'restart')\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.run.restart' | translate }}\n </button>\n }\n }\n </div>\n @if (openedRunId() === run.id) {\n <div class=\"work\" [id]=\"id + '-' + run.id + '-result'\">\n <nh-assistant-run-result\n [runId]=\"run.id\"\n [conversationLink]=\"false\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ol>\n}\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
961
1228
  }], ctorParameters: () => [], propDecorators: { conversationId: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationId", required: true }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
962
1229
 
963
1230
  /**
@@ -1102,7 +1369,7 @@ class NhAssistantAgentThreadViewComponent {
1102
1369
  });
1103
1370
  }
1104
1371
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentThreadViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentThreadViewComponent, isStandalone: true, selector: "nh-assistant-agent-thread-view", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: true, transformFunction: null }, subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openConversation: "openConversation" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-thread-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-thread-title\">\n @if (thread(); as current) {\n <nh-assistant-subject-link\n [subjectType]=\"current.subjectType\"\n [subjectId]=\"current.subjectId\"\n [label]=\"current.subjectDisplayName ?? ('nh-assistant.agent-runs.thread.title' | translate)\"\n [typeName]=\"current.subjectTypeName\"\n [link]=\"current.subjectLink\" />\n } @else {\n {{ 'nh-assistant.agent-runs.thread.title' | translate }}\n }\n </h3>\n <p class=\"muted\">\n {{ 'nh-assistant.agent-runs.role.' + role() | translate }}\n @if (thread()?.activeRun; as activeRun) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n }\n @if (thread()?.waitingInputs) {\n \u00B7 {{ 'nh-assistant.agent-runs.thread.waiting-inputs' | translate: { count: thread()!.waitingInputs } }}\n }\n </p>\n @if (thread()?.shadow) {\n <p class=\"muted\" data-shadow-thread>{{ 'nh-assistant.agent-runs.thread.shadow' | translate }}</p>\n }\n </div>\n <div class=\"toolbar\">\n @if (thread(); as current) {\n <button class=\"secondary\" type=\"button\" (click)=\"openConversation.emit(current.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n }\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (receipt(); as started) {\n <nh-assistant-run-receipt [receipt]=\"started\" />\n }\n\n @if (loading() && !lookup()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (lookup()?.canStart) {\n <form class=\"toolbar\" (submit)=\"$event.preventDefault(); start()\">\n <textarea\n class=\"reason\"\n rows=\"2\"\n maxlength=\"4000\"\n [value]=\"message()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n [placeholder]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n (input)=\"onMessage($event)\"></textarea>\n <button class=\"primary\" type=\"submit\" [disabled]=\"starting()\">\n <nh-assistant-icon name=\"send\" />{{ (starting() ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n </form>\n }\n\n @if (thread(); as current) {\n <div class=\"tabs\" role=\"tablist\">\n @for (item of tabs; track item) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"tab() === item\"\n (click)=\"tab.set(item)\">\n {{ 'nh-assistant.agent-runs.thread.tabs.' + item | translate }}\n </button>\n }\n </div>\n <div role=\"tabpanel\">\n @switch (tab()) {\n @case ('proposals') {\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-proposals' | translate }}</p>\n } @else {\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [canDecide]=\"role() === 'approver'\"\n (changed)=\"loadProposals()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n }\n @case ('runs') {\n <nh-assistant-run-timeline\n [conversationId]=\"current.conversationId\"\n [role]=\"role()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n @case ('consultations') {\n <nh-assistant-agent-consultations [conversationId]=\"current.conversationId\" />\n }\n @case ('memory') {\n <nh-assistant-agent-memory [conversationId]=\"current.conversationId\" />\n }\n @case ('artifacts') {\n <nh-assistant-agent-artifacts [conversationId]=\"current.conversationId\" />\n }\n }\n </div>\n } @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantRunTimelineComponent, selector: "nh-assistant-run-timeline", inputs: ["conversationId", "role"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantAgentMemoryComponent, selector: "nh-assistant-agent-memory", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantAgentArtifactsComponent, selector: "nh-assistant-agent-artifacts", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantAgentConsultationsComponent, selector: "nh-assistant-agent-consultations", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1372
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentThreadViewComponent, isStandalone: true, selector: "nh-assistant-agent-thread-view", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: true, transformFunction: null }, subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openConversation: "openConversation" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-thread-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-thread-title\">\n @if (thread(); as current) {\n <nh-assistant-subject-link\n [subjectType]=\"current.subjectType\"\n [subjectId]=\"current.subjectId\"\n [label]=\"current.subjectDisplayName ?? ('nh-assistant.agent-runs.thread.title' | translate)\"\n [typeName]=\"current.subjectTypeName\"\n [link]=\"current.subjectLink\" />\n } @else {\n {{ 'nh-assistant.agent-runs.thread.title' | translate }}\n }\n </h3>\n <p class=\"muted\">\n {{ 'nh-assistant.agent-runs.role.' + role() | translate }}\n @if (thread()?.activeRun; as activeRun) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n }\n @if (thread()?.waitingInputs) {\n \u00B7 {{ 'nh-assistant.agent-runs.thread.waiting-inputs' | translate: { count: thread()!.waitingInputs } }}\n }\n </p>\n @if (thread()?.shadow) {\n <p class=\"muted\" data-shadow-thread>{{ 'nh-assistant.agent-runs.thread.shadow' | translate }}</p>\n }\n </div>\n <div class=\"toolbar\">\n @if (thread(); as current) {\n <button class=\"secondary\" type=\"button\" (click)=\"openConversation.emit(current.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n }\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (receipt(); as started) {\n <nh-assistant-run-receipt [receipt]=\"started\" />\n }\n\n @if (loading() && !lookup()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (lookup()?.canStart) {\n <form class=\"toolbar\" (submit)=\"$event.preventDefault(); start()\">\n <textarea\n class=\"reason\"\n rows=\"2\"\n maxlength=\"4000\"\n [value]=\"message()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n [placeholder]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n (input)=\"onMessage($event)\"></textarea>\n <button class=\"primary\" type=\"submit\" [disabled]=\"starting()\">\n <nh-assistant-icon name=\"send\" />{{ (starting() ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n </form>\n }\n\n @if (thread(); as current) {\n <div class=\"tabs\" role=\"tablist\">\n @for (item of tabs; track item) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"tab() === item\"\n (click)=\"tab.set(item)\">\n {{ 'nh-assistant.agent-runs.thread.tabs.' + item | translate }}\n </button>\n }\n </div>\n <div role=\"tabpanel\">\n @switch (tab()) {\n @case ('proposals') {\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-proposals' | translate }}</p>\n } @else {\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [canDecide]=\"role() === 'approver'\"\n (changed)=\"loadProposals()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n }\n @case ('runs') {\n <nh-assistant-run-timeline\n [conversationId]=\"current.conversationId\"\n [role]=\"role()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n @case ('consultations') {\n <nh-assistant-agent-consultations [conversationId]=\"current.conversationId\" />\n }\n @case ('memory') {\n <nh-assistant-agent-memory [conversationId]=\"current.conversationId\" />\n }\n @case ('artifacts') {\n <nh-assistant-agent-artifacts [conversationId]=\"current.conversationId\" />\n }\n }\n </div>\n } @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: _NhAssistantSubjectLinkComponent, selector: "nh-assistant-subject-link", inputs: ["subjectType", "subjectId", "label", "typeName", "link"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards", "groups", "groupByRun", "newIds"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantRunTimelineComponent, selector: "nh-assistant-run-timeline", inputs: ["conversationId", "role"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantAgentMemoryComponent, selector: "nh-assistant-agent-memory", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantAgentArtifactsComponent, selector: "nh-assistant-agent-artifacts", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantAgentConsultationsComponent, selector: "nh-assistant-agent-consultations", inputs: ["conversationId"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1106
1373
  }
1107
1374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentThreadViewComponent, decorators: [{
1108
1375
  type: Component,
@@ -1117,7 +1384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
1117
1384
  NhAssistantAgentArtifactsComponent,
1118
1385
  NhAssistantAgentConsultationsComponent,
1119
1386
  NhAssistantRunReceiptComponent
1120
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-thread-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-thread-title\">\n @if (thread(); as current) {\n <nh-assistant-subject-link\n [subjectType]=\"current.subjectType\"\n [subjectId]=\"current.subjectId\"\n [label]=\"current.subjectDisplayName ?? ('nh-assistant.agent-runs.thread.title' | translate)\"\n [typeName]=\"current.subjectTypeName\"\n [link]=\"current.subjectLink\" />\n } @else {\n {{ 'nh-assistant.agent-runs.thread.title' | translate }}\n }\n </h3>\n <p class=\"muted\">\n {{ 'nh-assistant.agent-runs.role.' + role() | translate }}\n @if (thread()?.activeRun; as activeRun) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n }\n @if (thread()?.waitingInputs) {\n \u00B7 {{ 'nh-assistant.agent-runs.thread.waiting-inputs' | translate: { count: thread()!.waitingInputs } }}\n }\n </p>\n @if (thread()?.shadow) {\n <p class=\"muted\" data-shadow-thread>{{ 'nh-assistant.agent-runs.thread.shadow' | translate }}</p>\n }\n </div>\n <div class=\"toolbar\">\n @if (thread(); as current) {\n <button class=\"secondary\" type=\"button\" (click)=\"openConversation.emit(current.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n }\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (receipt(); as started) {\n <nh-assistant-run-receipt [receipt]=\"started\" />\n }\n\n @if (loading() && !lookup()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (lookup()?.canStart) {\n <form class=\"toolbar\" (submit)=\"$event.preventDefault(); start()\">\n <textarea\n class=\"reason\"\n rows=\"2\"\n maxlength=\"4000\"\n [value]=\"message()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n [placeholder]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n (input)=\"onMessage($event)\"></textarea>\n <button class=\"primary\" type=\"submit\" [disabled]=\"starting()\">\n <nh-assistant-icon name=\"send\" />{{ (starting() ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n </form>\n }\n\n @if (thread(); as current) {\n <div class=\"tabs\" role=\"tablist\">\n @for (item of tabs; track item) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"tab() === item\"\n (click)=\"tab.set(item)\">\n {{ 'nh-assistant.agent-runs.thread.tabs.' + item | translate }}\n </button>\n }\n </div>\n <div role=\"tabpanel\">\n @switch (tab()) {\n @case ('proposals') {\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-proposals' | translate }}</p>\n } @else {\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [canDecide]=\"role() === 'approver'\"\n (changed)=\"loadProposals()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n }\n @case ('runs') {\n <nh-assistant-run-timeline\n [conversationId]=\"current.conversationId\"\n [role]=\"role()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n @case ('consultations') {\n <nh-assistant-agent-consultations [conversationId]=\"current.conversationId\" />\n }\n @case ('memory') {\n <nh-assistant-agent-memory [conversationId]=\"current.conversationId\" />\n }\n @case ('artifacts') {\n <nh-assistant-agent-artifacts [conversationId]=\"current.conversationId\" />\n }\n }\n </div>\n } @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
1387
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" aria-labelledby=\"nh-assistant-agent-thread-title\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 id=\"nh-assistant-agent-thread-title\">\n @if (thread(); as current) {\n <nh-assistant-subject-link\n [subjectType]=\"current.subjectType\"\n [subjectId]=\"current.subjectId\"\n [label]=\"current.subjectDisplayName ?? ('nh-assistant.agent-runs.thread.title' | translate)\"\n [typeName]=\"current.subjectTypeName\"\n [link]=\"current.subjectLink\" />\n } @else {\n {{ 'nh-assistant.agent-runs.thread.title' | translate }}\n }\n </h3>\n <p class=\"muted\">\n {{ 'nh-assistant.agent-runs.role.' + role() | translate }}\n @if (thread()?.activeRun; as activeRun) {\n \u00B7 {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n }\n @if (thread()?.waitingInputs) {\n \u00B7 {{ 'nh-assistant.agent-runs.thread.waiting-inputs' | translate: { count: thread()!.waitingInputs } }}\n }\n </p>\n @if (thread()?.shadow) {\n <p class=\"muted\" data-shadow-thread>{{ 'nh-assistant.agent-runs.thread.shadow' | translate }}</p>\n }\n </div>\n <div class=\"toolbar\">\n @if (thread(); as current) {\n <button class=\"secondary\" type=\"button\" (click)=\"openConversation.emit(current.conversationId)\">\n <nh-assistant-icon name=\"link\" />{{ 'nh-assistant.agent-runs.thread.open-conversation' | translate }}\n </button>\n }\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (receipt(); as started) {\n <nh-assistant-run-receipt [receipt]=\"started\" />\n }\n\n @if (loading() && !lookup()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (lookup()?.canStart) {\n <form class=\"toolbar\" (submit)=\"$event.preventDefault(); start()\">\n <textarea\n class=\"reason\"\n rows=\"2\"\n maxlength=\"4000\"\n [value]=\"message()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n [placeholder]=\"'nh-assistant.agent-runs.thread.start-message' | translate\"\n (input)=\"onMessage($event)\"></textarea>\n <button class=\"primary\" type=\"submit\" [disabled]=\"starting()\">\n <nh-assistant-icon name=\"send\" />{{ (starting() ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n </form>\n }\n\n @if (thread(); as current) {\n <div class=\"tabs\" role=\"tablist\">\n @for (item of tabs; track item) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"tab() === item\"\n (click)=\"tab.set(item)\">\n {{ 'nh-assistant.agent-runs.thread.tabs.' + item | translate }}\n </button>\n }\n </div>\n <div role=\"tabpanel\">\n @switch (tab()) {\n @case ('proposals') {\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-proposals' | translate }}</p>\n } @else {\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [canDecide]=\"role() === 'approver'\"\n (changed)=\"loadProposals()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n }\n @case ('runs') {\n <nh-assistant-run-timeline\n [conversationId]=\"current.conversationId\"\n [role]=\"role()\"\n (changed)=\"load()\"\n (openConversation)=\"openConversation.emit($event)\" />\n }\n @case ('consultations') {\n <nh-assistant-agent-consultations [conversationId]=\"current.conversationId\" />\n }\n @case ('memory') {\n <nh-assistant-agent-memory [conversationId]=\"current.conversationId\" />\n }\n @case ('artifacts') {\n <nh-assistant-agent-artifacts [conversationId]=\"current.conversationId\" />\n }\n }\n </div>\n } @else {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
1121
1388
  }], ctorParameters: () => [], propDecorators: { proposalList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NhAssistantAgentProposalsComponent), { isSignal: true }] }], agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: true }] }], subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: true }] }], subjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectId", required: true }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
1122
1389
 
1123
1390
  let nextSuggestionsId = 0;
@@ -1315,7 +1582,7 @@ class NhAssistantSubjectSuggestionsComponent {
1315
1582
  });
1316
1583
  }
1317
1584
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantSubjectSuggestionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1318
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantSubjectSuggestionsComponent, isStandalone: true, selector: "nh-assistant-subject-suggestions", inputs: { subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null }, agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { conversationOpened: "conversationOpened", runConversationOpened: "runConversationOpened" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"headingId\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"headingId\">{{ 'nh-assistant.agent-runs.subject.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.subject.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (started(); as start) {\n <nh-assistant-run-receipt [receipt]=\"start.receipt\" />\n }\n\n @if (loading() && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (unavailable()) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.unavailable' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (agents().length > 0) {\n <ul class=\"subject-agents\" [attr.aria-label]=\"'nh-assistant.agent-runs.subject.agents' | translate\">\n @for (agent of agents(); track agent.agentId) {\n @let name = agentNameKeys(agent) | nhAssistantTranslate: (agent.displayNameKey ?? agent.agentId);\n <li class=\"subject-agent\">\n <div class=\"subject-agent-text\">\n <strong>{{ name }}</strong>\n <span class=\"muted\">\n @if (agent.thread?.activeRun; as activeRun) {\n {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n } @else if (!agent.thread) {\n {{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}\n } @else {\n {{ 'nh-assistant.agent-runs.subject.idle' | translate }}\n }\n </span>\n </div>\n <div class=\"card-actions\">\n @if (canOpen(agent)) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"opening() !== null || !assistantEnabled()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.open-conversation-label' | translate: { agent: name }\"\n [attr.title]=\"assistantEnabled() ? null : ('nh-assistant.agent-runs.subject.assistant-unavailable' | translate)\"\n (click)=\"open(agent)\">\n <nh-assistant-icon name=\"assistant\" />{{ (opening() === agent.agentId ? 'nh-assistant.agent-runs.subject.opening' : 'nh-assistant.agent-runs.thread.open-conversation') | translate }}\n </button>\n }\n @if (agent.canStart) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"starting() !== null\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.start-label' | translate: { agent: name }\"\n (click)=\"start(agent)\">\n <nh-assistant-icon name=\"send\" />{{ (starting() === agent.agentId ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [decisionRights]=\"decisionRights()\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openRunConversation($event)\" />\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.empty' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1585
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantSubjectSuggestionsComponent, isStandalone: true, selector: "nh-assistant-subject-suggestions", inputs: { subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null }, agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { conversationOpened: "conversationOpened", runConversationOpened: "runConversationOpened" }, viewQueries: [{ propertyName: "proposalList", first: true, predicate: NhAssistantAgentProposalsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"headingId\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"headingId\">{{ 'nh-assistant.agent-runs.subject.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.subject.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (started(); as start) {\n <nh-assistant-run-receipt [receipt]=\"start.receipt\" />\n }\n\n @if (loading() && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (unavailable()) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.unavailable' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (agents().length > 0) {\n <ul class=\"subject-agents\" [attr.aria-label]=\"'nh-assistant.agent-runs.subject.agents' | translate\">\n @for (agent of agents(); track agent.agentId) {\n @let name = agentNameKeys(agent) | nhAssistantTranslate: (agent.displayNameKey ?? agent.agentId);\n <li class=\"subject-agent\">\n <div class=\"subject-agent-text\">\n <strong>{{ name }}</strong>\n <span class=\"muted\">\n @if (agent.thread?.activeRun; as activeRun) {\n {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n } @else if (!agent.thread) {\n {{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}\n } @else {\n {{ 'nh-assistant.agent-runs.subject.idle' | translate }}\n }\n </span>\n </div>\n <div class=\"card-actions\">\n @if (canOpen(agent)) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"opening() !== null || !assistantEnabled()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.open-conversation-label' | translate: { agent: name }\"\n [attr.title]=\"assistantEnabled() ? null : ('nh-assistant.agent-runs.subject.assistant-unavailable' | translate)\"\n (click)=\"open(agent)\">\n <nh-assistant-icon name=\"assistant\" />{{ (opening() === agent.agentId ? 'nh-assistant.agent-runs.subject.opening' : 'nh-assistant.agent-runs.thread.open-conversation') | translate }}\n </button>\n }\n @if (agent.canStart) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"starting() !== null\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.start-label' | translate: { agent: name }\"\n (click)=\"start(agent)\">\n <nh-assistant-icon name=\"send\" />{{ (starting() === agent.agentId ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [decisionRights]=\"decisionRights()\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openRunConversation($event)\" />\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.empty' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantAgentProposalsComponent, selector: "nh-assistant-agent-proposals", inputs: ["proposals", "canDecide", "decisionRights", "selectable", "holdClosedCards", "groups", "groupByRun", "newIds"], outputs: ["changed", "openConversation"] }, { kind: "component", type: NhAssistantRunReceiptComponent, selector: "nh-assistant-run-receipt", inputs: ["receipt", "focusable"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1319
1586
  }
1320
1587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantSubjectSuggestionsComponent, decorators: [{
1321
1588
  type: Component,
@@ -1325,7 +1592,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
1325
1592
  _NhAssistantIconComponent,
1326
1593
  NhAssistantAgentProposalsComponent,
1327
1594
  NhAssistantRunReceiptComponent
1328
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"headingId\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"headingId\">{{ 'nh-assistant.agent-runs.subject.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.subject.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (started(); as start) {\n <nh-assistant-run-receipt [receipt]=\"start.receipt\" />\n }\n\n @if (loading() && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (unavailable()) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.unavailable' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (agents().length > 0) {\n <ul class=\"subject-agents\" [attr.aria-label]=\"'nh-assistant.agent-runs.subject.agents' | translate\">\n @for (agent of agents(); track agent.agentId) {\n @let name = agentNameKeys(agent) | nhAssistantTranslate: (agent.displayNameKey ?? agent.agentId);\n <li class=\"subject-agent\">\n <div class=\"subject-agent-text\">\n <strong>{{ name }}</strong>\n <span class=\"muted\">\n @if (agent.thread?.activeRun; as activeRun) {\n {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n } @else if (!agent.thread) {\n {{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}\n } @else {\n {{ 'nh-assistant.agent-runs.subject.idle' | translate }}\n }\n </span>\n </div>\n <div class=\"card-actions\">\n @if (canOpen(agent)) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"opening() !== null || !assistantEnabled()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.open-conversation-label' | translate: { agent: name }\"\n [attr.title]=\"assistantEnabled() ? null : ('nh-assistant.agent-runs.subject.assistant-unavailable' | translate)\"\n (click)=\"open(agent)\">\n <nh-assistant-icon name=\"assistant\" />{{ (opening() === agent.agentId ? 'nh-assistant.agent-runs.subject.opening' : 'nh-assistant.agent-runs.thread.open-conversation') | translate }}\n </button>\n }\n @if (agent.canStart) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"starting() !== null\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.start-label' | translate: { agent: name }\"\n (click)=\"start(agent)\">\n <nh-assistant-icon name=\"send\" />{{ (starting() === agent.agentId ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [decisionRights]=\"decisionRights()\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openRunConversation($event)\" />\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.empty' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
1595
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"headingId\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"headingId\">{{ 'nh-assistant.agent-runs.subject.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.subject.description' | translate }}</p>\n </div>\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </header>\n\n @if (error(); as failure) {\n <p class=\"message error\" role=\"alert\"><nh-assistant-icon name=\"warning\" />{{ errorKeys() | nhAssistantTranslate: failure.code }}</p>\n }\n @if (started(); as start) {\n <nh-assistant-run-receipt [receipt]=\"start.receipt\" />\n }\n\n @if (loading() && !loaded()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.loading' | translate }}</p>\n } @else if (unavailable()) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.unavailable' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n @if (agents().length > 0) {\n <ul class=\"subject-agents\" [attr.aria-label]=\"'nh-assistant.agent-runs.subject.agents' | translate\">\n @for (agent of agents(); track agent.agentId) {\n @let name = agentNameKeys(agent) | nhAssistantTranslate: (agent.displayNameKey ?? agent.agentId);\n <li class=\"subject-agent\">\n <div class=\"subject-agent-text\">\n <strong>{{ name }}</strong>\n <span class=\"muted\">\n @if (agent.thread?.activeRun; as activeRun) {\n {{ 'nh-assistant.agent-runs.run.status.' + activeRun.status | translate }}\n } @else if (!agent.thread) {\n {{ 'nh-assistant.agent-runs.thread.no-thread' | translate }}\n } @else {\n {{ 'nh-assistant.agent-runs.subject.idle' | translate }}\n }\n </span>\n </div>\n <div class=\"card-actions\">\n @if (canOpen(agent)) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"opening() !== null || !assistantEnabled()\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.open-conversation-label' | translate: { agent: name }\"\n [attr.title]=\"assistantEnabled() ? null : ('nh-assistant.agent-runs.subject.assistant-unavailable' | translate)\"\n (click)=\"open(agent)\">\n <nh-assistant-icon name=\"assistant\" />{{ (opening() === agent.agentId ? 'nh-assistant.agent-runs.subject.opening' : 'nh-assistant.agent-runs.thread.open-conversation') | translate }}\n </button>\n }\n @if (agent.canStart) {\n <button\n class=\"secondary\"\n type=\"button\"\n [disabled]=\"starting() !== null\"\n [attr.aria-label]=\"'nh-assistant.agent-runs.subject.start-label' | translate: { agent: name }\"\n (click)=\"start(agent)\">\n <nh-assistant-icon name=\"send\" />{{ (starting() === agent.agentId ? 'nh-assistant.agent-runs.thread.starting' : 'nh-assistant.agent-runs.thread.start') | translate }}\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Stays rendered when the list empties, so the optional feedback after a rejection remains. -->\n <nh-assistant-agent-proposals\n [proposals]=\"proposals()\"\n [decisionRights]=\"decisionRights()\"\n [holdClosedCards]=\"true\"\n (changed)=\"load()\"\n (openConversation)=\"openRunConversation($event)\" />\n @if (proposals().length === 0) {\n <p class=\"state\">{{ 'nh-assistant.agent-runs.subject.empty' | translate }}</p>\n }\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
1329
1596
  }], ctorParameters: () => [], propDecorators: { proposalList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NhAssistantAgentProposalsComponent), { isSignal: true }] }], subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: true }] }], subjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectId", required: true }] }], agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: false }] }], conversationOpened: [{ type: i0.Output, args: ["conversationOpened"] }], runConversationOpened: [{ type: i0.Output, args: ["runConversationOpened"] }] } });
1330
1597
 
1331
1598
  /** Lookups that cannot succeed by asking again: the person changes the id instead. */
@@ -1814,7 +2081,7 @@ class NhAssistantObjectAgentsComponent {
1814
2081
  });
1815
2082
  }
1816
2083
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantObjectAgentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1817
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantObjectAgentsComponent, isStandalone: true, selector: "nh-assistant-object-agents", inputs: { subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ 'nh-assistant.agent-runs.object-agents.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.description' | translate }}</p>\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !listing()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.object-agents.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\" data-object-agents-error>\n @if (loadError(); as failure) {\n <p>{{ loadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n } @else {\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n }\n @if (loadRetryable()) {\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n }\n </div>\n } @else if (agents().length === 0) {\n <p class=\"state\" data-object-agents-empty>{{ 'nh-assistant.agent-runs.object-agents.empty' | translate }}</p>\n } @else {\n <ul class=\"cards\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card\" [attr.data-object-agent]=\"agent.agentId\">\n <div class=\"card-header\">\n <strong>{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n\n <!-- The latest run: its status and time, and the beginning of its result as plain text. -->\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.object-agents.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n @if (run.shadow) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.object-agents.shadow' | translate }}</span>\n }\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <p class=\"summary result\" data-latest-result>\n <span class=\"visually-hidden\">{{ 'nh-assistant.agent-runs.object-agents.result-label' | translate }}: </span>{{ result }}@if (run.resultTruncated) {\u2026}\n </p>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.object-agents.never' | translate }}</p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-object-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.object-agents.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-result\n [attr.aria-expanded]=\"resultShown() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-result'\"\n (click)=\"toggleResult(agent)\">\n <nh-assistant-icon name=\"page\" />{{ (resultShown() === agent.agentId ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.conversationId) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-work\n [attr.aria-expanded]=\"expanded() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-work'\"\n (click)=\"toggleWork(agent)\">\n <nh-assistant-icon name=\"list\" />{{ (expanded() === agent.agentId ? 'nh-assistant.agent-runs.object-agents.hide-work' : 'nh-assistant.agent-runs.object-agents.show-work') | translate }}\n </button>\n }\n </div>\n\n @if (resultShown() === agent.agentId && agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-result'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n\n @if (expanded() === agent.agentId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-work'\">\n <nh-assistant-agent-thread-view\n [agentId]=\"agent.agentId\"\n [subjectType]=\"subjectType()\"\n [subjectId]=\"subjectId()\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunNowDialogComponent, selector: "nh-assistant-run-now-dialog", inputs: ["agent", "subjectTypes", "divisions", "subject"], outputs: ["started", "openConversation", "closed"] }, { kind: "component", type: NhAssistantAgentThreadViewComponent, selector: "nh-assistant-agent-thread-view", inputs: ["agentId", "subjectType", "subjectId"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2084
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantObjectAgentsComponent, isStandalone: true, selector: "nh-assistant-object-agents", inputs: { subjectType: { classPropertyName: "subjectType", publicName: "subjectType", isSignal: true, isRequired: true, transformFunction: null }, subjectId: { classPropertyName: "subjectId", publicName: "subjectId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ 'nh-assistant.agent-runs.object-agents.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.description' | translate }}</p>\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !listing()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.object-agents.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\" data-object-agents-error>\n @if (loadError(); as failure) {\n <p>{{ loadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n } @else {\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n }\n @if (loadRetryable()) {\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n }\n </div>\n } @else if (agents().length === 0) {\n <p class=\"state\" data-object-agents-empty>{{ 'nh-assistant.agent-runs.object-agents.empty' | translate }}</p>\n } @else {\n <ul class=\"cards\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card\" [attr.data-object-agent]=\"agent.agentId\">\n <div class=\"card-header\">\n <strong>{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n\n <!-- The latest run: its status and time, and the beginning of its result as plain text. -->\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.object-agents.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n @if (run.shadow) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.object-agents.shadow' | translate }}</span>\n }\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <p class=\"summary result\" data-latest-result>\n <span class=\"visually-hidden\">{{ 'nh-assistant.agent-runs.object-agents.result-label' | translate }}: </span>{{ result }}@if (run.resultTruncated) {\u2026}\n </p>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.object-agents.never' | translate }}</p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-object-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.object-agents.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-result\n [attr.aria-expanded]=\"resultShown() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-result'\"\n (click)=\"toggleResult(agent)\">\n <nh-assistant-icon name=\"page\" />{{ (resultShown() === agent.agentId ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.conversationId) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-work\n [attr.aria-expanded]=\"expanded() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-work'\"\n (click)=\"toggleWork(agent)\">\n <nh-assistant-icon name=\"list\" />{{ (expanded() === agent.agentId ? 'nh-assistant.agent-runs.object-agents.hide-work' : 'nh-assistant.agent-runs.object-agents.show-work') | translate }}\n </button>\n }\n </div>\n\n @if (resultShown() === agent.agentId && agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-result'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n\n @if (expanded() === agent.agentId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-work'\">\n <nh-assistant-agent-thread-view\n [agentId]=\"agent.agentId\"\n [subjectType]=\"subjectType()\"\n [subjectId]=\"subjectId()\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunNowDialogComponent, selector: "nh-assistant-run-now-dialog", inputs: ["agent", "subjectTypes", "divisions", "subject"], outputs: ["started", "openConversation", "closed"] }, { kind: "component", type: NhAssistantAgentThreadViewComponent, selector: "nh-assistant-agent-thread-view", inputs: ["agentId", "subjectType", "subjectId"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1818
2085
  }
1819
2086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantObjectAgentsComponent, decorators: [{
1820
2087
  type: Component,
@@ -1826,7 +2093,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
1826
2093
  NhAssistantRunNowDialogComponent,
1827
2094
  NhAssistantAgentThreadViewComponent,
1828
2095
  NhAssistantRunResultComponent
1829
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ 'nh-assistant.agent-runs.object-agents.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.description' | translate }}</p>\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !listing()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.object-agents.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\" data-object-agents-error>\n @if (loadError(); as failure) {\n <p>{{ loadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n } @else {\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n }\n @if (loadRetryable()) {\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n }\n </div>\n } @else if (agents().length === 0) {\n <p class=\"state\" data-object-agents-empty>{{ 'nh-assistant.agent-runs.object-agents.empty' | translate }}</p>\n } @else {\n <ul class=\"cards\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card\" [attr.data-object-agent]=\"agent.agentId\">\n <div class=\"card-header\">\n <strong>{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n\n <!-- The latest run: its status and time, and the beginning of its result as plain text. -->\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.object-agents.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n @if (run.shadow) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.object-agents.shadow' | translate }}</span>\n }\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <p class=\"summary result\" data-latest-result>\n <span class=\"visually-hidden\">{{ 'nh-assistant.agent-runs.object-agents.result-label' | translate }}: </span>{{ result }}@if (run.resultTruncated) {\u2026}\n </p>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.object-agents.never' | translate }}</p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-object-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.object-agents.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-result\n [attr.aria-expanded]=\"resultShown() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-result'\"\n (click)=\"toggleResult(agent)\">\n <nh-assistant-icon name=\"page\" />{{ (resultShown() === agent.agentId ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.conversationId) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-work\n [attr.aria-expanded]=\"expanded() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-work'\"\n (click)=\"toggleWork(agent)\">\n <nh-assistant-icon name=\"list\" />{{ (expanded() === agent.agentId ? 'nh-assistant.agent-runs.object-agents.hide-work' : 'nh-assistant.agent-runs.object-agents.show-work') | translate }}\n </button>\n }\n </div>\n\n @if (resultShown() === agent.agentId && agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-result'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n\n @if (expanded() === agent.agentId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-work'\">\n <nh-assistant-agent-thread-view\n [agentId]=\"agent.agentId\"\n [subjectType]=\"subjectType()\"\n [subjectId]=\"subjectId()\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
2096
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\">\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ 'nh-assistant.agent-runs.object-agents.title' | translate }}</h3>\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.description' | translate }}</p>\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !listing()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.object-agents.loading' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\" data-object-agents-error>\n @if (loadError(); as failure) {\n <p>{{ loadErrorKeys() | nhAssistantTranslate: failure.code }}</p>\n } @else {\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n }\n @if (loadRetryable()) {\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n }\n </div>\n } @else if (agents().length === 0) {\n <p class=\"state\" data-object-agents-empty>{{ 'nh-assistant.agent-runs.object-agents.empty' | translate }}</p>\n } @else {\n <ul class=\"cards\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card\" [attr.data-object-agent]=\"agent.agentId\">\n <div class=\"card-header\">\n <strong>{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n\n <!-- The latest run: its status and time, and the beginning of its result as plain text. -->\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.object-agents.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n @if (run.shadow) {\n <span class=\"badge warning\">{{ 'nh-assistant.agent-runs.object-agents.shadow' | translate }}</span>\n }\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <p class=\"summary result\" data-latest-result>\n <span class=\"visually-hidden\">{{ 'nh-assistant.agent-runs.object-agents.result-label' | translate }}: </span>{{ result }}@if (run.resultTruncated) {\u2026}\n </p>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.object-agents.never' | translate }}</p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-object-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.object-agents.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-result\n [attr.aria-expanded]=\"resultShown() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-result'\"\n (click)=\"toggleResult(agent)\">\n <nh-assistant-icon name=\"page\" />{{ (resultShown() === agent.agentId ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.conversationId) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-toggle-work\n [attr.aria-expanded]=\"expanded() === agent.agentId\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-work'\"\n (click)=\"toggleWork(agent)\">\n <nh-assistant-icon name=\"list\" />{{ (expanded() === agent.agentId ? 'nh-assistant.agent-runs.object-agents.hide-work' : 'nh-assistant.agent-runs.object-agents.show-work') | translate }}\n </button>\n }\n </div>\n\n @if (resultShown() === agent.agentId && agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-result'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n\n @if (expanded() === agent.agentId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-work'\">\n <nh-assistant-agent-thread-view\n [agentId]=\"agent.agentId\"\n [subjectType]=\"subjectType()\"\n [subjectId]=\"subjectId()\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
1830
2097
  }], ctorParameters: () => [], propDecorators: { subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: true }] }], subjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectId", required: true }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
1831
2098
 
1832
2099
  /** How many runs the history of a board tile reads at a time. */
@@ -1962,7 +2229,7 @@ class NhAssistantBoardHistoryComponent {
1962
2229
  }
1963
2230
  }
1964
2231
  </section>
1965
- `, isInline: true, styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2232
+ `, isInline: true, styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1966
2233
  }
1967
2234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantBoardHistoryComponent, decorators: [{
1968
2235
  type: Component,
@@ -2020,7 +2287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
2020
2287
  }
2021
2288
  }
2022
2289
  </section>
2023
- `, styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
2290
+ `, styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
2024
2291
  }], ctorParameters: () => [], propDecorators: { agentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentId", required: true }] }], subjectType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectType", required: true }] }], subjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "subjectId", required: true }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
2025
2292
 
2026
2293
  let nextId = 0;
@@ -2224,7 +2491,7 @@ class NhAssistantAgentBoardComponent {
2224
2491
  this.visitSubscription = this.api.visitBoard(group, divisionId).subscribe({ error: () => undefined });
2225
2492
  }
2226
2493
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentBoardComponent, isStandalone: true, selector: "nh-assistant-agent-board", inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, divisionId: { classPropertyName: "divisionId", publicName: "divisionId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\" data-agent-board>\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ board()?.name ?? ('nh-assistant.agent-runs.board.title' | translate) }}</h3>\n @if (board(); as shown) {\n @if (shown.description; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n @if (shown.lastVisitedAt; as visitedAt) {\n <p class=\"muted\" data-board-last-visit>{{ 'nh-assistant.agent-runs.board.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else {\n <p class=\"muted\" data-board-first-visit>{{ 'nh-assistant.agent-runs.board.first-visit' | translate }}</p>\n }\n }\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !board()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.board.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-board-not-found>{{ 'nh-assistant.agent-runs.board.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <ul class=\"cards board-tiles\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card board-tile\" [class.new]=\"agent.isNew\" [attr.data-board-agent]=\"agent.agentId\" [attr.aria-labelledby]=\"id + '-' + agent.agentId + '-name'\">\n <div class=\"card-header\">\n <strong [id]=\"id + '-' + agent.agentId + '-name'\">{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n @if (agent.isNew) {\n <span class=\"badge new\" data-board-new [attr.title]=\"'nh-assistant.agent-runs.board.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.board.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.board.new-label' | translate }}</span>\n </span>\n }\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n <p class=\"muted\" data-works-on>{{ worksOnOf(agent) }}</p>\n\n @if (agent.subjectType) {\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.board.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <!-- Model output: rendered only through the assistant's safe Markdown rendering. -->\n <div class=\"markdown board-preview\" data-latest-result [innerHTML]=\"previewOf(result, run.resultTruncated) | nhAssistantMarkdown\"></div>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.board.never' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-board-no-application>\n {{ (agent.worksOn.perDivision ? 'nh-assistant.agent-runs.board.per-division' : 'nh-assistant.agent-runs.board.objects-only') | translate }}\n </p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-board-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.board.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-result\n [attr.aria-expanded]=\"panelOf(agent) === 'result'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'result')\">\n <nh-assistant-icon name=\"page\" />{{ (panelOf(agent) === 'result' ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.openProposals > 0) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-proposals\n [attr.aria-expanded]=\"panelOf(agent) === 'proposals'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'proposals')\">\n <nh-assistant-icon name=\"check\" />{{ (panelOf(agent) === 'proposals' ? 'nh-assistant.agent-runs.board.hide-proposals' : 'nh-assistant.agent-runs.board.show-proposals') | translate }}\n </button>\n }\n @if (agent.subjectType) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-history\n [attr.aria-expanded]=\"panelOf(agent) === 'history'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'history')\">\n <nh-assistant-icon name=\"list\" />{{ (panelOf(agent) === 'history' ? 'nh-assistant.agent-runs.board.hide-history' : 'nh-assistant.agent-runs.board.show-history') | translate }}\n </button>\n }\n </div>\n\n @switch (panelOf(agent)) {\n @case ('result') {\n @if (agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n @case ('proposals') {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-agent-inbox [agentId]=\"agent.agentId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n @case ('history') {\n @if (agent.subjectType && agent.subjectId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-board-history\n [agentId]=\"agent.agentId\"\n [subjectType]=\"agent.subjectType\"\n [subjectId]=\"agent.subjectId\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunNowDialogComponent, selector: "nh-assistant-run-now-dialog", inputs: ["agent", "subjectTypes", "divisions", "subject"], outputs: ["started", "openConversation", "closed"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantAgentInboxComponent, selector: "nh-assistant-agent-inbox", inputs: ["agentId", "subjectType", "itemsPerPage"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantBoardHistoryComponent, selector: "nh-assistant-board-history", inputs: ["agentId", "subjectType", "subjectId"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }, { kind: "pipe", type: _NhAssistantMarkdownPipe, name: "nhAssistantMarkdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.34", type: NhAssistantAgentBoardComponent, isStandalone: true, selector: "nh-assistant-agent-board", inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, divisionId: { classPropertyName: "divisionId", publicName: "divisionId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConversation: "openConversation" }, ngImport: i0, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\" data-agent-board>\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ board()?.name ?? ('nh-assistant.agent-runs.board.title' | translate) }}</h3>\n @if (board(); as shown) {\n @if (shown.description; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n @if (shown.lastVisitedAt; as visitedAt) {\n <p class=\"muted\" data-board-last-visit>{{ 'nh-assistant.agent-runs.board.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else {\n <p class=\"muted\" data-board-first-visit>{{ 'nh-assistant.agent-runs.board.first-visit' | translate }}</p>\n }\n }\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !board()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.board.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-board-not-found>{{ 'nh-assistant.agent-runs.board.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <ul class=\"cards board-tiles\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card board-tile\" [class.new]=\"agent.isNew\" [attr.data-board-agent]=\"agent.agentId\" [attr.aria-labelledby]=\"id + '-' + agent.agentId + '-name'\">\n <div class=\"card-header\">\n <strong [id]=\"id + '-' + agent.agentId + '-name'\">{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n @if (agent.isNew) {\n <span class=\"badge new\" data-board-new [attr.title]=\"'nh-assistant.agent-runs.board.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.board.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.board.new-label' | translate }}</span>\n </span>\n }\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n <p class=\"muted\" data-works-on>{{ worksOnOf(agent) }}</p>\n\n @if (agent.subjectType) {\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.board.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <!-- Model output: rendered only through the assistant's safe Markdown rendering. -->\n <div class=\"markdown board-preview\" data-latest-result [innerHTML]=\"previewOf(result, run.resultTruncated) | nhAssistantMarkdown\"></div>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.board.never' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-board-no-application>\n {{ (agent.worksOn.perDivision ? 'nh-assistant.agent-runs.board.per-division' : 'nh-assistant.agent-runs.board.objects-only') | translate }}\n </p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-board-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.board.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-result\n [attr.aria-expanded]=\"panelOf(agent) === 'result'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'result')\">\n <nh-assistant-icon name=\"page\" />{{ (panelOf(agent) === 'result' ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.openProposals > 0) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-proposals\n [attr.aria-expanded]=\"panelOf(agent) === 'proposals'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'proposals')\">\n <nh-assistant-icon name=\"check\" />{{ (panelOf(agent) === 'proposals' ? 'nh-assistant.agent-runs.board.hide-proposals' : 'nh-assistant.agent-runs.board.show-proposals') | translate }}\n </button>\n }\n @if (agent.subjectType) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-history\n [attr.aria-expanded]=\"panelOf(agent) === 'history'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'history')\">\n <nh-assistant-icon name=\"list\" />{{ (panelOf(agent) === 'history' ? 'nh-assistant.agent-runs.board.hide-history' : 'nh-assistant.agent-runs.board.show-history') | translate }}\n </button>\n }\n </div>\n\n @switch (panelOf(agent)) {\n @case ('result') {\n @if (agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n @case ('proposals') {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <!-- One agent's proposals are no visit of the whole inbox; the tile already marks what is new. -->\n <nh-assistant-agent-inbox [agentId]=\"agent.agentId\" [markNew]=\"false\" [recordVisit]=\"false\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n @case ('history') {\n @if (agent.subjectType && agent.subjectId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-board-history\n [agentId]=\"agent.agentId\"\n [subjectType]=\"agent.subjectType\"\n [subjectId]=\"agent.subjectId\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"], dependencies: [{ kind: "component", type: _NhAssistantIconComponent, selector: "nh-assistant-icon", inputs: ["name"] }, { kind: "component", type: NhAssistantRunNowDialogComponent, selector: "nh-assistant-run-now-dialog", inputs: ["agent", "subjectTypes", "divisions", "subject"], outputs: ["started", "openConversation", "closed"] }, { kind: "component", type: NhAssistantRunResultComponent, selector: "nh-assistant-run-result", inputs: ["runId", "conversationLink"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantAgentInboxComponent, selector: "nh-assistant-agent-inbox", inputs: ["agentId", "subjectType", "divisionId", "runId", "grouped", "groupByRun", "markNew", "recordVisit", "itemsPerPage"], outputs: ["openConversation"] }, { kind: "component", type: NhAssistantBoardHistoryComponent, selector: "nh-assistant-board-history", inputs: ["agentId", "subjectType", "subjectId"], outputs: ["openConversation"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: _NhAssistantTranslatePipe, name: "nhAssistantTranslate" }, { kind: "pipe", type: _NhAssistantMarkdownPipe, name: "nhAssistantMarkdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2228
2495
  }
2229
2496
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImport: i0, type: NhAssistantAgentBoardComponent, decorators: [{
2230
2497
  type: Component,
@@ -2238,7 +2505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.34", ngImpo
2238
2505
  NhAssistantRunResultComponent,
2239
2506
  NhAssistantAgentInboxComponent,
2240
2507
  NhAssistantBoardHistoryComponent
2241
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\" data-agent-board>\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ board()?.name ?? ('nh-assistant.agent-runs.board.title' | translate) }}</h3>\n @if (board(); as shown) {\n @if (shown.description; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n @if (shown.lastVisitedAt; as visitedAt) {\n <p class=\"muted\" data-board-last-visit>{{ 'nh-assistant.agent-runs.board.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else {\n <p class=\"muted\" data-board-first-visit>{{ 'nh-assistant.agent-runs.board.first-visit' | translate }}</p>\n }\n }\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !board()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.board.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-board-not-found>{{ 'nh-assistant.agent-runs.board.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <ul class=\"cards board-tiles\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card board-tile\" [class.new]=\"agent.isNew\" [attr.data-board-agent]=\"agent.agentId\" [attr.aria-labelledby]=\"id + '-' + agent.agentId + '-name'\">\n <div class=\"card-header\">\n <strong [id]=\"id + '-' + agent.agentId + '-name'\">{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n @if (agent.isNew) {\n <span class=\"badge new\" data-board-new [attr.title]=\"'nh-assistant.agent-runs.board.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.board.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.board.new-label' | translate }}</span>\n </span>\n }\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n <p class=\"muted\" data-works-on>{{ worksOnOf(agent) }}</p>\n\n @if (agent.subjectType) {\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.board.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <!-- Model output: rendered only through the assistant's safe Markdown rendering. -->\n <div class=\"markdown board-preview\" data-latest-result [innerHTML]=\"previewOf(result, run.resultTruncated) | nhAssistantMarkdown\"></div>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.board.never' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-board-no-application>\n {{ (agent.worksOn.perDivision ? 'nh-assistant.agent-runs.board.per-division' : 'nh-assistant.agent-runs.board.objects-only') | translate }}\n </p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-board-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.board.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-result\n [attr.aria-expanded]=\"panelOf(agent) === 'result'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'result')\">\n <nh-assistant-icon name=\"page\" />{{ (panelOf(agent) === 'result' ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.openProposals > 0) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-proposals\n [attr.aria-expanded]=\"panelOf(agent) === 'proposals'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'proposals')\">\n <nh-assistant-icon name=\"check\" />{{ (panelOf(agent) === 'proposals' ? 'nh-assistant.agent-runs.board.hide-proposals' : 'nh-assistant.agent-runs.board.show-proposals') | translate }}\n </button>\n }\n @if (agent.subjectType) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-history\n [attr.aria-expanded]=\"panelOf(agent) === 'history'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'history')\">\n <nh-assistant-icon name=\"list\" />{{ (panelOf(agent) === 'history' ? 'nh-assistant.agent-runs.board.hide-history' : 'nh-assistant.agent-runs.board.show-history') | translate }}\n </button>\n }\n </div>\n\n @switch (panelOf(agent)) {\n @case ('result') {\n @if (agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n @case ('proposals') {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-agent-inbox [agentId]=\"agent.agentId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n @case ('history') {\n @if (agent.subjectType && agent.subjectId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-board-history\n [agentId]=\"agent.agentId\"\n [subjectType]=\"agent.subjectType\"\n [subjectId]=\"agent.subjectId\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}\n"] }]
2508
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"section\" [attr.aria-labelledby]=\"id + '-title'\" [attr.aria-busy]=\"loading()\" data-agent-board>\n <header class=\"section-header\">\n <div>\n <h3 [id]=\"id + '-title'\">{{ board()?.name ?? ('nh-assistant.agent-runs.board.title' | translate) }}</h3>\n @if (board(); as shown) {\n @if (shown.description; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n @if (shown.lastVisitedAt; as visitedAt) {\n <p class=\"muted\" data-board-last-visit>{{ 'nh-assistant.agent-runs.board.last-visit' | translate: { date: (visitedAt | date: 'medium') } }}</p>\n } @else {\n <p class=\"muted\" data-board-first-visit>{{ 'nh-assistant.agent-runs.board.first-visit' | translate }}</p>\n }\n }\n </div>\n <div class=\"toolbar\">\n <button class=\"secondary\" type=\"button\" [disabled]=\"loading()\" (click)=\"load()\">\n <nh-assistant-icon name=\"refresh\" />{{ 'nh-assistant.agent-runs.refresh' | translate }}\n </button>\n </div>\n </header>\n\n @if (loading() && !board()) {\n <p class=\"state\" role=\"status\">{{ 'nh-assistant.agent-runs.board.loading' | translate }}</p>\n } @else if (notFound()) {\n <p class=\"state\" data-board-not-found>{{ 'nh-assistant.agent-runs.board.not-found' | translate }}</p>\n } @else if (loadFailed()) {\n <div class=\"state\" role=\"alert\">\n <p>{{ 'nh-assistant.agent-runs.load-failed' | translate }}</p>\n <button class=\"secondary\" type=\"button\" (click)=\"load()\">{{ 'nh-assistant.agent-runs.retry' | translate }}</button>\n </div>\n } @else {\n <ul class=\"cards board-tiles\">\n @for (agent of agents(); track agent.agentId) {\n <li class=\"card board-tile\" [class.new]=\"agent.isNew\" [attr.data-board-agent]=\"agent.agentId\" [attr.aria-labelledby]=\"id + '-' + agent.agentId + '-name'\">\n <div class=\"card-header\">\n <strong [id]=\"id + '-' + agent.agentId + '-name'\">{{ [agent.displayNameKey] | nhAssistantTranslate: agent.displayNameKey }}</strong>\n @if (agent.isNew) {\n <span class=\"badge new\" data-board-new [attr.title]=\"'nh-assistant.agent-runs.board.new-label' | translate\">\n {{ 'nh-assistant.agent-runs.board.new' | translate }}<span class=\"visually-hidden\">: {{ 'nh-assistant.agent-runs.board.new-label' | translate }}</span>\n </span>\n }\n <span class=\"badge\" [class.warning]=\"agent.openProposals > 0\" data-open-proposals>\n {{ proposalsKey(agent.openProposals) | translate: { count: agent.openProposals } }}\n </span>\n </div>\n @if ([agent.descriptionKey] | nhAssistantTranslate: agent.descriptionKey; as description) {\n <p class=\"muted\">{{ description }}</p>\n }\n <p class=\"muted\" data-works-on>{{ worksOnOf(agent) }}</p>\n\n @if (agent.subjectType) {\n @if (agent.latestRun; as run) {\n <div class=\"latest-run\" data-latest-run>\n <div class=\"meta\">\n <span>{{ 'nh-assistant.agent-runs.board.latest' | translate }}</span>\n <span\n class=\"badge\"\n [class.success]=\"run.status === 'completed'\"\n [class.danger]=\"run.status === 'failed'\"\n [class.warning]=\"run.status === 'waiting-for-approval'\">{{ 'nh-assistant.agent-runs.run.status.' + run.status | translate }}</span>\n <time [attr.datetime]=\"run.at\">{{ run.at | date: 'medium' }}</time>\n </div>\n @if (run.failureCode; as reason) {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.failure' | translate: { reason: (codeKeys(reason) | nhAssistantTranslate: reason) } }}</p>\n }\n @if (run.result; as result) {\n <!-- Model output: rendered only through the assistant's safe Markdown rendering. -->\n <div class=\"markdown board-preview\" data-latest-result [innerHTML]=\"previewOf(result, run.resultTruncated) | nhAssistantMarkdown\"></div>\n } @else {\n <p class=\"muted\">{{ 'nh-assistant.agent-runs.object-agents.no-result' | translate }}</p>\n }\n </div>\n } @else {\n <p class=\"muted\" data-never-run>{{ 'nh-assistant.agent-runs.board.never' | translate }}</p>\n }\n } @else {\n <p class=\"muted\" data-board-no-application>\n {{ (agent.worksOn.perDivision ? 'nh-assistant.agent-runs.board.per-division' : 'nh-assistant.agent-runs.board.objects-only') | translate }}\n </p>\n }\n\n <div class=\"card-actions\">\n @if (agent.canStart) {\n <button class=\"primary\" type=\"button\" aria-haspopup=\"dialog\" data-board-run-now (click)=\"runNow(agent)\">\n <nh-assistant-icon name=\"send\" />{{ 'nh-assistant.agent-runs.board.run-now' | translate }}\n </button>\n }\n @if (agent.latestRun) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-result\n [attr.aria-expanded]=\"panelOf(agent) === 'result'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'result')\">\n <nh-assistant-icon name=\"page\" />{{ (panelOf(agent) === 'result' ? 'nh-assistant.agent-runs.result.hide' : 'nh-assistant.agent-runs.result.show') | translate }}\n </button>\n }\n @if (agent.openProposals > 0) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-proposals\n [attr.aria-expanded]=\"panelOf(agent) === 'proposals'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'proposals')\">\n <nh-assistant-icon name=\"check\" />{{ (panelOf(agent) === 'proposals' ? 'nh-assistant.agent-runs.board.hide-proposals' : 'nh-assistant.agent-runs.board.show-proposals') | translate }}\n </button>\n }\n @if (agent.subjectType) {\n <button\n class=\"secondary\"\n type=\"button\"\n data-board-toggle-history\n [attr.aria-expanded]=\"panelOf(agent) === 'history'\"\n [attr.aria-controls]=\"id + '-' + agent.agentId + '-panel'\"\n (click)=\"toggle(agent, 'history')\">\n <nh-assistant-icon name=\"list\" />{{ (panelOf(agent) === 'history' ? 'nh-assistant.agent-runs.board.hide-history' : 'nh-assistant.agent-runs.board.show-history') | translate }}\n </button>\n }\n </div>\n\n @switch (panelOf(agent)) {\n @case ('result') {\n @if (agent.latestRun; as run) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-run-result [runId]=\"run.runId\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n @case ('proposals') {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <!-- One agent's proposals are no visit of the whole inbox; the tile already marks what is new. -->\n <nh-assistant-agent-inbox [agentId]=\"agent.agentId\" [markNew]=\"false\" [recordVisit]=\"false\" (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n @case ('history') {\n @if (agent.subjectType && agent.subjectId) {\n <div class=\"work\" [id]=\"id + '-' + agent.agentId + '-panel'\">\n <nh-assistant-board-history\n [agentId]=\"agent.agentId\"\n [subjectType]=\"agent.subjectType\"\n [subjectId]=\"agent.subjectId\"\n (openConversation)=\"openConversation.emit($event)\" />\n </div>\n }\n }\n }\n </li>\n }\n </ul>\n }\n\n @if (runNowAgent(); as runAgent) {\n <nh-assistant-run-now-dialog\n [agent]=\"runAgent\"\n [subject]=\"runNowSubject()\"\n (started)=\"onStarted()\"\n (openConversation)=\"openConversation.emit($event)\"\n (closed)=\"runningNow.set(null)\" />\n }\n</section>\n", styles: [":host{--nha-font: var(--nh-assistant-font, inherit);--nha-background: var(--nh-assistant-background, #ffffff);--nha-surface: var(--nh-assistant-surface, #f5f7fb);--nha-surface-strong: var(--nh-assistant-surface-strong, #eceff6);--nha-text: var(--nh-assistant-text, #080c1d);--nha-text-muted: var(--nh-assistant-text-muted, #5b6482);--nha-border: var(--nh-assistant-border, #dce0ec);--nha-accent: var(--nh-assistant-accent, #022962);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #c84f00);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #247d4e);--nha-success-soft: var(--nh-assistant-success-soft, #e6f5ec);--nha-warning: var(--nh-assistant-warning, #8a5a00);--nha-warning-soft: var(--nh-assistant-warning-soft, #fff3d9);--nha-danger: var(--nh-assistant-danger, #b92e52);--nha-danger-soft: var(--nh-assistant-danger-soft, #ffe9ef);--nha-focus: var(--nh-assistant-focus, #ff6700);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(2 41 98 / .16));--nha-radius: var(--nh-assistant-radius, 16px);--nha-radius-control: var(--nh-assistant-radius-control, 12px);--nha-mono: var(--nh-assistant-font-mono, ui-monospace, \"Cascadia Code\", Consolas, monospace)}@media(prefers-color-scheme:dark){:host{--nha-background: var(--nh-assistant-background, #0b0e22);--nha-surface: var(--nh-assistant-surface, #11152d);--nha-surface-strong: var(--nh-assistant-surface-strong, #181d3b);--nha-text: var(--nh-assistant-text, #ffffff);--nha-text-muted: var(--nh-assistant-text-muted, #b8bed8);--nha-border: var(--nh-assistant-border, #2b3155);--nha-accent: var(--nh-assistant-accent, #0f4087);--nha-accent-contrast: var(--nh-assistant-accent-contrast, #ffffff);--nha-highlight: var(--nh-assistant-highlight, #ff6700);--nha-user-bubble: var(--nh-assistant-user-bubble, #022962);--nha-user-text: var(--nh-assistant-user-text, #ffffff);--nha-success: var(--nh-assistant-success, #67c58f);--nha-success-soft: var(--nh-assistant-success-soft, #102d24);--nha-warning: var(--nh-assistant-warning, #ffbf5b);--nha-warning-soft: var(--nh-assistant-warning-soft, #342818);--nha-danger: var(--nh-assistant-danger, #ff6d8a);--nha-danger-soft: var(--nh-assistant-danger-soft, #351b2a);--nha-shadow: var(--nh-assistant-shadow, 0 16px 36px rgb(0 0 0 / .32))}}:host{display:block;min-width:0;color:var(--nha-text);font-family:var(--nha-font);font-size:14px}:host fieldset{min-width:0;margin:0;border:0;padding:0}:host legend,:host .label,:host .field>label{display:block;margin-bottom:6px;padding:0;color:var(--nha-text);font-size:12px;font-weight:700}:host input[type=text],:host input[type=url],:host input[type=password],:host input[type=search],:host input[type=email],:host input[type=number],:host input[type=date],:host input[type=time],:host input[type=datetime-local],:host select,:host textarea{box-sizing:border-box;width:100%;min-width:0;min-height:38px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:8px 10px;color:var(--nha-text);background:var(--nha-background);font:inherit;font-size:13px}:host input[type=text]:focus-visible,:host input[type=url]:focus-visible,:host input[type=password]:focus-visible,:host input[type=search]:focus-visible,:host input[type=email]:focus-visible,:host input[type=number]:focus-visible,:host input[type=date]:focus-visible,:host input[type=time]:focus-visible,:host input[type=datetime-local]:focus-visible,:host select:focus-visible,:host textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host input[type=text]:disabled,:host input[type=url]:disabled,:host input[type=password]:disabled,:host input[type=search]:disabled,:host input[type=email]:disabled,:host input[type=number]:disabled,:host input[type=date]:disabled,:host input[type=time]:disabled,:host input[type=datetime-local]:disabled,:host select:disabled,:host textarea:disabled{cursor:not-allowed;opacity:.6}:host input[type=text][aria-invalid=true],:host input[type=url][aria-invalid=true],:host input[type=password][aria-invalid=true],:host input[type=search][aria-invalid=true],:host input[type=email][aria-invalid=true],:host input[type=number][aria-invalid=true],:host input[type=date][aria-invalid=true],:host input[type=time][aria-invalid=true],:host input[type=datetime-local][aria-invalid=true],:host select[aria-invalid=true],:host textarea[aria-invalid=true]{border-color:var(--nha-danger)}:host textarea{line-height:1.45;resize:vertical}:host input[type=number]{font-variant-numeric:tabular-nums}:host .mono{font-family:var(--nha-mono);font-size:12px}:host .field{display:flex;flex-direction:column;min-width:0}:host .hint{display:flex;justify-content:space-between;gap:8px;margin:4px 2px 0;color:var(--nha-text-muted);font-size:11px}:host .counter{flex:none;font-variant-numeric:tabular-nums}:host .error-text{color:var(--nha-danger)}:host .field-error{display:flex;align-items:flex-start;gap:6px;margin:4px 2px 0;color:var(--nha-danger);font-size:12px;font-weight:600;overflow-wrap:anywhere}:host .field-error nh-assistant-icon{flex:none;margin-top:1px}:host .form-error{box-sizing:border-box;display:flex;align-items:flex-start;gap:8px;margin:0;border:1px solid var(--nha-danger);border-radius:var(--nha-radius-control);padding:8px 12px;color:var(--nha-text);background:var(--nha-danger-soft);font-size:13px;overflow-wrap:anywhere}:host .form-error ul{margin:4px 0 0;padding-left:18px}:host .message{box-sizing:border-box;display:flex;align-items:center;gap:8px;margin:0;border:1px solid transparent;border-radius:var(--nha-radius-control);padding:8px 12px;font-size:13px;overflow-wrap:anywhere}:host .message.error{border-color:var(--nha-danger);color:var(--nha-text);background:var(--nha-danger-soft)}:host .message.warning{border-color:var(--nha-warning);color:var(--nha-text);background:var(--nha-warning-soft)}:host .message.success{border-color:var(--nha-success);color:var(--nha-text);background:var(--nha-success-soft)}:host .message.info{border-color:var(--nha-border);color:var(--nha-text);background:var(--nha-surface)}:host .message nh-assistant-icon{flex:none}:host button.link{min-height:0;border:0;padding:0;color:var(--nha-accent, currentColor);background:none;font:inherit;text-decoration:underline;cursor:pointer}:host button.link:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host button.link:disabled{cursor:not-allowed;opacity:.55}:host .primary,:host .secondary,:host .danger{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;gap:6px;min-height:36px;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:6px 14px;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer}:host .primary:focus-visible,:host .secondary:focus-visible,:host .danger:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .primary:disabled,:host .secondary:disabled,:host .danger:disabled{cursor:not-allowed;opacity:.55}:host .primary{border-color:var(--nha-accent);color:var(--nha-accent-contrast);background:var(--nha-accent)}:host .primary:hover:not(:disabled){filter:brightness(1.12)}:host .secondary{color:var(--nha-text);background:transparent}:host .secondary:hover:not(:disabled){background:var(--nha-surface-strong)}:host .danger{border-color:var(--nha-danger);color:var(--nha-danger);background:transparent}:host .danger:hover:not(:disabled){background:var(--nha-danger-soft)}:host .icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid transparent;border-radius:var(--nha-radius-control);color:var(--nha-text-muted);background:transparent;cursor:pointer}:host .icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host .icon-button:hover:not(:disabled){color:var(--nha-text);background:var(--nha-surface-strong)}:host .icon-button:disabled{cursor:not-allowed;opacity:.5}:host .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}:host .badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;color:var(--nha-text-muted);background:var(--nha-surface-strong);font-size:11px;font-weight:700;white-space:nowrap}:host .badge.success{color:var(--nha-success);background:var(--nha-success-soft)}:host .badge.warning{color:var(--nha-warning);background:var(--nha-warning-soft)}:host .badge.danger{color:var(--nha-danger);background:var(--nha-danger-soft)}:host .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.section{display:flex;flex-direction:column;gap:14px;min-width:0}.section-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.section-header>div{min-width:0;max-width:72ch}h3{margin:0 0 4px;font-size:17px;font-weight:750}.muted{margin:0;color:var(--nha-text-muted);font-size:13px}.state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:0;border:1px dashed var(--nha-border);border-radius:var(--nha-radius);padding:18px;color:var(--nha-text-muted);font-size:13px}.state p{margin:0}.cards{display:grid;gap:10px;margin:0;padding:0;list-style:none}.card{display:flex;flex-direction:column;gap:8px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius);padding:12px 14px;background:var(--nha-surface)}.card.selected{border-color:var(--nha-accent, currentColor)}.card[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.card.closed{border-style:dashed}.closed-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.message.stale-explanation{overflow-wrap:anywhere;color:var(--nha-text);background:var(--nha-surface-strong)}.placed-by{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;min-width:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.rationale{margin:0;overflow-wrap:anywhere;color:var(--nha-text-muted);font-size:13px}.card-header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.card-header strong{font-size:14px;overflow-wrap:anywhere}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}pre{max-height:220px;margin:0;overflow:auto;border-radius:var(--nha-radius-control);padding:8px 10px;background:var(--nha-surface-muted, rgba(127, 127, 127, .08));font-family:var(--nha-mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.summary{margin:0;font-size:13px;overflow-wrap:anywhere}.handed-off{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.handed-off button.link{min-height:0;border:0;padding:0;background:none;color:var(--nha-accent, currentColor);font:inherit;text-decoration:underline;cursor:pointer}.presentation-fields{display:grid;gap:6px;margin:0}.presentation-fields div{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(0,1fr);gap:8px}.presentation-fields dt{color:var(--nha-text-muted);font-size:12px;font-weight:700;overflow-wrap:anywhere}.presentation-fields dd{margin:0;font-size:13px;overflow-wrap:anywhere}.technical-details{color:var(--nha-text-muted);font-size:12px}.technical-details summary{cursor:pointer;font-weight:700}.technical-details code{overflow-wrap:anywhere}.technical-details .label{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.technical-details .targets{margin:0;padding-left:18px;overflow-wrap:anywhere}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--nha-border)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 12px;background:transparent;color:var(--nha-text-muted);font:inherit;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:currentColor;color:var(--nha-text);font-weight:650}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.reason{flex:1 1 200px;min-width:0}.select{display:inline-flex;align-items:center;gap:6px;font-size:12px}.proposal-list{display:flex;flex-direction:column;gap:10px;min-width:0}.feedback-prompt{display:flex;flex-direction:column;gap:6px;min-width:0}.feedback-prompt .muted{overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;border:0;border-radius:6px;padding:2px 4px;color:var(--nha-text-muted);background:transparent;font:inherit;font-size:12px;font-weight:650;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.text-button:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}.text-button:hover:not(:disabled){color:var(--nha-text)}.text-button:disabled{cursor:not-allowed;opacity:.55}.waiting-for{display:flex;align-items:center;gap:6px;margin:0;color:var(--nha-text-muted);font-size:12px;overflow-wrap:anywhere}.subject-agents{display:grid;gap:8px;margin:0;padding:0;list-style:none}.subject-agent{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;min-width:0;border:1px solid var(--nha-border);border-radius:var(--nha-radius-control);padding:10px 12px}.subject-agent-text{display:flex;flex-direction:column;gap:2px;min-width:0}.subject-agent-text strong{font-size:14px;overflow-wrap:anywhere}.latest-run{display:flex;flex-direction:column;gap:6px;min-width:0}.result{white-space:pre-line}.work{min-width:0;border-top:1px solid var(--nha-border);padding-top:12px}.run-result{display:flex;flex-direction:column;gap:12px;min-width:0}.run-result h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0 0 6px;font-size:15px;font-weight:750;overflow-wrap:anywhere}.run-result h5{margin:0 0 6px;font-size:13px;font-weight:700}.run-result-header{min-width:0}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:0}.facts div{min-width:0}.facts dt{color:var(--nha-text-muted);font-size:12px}.facts dd{margin:0;overflow-wrap:anywhere}.result-body,.result-section{min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.files{display:grid;gap:6px;margin:0;padding:0;list-style:none}.files li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.mcp-skips{display:grid;gap:4px;margin:0;padding:0;list-style:none}.mcp-skips li{min-width:0;overflow-wrap:anywhere}.file-name{min-width:0;font-weight:600;overflow-wrap:anywhere}:host ::ng-deep .markdown{min-width:0;overflow-wrap:anywhere}:host ::ng-deep .markdown :first-child{margin-top:0}:host ::ng-deep .markdown :last-child{margin-bottom:0}:host ::ng-deep .markdown p,:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol,:host ::ng-deep .markdown pre,:host ::ng-deep .markdown blockquote,:host ::ng-deep .markdown table{margin:0 0 8px}:host ::ng-deep .markdown ul,:host ::ng-deep .markdown ol{padding-left:20px}:host ::ng-deep .markdown h1,:host ::ng-deep .markdown h2,:host ::ng-deep .markdown h3,:host ::ng-deep .markdown h4,:host ::ng-deep .markdown h5,:host ::ng-deep .markdown h6{margin:10px 0 6px;font-size:15px;line-height:1.3}:host ::ng-deep .markdown hr{margin:12px 0;border:0;border-top:1px solid var(--nha-border)}:host ::ng-deep .markdown a{color:var(--nha-highlight);text-decoration:underline}:host ::ng-deep .markdown a:focus-visible{outline:3px solid color-mix(in srgb,var(--nha-focus) 80%,transparent);outline-offset:2px}:host ::ng-deep .markdown code{border-radius:6px;padding:1px 4px;background:var(--nha-surface-strong);font-family:var(--nha-mono);font-size:12.5px}:host ::ng-deep .markdown pre{overflow-x:auto;border-radius:8px;padding:8px;background:var(--nha-surface-strong)}:host ::ng-deep .markdown pre code{padding:0;background:none}:host ::ng-deep .markdown blockquote{border-left:3px solid var(--nha-border);padding-left:10px;color:var(--nha-text-muted)}:host ::ng-deep .markdown table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:13px}:host ::ng-deep .markdown th,:host ::ng-deep .markdown td{border:1px solid var(--nha-border);padding:4px 8px;text-align:left}.board-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start}.board-tile.new{border-color:var(--nha-accent)}.badge.new{color:var(--nha-accent-contrast);background:var(--nha-accent)}.board-preview{max-height:12em;overflow:hidden}.board-history{display:flex;flex-direction:column;gap:8px;min-width:0}.board-history h4{margin:0;font-size:13px;font-weight:700}.history-runs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.history-run{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid var(--nha-border);padding-top:8px}.card.new{border-color:var(--nha-accent)}.proposal-group{display:flex;flex-direction:column;gap:8px;min-width:0;border-top:1px solid var(--nha-border);padding-top:10px}.proposal-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.proposal-group-header h4{margin:0;overflow-wrap:anywhere;font-size:15px;font-weight:700}.proposal-subject-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:4px 0 0;min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:650}.proposal-run-header{margin:0;color:var(--nha-text-muted);font-size:12px}\n"] }]
2242
2509
  }], ctorParameters: () => [], propDecorators: { group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: true }] }], divisionId: [{ type: i0.Input, args: [{ isSignal: true, alias: "divisionId", required: false }] }], openConversation: [{ type: i0.Output, args: ["openConversation"] }] } });
2243
2510
 
2244
2511
  /*