@acorex-platform/module-conversation-client 0.0.21

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.
Files changed (35) hide show
  1. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DsjrXRZ6.mjs +12766 -0
  2. package/fesm2022/acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DsjrXRZ6.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-conversation-client-after-message-sent.command-D-DZ9ylV.mjs +35 -0
  4. package/fesm2022/acorex-platform-module-conversation-client-after-message-sent.command-D-DZ9ylV.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BfjJCQ-e.mjs +492 -0
  6. package/fesm2022/acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BfjJCQ-e.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-conversation-client-assist-tool-detail-popup.component-GC58B_n0.mjs +120 -0
  8. package/fesm2022/acorex-platform-module-conversation-client-assist-tool-detail-popup.component-GC58B_n0.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-DkX4JSbN.mjs +871 -0
  10. package/fesm2022/acorex-platform-module-conversation-client-chat-call-session-page.component-DkX4JSbN.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-conversation-client-chat-call-start-popup.component-D4go5xbr.mjs +89 -0
  12. package/fesm2022/acorex-platform-module-conversation-client-chat-call-start-popup.component-D4go5xbr.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-BVJdVPke.mjs +108 -0
  14. package/fesm2022/acorex-platform-module-conversation-client-chat-conversation-info-media-view.component-BVJdVPke.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-conversation-client-comments-page.component-Bq4SdK0_.mjs +83 -0
  16. package/fesm2022/acorex-platform-module-conversation-client-comments-page.component-Bq4SdK0_.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs +225 -0
  18. package/fesm2022/acorex-platform-module-conversation-client-contracts.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-conversation-client-emit-typing-indicator.command-BzsN1_ns.mjs +29 -0
  20. package/fesm2022/acorex-platform-module-conversation-client-emit-typing-indicator.command-BzsN1_ns.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-conversation-client-mark-conversation-unread.command-BlYDwGVe.mjs +30 -0
  22. package/fesm2022/acorex-platform-module-conversation-client-mark-conversation-unread.command-BlYDwGVe.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-conversation-client-open-chat.command-B03q60Qx.mjs +42 -0
  24. package/fesm2022/acorex-platform-module-conversation-client-open-chat.command-B03q60Qx.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-conversation-client-retry-assist-response.command-BQLK6F69.mjs +34 -0
  26. package/fesm2022/acorex-platform-module-conversation-client-retry-assist-response.command-BQLK6F69.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-conversation-client-start-direct-chat.command-CfSIVHDu.mjs +80 -0
  28. package/fesm2022/acorex-platform-module-conversation-client-start-direct-chat.command-CfSIVHDu.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-B1Z_gZ6O.mjs +142 -0
  30. package/fesm2022/acorex-platform-module-conversation-client-sync-read-state.command-B1Z_gZ6O.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-conversation-client.mjs +2 -0
  32. package/fesm2022/acorex-platform-module-conversation-client.mjs.map +1 -0
  33. package/package.json +28 -0
  34. package/types/acorex-platform-module-conversation-client-contracts.d.ts +497 -0
  35. package/types/acorex-platform-module-conversation-client.d.ts +1614 -0
@@ -0,0 +1,492 @@
1
+ import * as i1$2 from '@acorex/components/button';
2
+ import { AXButtonModule } from '@acorex/components/button';
3
+ import { AXBasePageComponent } from '@acorex/components/page';
4
+ import * as i1$1 from '@acorex/core/translation';
5
+ import { AXTranslationModule } from '@acorex/core/translation';
6
+ import { AsyncPipe } from '@angular/common';
7
+ import * as i0 from '@angular/core';
8
+ import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
9
+ import * as i2 from '@acorex/components/decorators';
10
+ import { AXDecoratorModule } from '@acorex/components/decorators';
11
+ import { axpSanitizeLastProviderPayloadForPersistence, axpAiChatTextMessage, axpAiParseSupervisorAgentToolName, axpAiChatToolOrAgentResultBodyJson, axpAiDelegatedAgentResultSegments, axpAiDelegatedAgentPromptPreview } from '@acorex-platform/module-ai-management-client';
12
+ import { p as axmReadAssistAiTranscript, q as axmReadAssistAiTranscriptRaw, r as axmAssistSegmentDirection, s as axmParseAssistTranscriptTextEnvelope, t as axmAssistWidgetNodeFromUnknown, u as axmPartitionAssistAnswerText, v as axmSyntheticEmbedMessage, w as AXMNodeMessageRendererComponent, x as AXMAssistBotFileLineComponent, y as AXMAssistSuggestionChipsComponent } from './acorex-platform-module-conversation-client-acorex-platform-module-conversation-client-DsjrXRZ6.mjs';
13
+ import * as i5 from '@acorex/components/code-editor';
14
+ import { AXCodeEditorModule } from '@acorex/components/code-editor';
15
+ import { AXConversationTextRendererComponent } from '@acorex/components/conversation';
16
+ import { AXPMarkdownViewerComponent, AXPMarkdownTemplateDirective } from '@acorex-platform/framework-client/layout/components';
17
+ import * as i1 from '@angular/forms';
18
+ import { FormsModule } from '@angular/forms';
19
+
20
+ //#region ---- Imports ----
21
+ //#endregion
22
+ //#region ---- Message classification ----
23
+ /** True when the message carries assist / AI debug payload worth exporting. */
24
+ function axmIsAssistDebugMessage(message) {
25
+ if (!message) {
26
+ return false;
27
+ }
28
+ if (message.type === 'assist-response') {
29
+ return true;
30
+ }
31
+ const meta = message.metadata;
32
+ if (meta?.['isAssistResponse'] === true) {
33
+ return true;
34
+ }
35
+ const transcript = axmReadAssistAiTranscript(meta);
36
+ return transcript != null && transcript.length > 0;
37
+ }
38
+ //#endregion
39
+ //#region ---- Serialization ----
40
+ function toIsoTimestamp(value) {
41
+ if (value instanceof Date) {
42
+ return value.toISOString();
43
+ }
44
+ if (typeof value === 'string' || typeof value === 'number') {
45
+ const parsed = new Date(value);
46
+ if (!Number.isNaN(parsed.getTime())) {
47
+ return parsed.toISOString();
48
+ }
49
+ }
50
+ return String(value ?? '');
51
+ }
52
+ function readRecord(meta, key) {
53
+ return meta?.[key];
54
+ }
55
+ /**
56
+ * Reconstructs {@link AXPAiEngineRunResult} from assist message metadata
57
+ * (same shape returned by {@link AXPAiEngine.run}).
58
+ */
59
+ function axmBuildAssistEngineRunResult(message) {
60
+ const meta = typeof message.metadata === 'object' && message.metadata != null
61
+ ? message.metadata
62
+ : undefined;
63
+ const result = {
64
+ messages: axmReadAssistAiTranscriptRaw(meta),
65
+ };
66
+ const usage = readRecord(meta, 'assistRunUsageTotals');
67
+ if (usage != null && typeof usage === 'object') {
68
+ result.usageTotals = usage;
69
+ }
70
+ const lastProvider = readRecord(meta, 'assistRunLastProviderResult');
71
+ if (lastProvider != null && typeof lastProvider === 'object') {
72
+ result.lastProviderResult = axpSanitizeLastProviderPayloadForPersistence(lastProvider);
73
+ }
74
+ const delegated = readRecord(meta, 'assistRunDelegatedTranscriptsByCallId');
75
+ if (delegated != null && typeof delegated === 'object' && !Array.isArray(delegated)) {
76
+ result.delegatedTranscriptsByCallId = delegated;
77
+ }
78
+ return result;
79
+ }
80
+ function isRecord(value) {
81
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
82
+ }
83
+ function extractUserChatText(message) {
84
+ const payload = message.payload;
85
+ if (!isRecord(payload)) {
86
+ return '';
87
+ }
88
+ const text = payload['text'];
89
+ return typeof text === 'string' ? text.trim() : '';
90
+ }
91
+ /** User chat line as a minimal engine run result (`messages` only). */
92
+ function axmBuildUserTurnEngineRunResult(message) {
93
+ const text = extractUserChatText(message);
94
+ return {
95
+ messages: text ? [axpAiChatTextMessage('user', text)] : [],
96
+ };
97
+ }
98
+ /**
99
+ * Pretty-printed JSON for clipboard export (single assist run — {@link AXPAiEngineRunResult}).
100
+ */
101
+ function axmFormatAssistMessageDebugText(message) {
102
+ const run = axmIsAssistDebugMessage(message)
103
+ ? axmBuildAssistEngineRunResult(message)
104
+ : axmBuildUserTurnEngineRunResult(message);
105
+ return JSON.stringify(run, null, 2);
106
+ }
107
+ /**
108
+ * Pretty-printed JSON for clipboard export (conversation turns as engine run results).
109
+ */
110
+ function axmFormatAssistConversationDebugText(conversation, messages) {
111
+ const chronological = [...messages].sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
112
+ const turns = chronological.map((message) => ({
113
+ messageId: message.id,
114
+ timestamp: toIsoTimestamp(message.timestamp),
115
+ result: axmIsAssistDebugMessage(message)
116
+ ? axmBuildAssistEngineRunResult(message)
117
+ : axmBuildUserTurnEngineRunResult(message),
118
+ }));
119
+ const snapshot = {
120
+ exportedAt: new Date().toISOString(),
121
+ conversation: {
122
+ id: conversation.id ?? '',
123
+ title: conversation.title,
124
+ type: conversation.type,
125
+ metadata: conversation.metadata,
126
+ participants: conversation.participants,
127
+ },
128
+ turns,
129
+ };
130
+ return JSON.stringify(snapshot, null, 2);
131
+ }
132
+ /** Safe fragment for debug export filenames. */
133
+ function axmSanitizeDebugFilenamePart(id) {
134
+ const sanitized = id.replace(/[^\w.-]+/g, '_').slice(0, 80).trim();
135
+ return sanitized.length > 0 ? sanitized : 'debug';
136
+ }
137
+ /** Triggers a browser download of pretty-printed JSON debug export. */
138
+ function axmDownloadDebugJson(filename, text) {
139
+ if (!text.trim() || typeof document === 'undefined') {
140
+ return;
141
+ }
142
+ const blob = new Blob([text], { type: 'application/json;charset=utf-8' });
143
+ const url = URL.createObjectURL(blob);
144
+ const anchor = document.createElement('a');
145
+ anchor.href = url;
146
+ anchor.download = filename.endsWith('.json') ? filename : `${filename}.json`;
147
+ anchor.rel = 'noopener';
148
+ anchor.click();
149
+ URL.revokeObjectURL(url);
150
+ }
151
+ //#endregion
152
+
153
+ //#region ---- Imports ----
154
+ //#endregion
155
+ //#region ---- Export ----
156
+ function axmFormatDelegatedAgentDetailExportJson(delegationCallId, messages, runInput, agentName) {
157
+ const snapshot = {
158
+ exportedAt: new Date().toISOString(),
159
+ delegationCallId: delegationCallId.trim(),
160
+ ...(agentName?.trim() ? { agentName: agentName.trim() } : {}),
161
+ ...(runInput ? { runInput } : {}),
162
+ messages,
163
+ };
164
+ return JSON.stringify(snapshot, null, 2);
165
+ }
166
+ function axmDownloadDelegatedAgentDetailJson(delegationCallId, messages, runInput, agentName) {
167
+ const text = axmFormatDelegatedAgentDetailExportJson(delegationCallId, messages, runInput, agentName);
168
+ const filename = `assist-delegated-agent-${axmSanitizeDebugFilenamePart(delegationCallId)}.json`;
169
+ axmDownloadDebugJson(filename, text);
170
+ }
171
+ //#endregion
172
+
173
+ //#region ---- Imports ----
174
+ //#endregion
175
+ //#region ---- Tool result index ----
176
+ /** Maps tool_call id → tool-role line carrying {@code tool_result} / {@code agent_result}. */
177
+ function axmBuildToolResultByCallId(messages) {
178
+ const map = new Map();
179
+ for (const line of messages) {
180
+ if (line.role !== 'tool') {
181
+ continue;
182
+ }
183
+ for (const seg of line.responses) {
184
+ if (seg.type !== 'tool_result' && seg.type !== 'agent_result') {
185
+ continue;
186
+ }
187
+ const callId = seg.callId?.trim();
188
+ if (callId) {
189
+ map.set(callId, line);
190
+ }
191
+ }
192
+ }
193
+ return map;
194
+ }
195
+ //#endregion
196
+ //#region ---- Formatters ----
197
+ function axmTryPrettyJson(raw) {
198
+ const trimmed = raw.trim();
199
+ if (!trimmed) {
200
+ return '';
201
+ }
202
+ try {
203
+ return JSON.stringify(JSON.parse(trimmed), null, 2);
204
+ }
205
+ catch {
206
+ return trimmed;
207
+ }
208
+ }
209
+ function axmFormatTranscriptArgs(args) {
210
+ if (args == null) {
211
+ return '';
212
+ }
213
+ if (typeof args === 'string') {
214
+ return axmTryPrettyJson(args);
215
+ }
216
+ try {
217
+ return JSON.stringify(args, null, 2);
218
+ }
219
+ catch {
220
+ return String(args);
221
+ }
222
+ }
223
+ function axmFormatTranscriptFallbackSegment(seg) {
224
+ try {
225
+ return JSON.stringify(seg, null, 2);
226
+ }
227
+ catch {
228
+ return String(seg);
229
+ }
230
+ }
231
+ //#endregion
232
+ //#region ---- Embed parent stub ----
233
+ /** Minimal parent message for synthetic embed renderers inside the detail popup. */
234
+ function axmDelegatedTranscriptEmbedParentStub() {
235
+ return {
236
+ id: 'assist-delegated-transcript-embed',
237
+ conversationId: '',
238
+ senderId: 'assist',
239
+ type: 'text',
240
+ payload: { type: 'text', text: '' },
241
+ status: 'sent',
242
+ metadata: { assistEmbed: true },
243
+ };
244
+ }
245
+ //#endregion
246
+
247
+ //#region ---- Imports ----
248
+ //#endregion
249
+ //#region ---- Component ----
250
+ /**
251
+ * Read-only {@link AXPAiChatMessage} transcript (role + responses[]) for delegated specialist detail.
252
+ */
253
+ class AXMAssistDelegatedAgentTranscriptViewComponent {
254
+ constructor() {
255
+ //#region ---- Inputs ----
256
+ this.messages = input([], /* @ts-ignore */
257
+ ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
258
+ this.embedParent = input.required(/* @ts-ignore */
259
+ ...(ngDevMode ? [{ debugName: "embedParent" }] : /* istanbul ignore next */ []));
260
+ this.emptyHint = input(undefined, /* @ts-ignore */
261
+ ...(ngDevMode ? [{ debugName: "emptyHint" }] : /* istanbul ignore next */ []));
262
+ this.agentTitleById = input({}, /* @ts-ignore */
263
+ ...(ngDevMode ? [{ debugName: "agentTitleById" }] : /* istanbul ignore next */ []));
264
+ //#endregion
265
+ //#region ---- Template helpers ----
266
+ this.segmentDir = axmAssistSegmentDirection;
267
+ this.parseAssistLineText = axmParseAssistTranscriptTextEnvelope;
268
+ this.axmAssistWidgetNodeFromUnknown = axmAssistWidgetNodeFromUnknown;
269
+ this.partitionAnswerText = axmPartitionAssistAnswerText;
270
+ this.isDelegatedAgentCommand = (command) => axpAiParseSupervisorAgentToolName(command) != null;
271
+ //#endregion
272
+ //#region ---- Computed ----
273
+ this.hasMessages = computed(() => this.messages().length > 0, /* @ts-ignore */
274
+ ...(ngDevMode ? [{ debugName: "hasMessages" }] : /* istanbul ignore next */ []));
275
+ this.toolResultByCallId = computed(() => axmBuildToolResultByCallId(this.messages()), /* @ts-ignore */
276
+ ...(ngDevMode ? [{ debugName: "toolResultByCallId" }] : /* istanbul ignore next */ []));
277
+ this.displayLines = computed(() => this.messages().map((line, lineIndex) => ({ line, lineIndex })), /* @ts-ignore */
278
+ ...(ngDevMode ? [{ debugName: "displayLines" }] : /* istanbul ignore next */ []));
279
+ }
280
+ //#endregion
281
+ //#region ---- Segment renderers ----
282
+ roleTranslationKey(role) {
283
+ return `@conversation:chat.assist-renderer.delegated-agent.roles.${role}`;
284
+ }
285
+ resolveToolDisplayTitle(command) {
286
+ const agentId = axpAiParseSupervisorAgentToolName(command);
287
+ if (agentId) {
288
+ const title = this.agentTitleById()[agentId];
289
+ if (title?.trim()) {
290
+ return title.trim();
291
+ }
292
+ return agentId;
293
+ }
294
+ return command?.trim() || 'Tool';
295
+ }
296
+ toolResultForCallId(callId) {
297
+ if (!callId?.trim()) {
298
+ return null;
299
+ }
300
+ return this.toolResultByCallId().get(callId.trim()) ?? null;
301
+ }
302
+ delegatedAgentOutcomeSegmentsForCall(res) {
303
+ if (!res) {
304
+ return [];
305
+ }
306
+ const raw = axpAiChatToolOrAgentResultBodyJson(res);
307
+ if (!raw.trim()) {
308
+ return [];
309
+ }
310
+ try {
311
+ const o = JSON.parse(raw);
312
+ if (o['success'] === false) {
313
+ return [];
314
+ }
315
+ return axpAiDelegatedAgentResultSegments(o);
316
+ }
317
+ catch {
318
+ return [];
319
+ }
320
+ }
321
+ delegatedPromptPreview(argumentsValue) {
322
+ return axpAiDelegatedAgentPromptPreview(argumentsValue);
323
+ }
324
+ formatArgs(args) {
325
+ return axmFormatTranscriptArgs(args);
326
+ }
327
+ formatToolResultBody(line) {
328
+ return axmTryPrettyJson(axpAiChatToolOrAgentResultBodyJson(line));
329
+ }
330
+ formatFallbackSegment(seg) {
331
+ return axmFormatTranscriptFallbackSegment(seg);
332
+ }
333
+ syntheticTextMessage(lineIndex, segIndex, text) {
334
+ return axmSyntheticEmbedMessage(this.embedParent(), `dt-${lineIndex}-${segIndex}`, {
335
+ type: 'text',
336
+ payload: { type: 'text', text },
337
+ });
338
+ }
339
+ syntheticNodeEmbedMessage(lineIndex, segIndex, content) {
340
+ return axmSyntheticEmbedMessage(this.embedParent(), `dn-${lineIndex}-${segIndex}`, {
341
+ type: 'node',
342
+ payload: { type: 'node', content },
343
+ });
344
+ }
345
+ syntheticNodeFromCode(code, suffix) {
346
+ return axmSyntheticEmbedMessage(this.embedParent(), `dc-${suffix}`, {
347
+ type: 'node',
348
+ payload: { type: 'node', content: this.parseCodeAsWidgetContent(code) },
349
+ });
350
+ }
351
+ parseCodeAsWidgetContent(code) {
352
+ try {
353
+ return JSON.parse(code.trim());
354
+ }
355
+ catch {
356
+ return code;
357
+ }
358
+ }
359
+ widgetNodeFromCode(code) {
360
+ try {
361
+ return axmAssistWidgetNodeFromUnknown(JSON.parse(code.trim()));
362
+ }
363
+ catch {
364
+ return axmAssistWidgetNodeFromUnknown(code);
365
+ }
366
+ }
367
+ sectionCollapseKey(lineIndex, segIndex, section) {
368
+ return `line-${lineIndex}-seg-${segIndex}-${section}`;
369
+ }
370
+ markdownCodeLanguage(segment) {
371
+ if (this.isMarkdownCodeSegment(segment) && segment.language.trim()) {
372
+ return segment.language;
373
+ }
374
+ return 'javascript';
375
+ }
376
+ markdownCodeValue(segment) {
377
+ if (this.isMarkdownCodeSegment(segment)) {
378
+ return segment.code;
379
+ }
380
+ return '';
381
+ }
382
+ isMarkdownCodeSegment(segment) {
383
+ if (!segment || typeof segment !== 'object') {
384
+ return false;
385
+ }
386
+ const candidate = segment;
387
+ return candidate.type === 'code' && typeof candidate.language === 'string' && typeof candidate.code === 'string';
388
+ }
389
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentTranscriptViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
390
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAssistDelegatedAgentTranscriptViewComponent, isStandalone: true, selector: "axm-assist-delegated-agent-transcript-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, embedParent: { classPropertyName: "embedParent", publicName: "embedParent", isSignal: true, isRequired: true, transformFunction: null }, emptyHint: { classPropertyName: "emptyHint", publicName: "emptyHint", isSignal: true, isRequired: false, transformFunction: null }, agentTitleById: { classPropertyName: "agentTitleById", publicName: "agentTitleById", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"axm-delegated-transcript\">\n @if (!hasMessages() && emptyHint()) {\n <p class=\"axm-delegated-transcript__empty\">{{ emptyHint() }}</p>\n } @else {\n <div class=\"axm-delegated-transcript__lines\" role=\"list\">\n @for (item of displayLines(); track item.lineIndex) {\n @let line = item.line;\n @let lineIndex = item.lineIndex;\n <details\n class=\"axm-delegated-transcript__line-collapse\"\n role=\"listitem\"\n [class.axm-delegated-transcript__line-collapse--user]=\"line.role === 'user'\"\n [class.axm-delegated-transcript__line-collapse--assistant]=\"line.role === 'assistant'\"\n [attr.data-role]=\"line.role\"\n [open]=\"lineIndex === displayLines().length - 1 ? true : null\"\n >\n <summary class=\"axm-delegated-transcript__line-summary\">\n <span class=\"axm-delegated-transcript__role-pill\">{{ roleTranslationKey(line.role) | translate | async }}</span>\n @if (line.delegatedReflection) {\n <span class=\"axm-delegated-transcript__reflection-badge\">{{\n '@conversation:chat.assist-renderer.delegated-agent.reflection' | translate | async\n }}</span>\n }\n @if (line.name?.trim()) {\n <span class=\"axm-delegated-transcript__name\">{{ line.name }}</span>\n }\n </summary>\n\n <div class=\"axm-delegated-transcript__segments\">\n @for (seg of line.responses; track segIndex; let segIndex = $index) {\n @if (line.role === 'user' && seg.type === 'file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'user' && seg.type === 'text') {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'think') {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(seg.content)\"\n >\n <axp-markdown-viewer [markdown]=\"seg.content\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'text') {\n @let parsedLine = parseAssistLineText(seg.content);\n @if (parsedLine.thinking?.trim()) {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(parsedLine.thinking ?? '')\"\n >\n <axp-markdown-viewer [markdown]=\"parsedLine.thinking ?? ''\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @if (parsedLine.body.trim()) {\n @let partitionedLine = partitionAnswerText(parsedLine.body);\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n @if (partitionedLine.markdown.trim()) {\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(partitionedLine.markdown)\"\n >\n <axp-markdown-viewer [markdown]=\"partitionedLine.markdown\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n @if (widgetNodeFromCode(markdownCodeValue(segment))) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeFromCode(\n markdownCodeValue(segment),\n sectionCollapseKey(lineIndex, segIndex, 'md-code')\n )\n \"\n />\n </div>\n } @else {\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n @for (renderable of partitionedLine.renderable; track $index) {\n @switch (renderable.type) {\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(renderable.content)) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(lineIndex, segIndex * 100 + $index, renderable.content)\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"renderable.content\" />\n </div>\n }\n @case ('file') {\n <axm-assist-bot-file-line\n [parentMessage]=\"embedParent()\"\n [fileId]=\"renderable.content.fileId\"\n />\n }\n }\n }\n </details>\n }\n } @else if (\n line.role === 'assistant' &&\n (seg.type === 'agent' || seg.type === 'tool') &&\n isDelegatedAgentCommand(seg.content.command)\n ) {\n <details class=\"axm-delegated-transcript__tool-collapse\">\n <summary class=\"axm-delegated-transcript__tool-panel-header\">\n <i class=\"fa-light fa-people-group axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n <span class=\"axm-delegated-transcript__tool-panel-title\">{{\n resolveToolDisplayTitle(seg.content.command)\n }}</span>\n </summary>\n <div class=\"axm-delegated-transcript__tool-panel-body\">\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-prompt' | translate | async }}\n </summary>\n <div\n class=\"axm-delegated-transcript__prompt axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(delegatedPromptPreview(seg.content.arguments))\"\n >\n {{ delegatedPromptPreview(seg.content.arguments) }}\n </div>\n </details>\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n @let outcomeSegs = delegatedAgentOutcomeSegmentsForCall(resultLine);\n @if (outcomeSegs.length > 0) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n @for (outSeg of outcomeSegs; track $index; let outcomeIndex = $index) {\n @switch (outSeg.type) {\n @case ('text') {\n @let parsedOut = parseAssistLineText(outSeg.content);\n @if (parsedOut.thinking?.trim()) {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(parsedOut.thinking ?? '')\"\n >\n <axp-markdown-viewer [markdown]=\"parsedOut.thinking ?? ''\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @if (parsedOut.body.trim()) {\n @let partitionedOut = partitionAnswerText(parsedOut.body);\n @if (partitionedOut.markdown.trim()) {\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(partitionedOut.markdown)\"\n >\n <axp-markdown-viewer [markdown]=\"partitionedOut.markdown\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n @if (widgetNodeFromCode(markdownCodeValue(segment))) {\n <div\n class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\"\n dir=\"auto\"\n >\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeFromCode(\n markdownCodeValue(segment),\n sectionCollapseKey(\n lineIndex,\n segIndex * 1000 + outcomeIndex,\n 'out-code'\n )\n )\n \"\n />\n </div>\n } @else {\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n @for (renderable of partitionedOut.renderable; track $index; let renderableIndex = $index) {\n @switch (renderable.type) {\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(renderable.content)) {\n <div\n class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\"\n dir=\"auto\"\n >\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(\n lineIndex,\n segIndex * 1000 + outcomeIndex * 10 + renderableIndex,\n renderable.content\n )\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"renderable.content\" />\n </div>\n }\n @case ('file') {\n <axm-assist-bot-file-line\n [parentMessage]=\"embedParent()\"\n [fileId]=\"renderable.content.fileId\"\n />\n }\n }\n }\n }\n }\n @case ('think') {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(outSeg.content)\"\n >\n <axp-markdown-viewer [markdown]=\"outSeg.content\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @case ('file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"outSeg.content.fileId\" />\n }\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(outSeg.content)) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(lineIndex, segIndex * 1000 + outcomeIndex, outSeg.content)\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"outSeg.content\" />\n </div>\n }\n }\n }\n </details>\n } @else {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n }\n }\n </div>\n </details>\n } @else if (line.role === 'assistant' && (seg.type === 'agent' || seg.type === 'tool')) {\n <details class=\"axm-delegated-transcript__tool-collapse\">\n <summary class=\"axm-delegated-transcript__tool-panel-header\">\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n <span class=\"axm-delegated-transcript__tool-panel-title\">{{\n resolveToolDisplayTitle(seg.content.command)\n }}</span>\n </summary>\n <div class=\"axm-delegated-transcript__tool-panel-body\">\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n }\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'node') {\n @if (axmAssistWidgetNodeFromUnknown(seg.content)) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"syntheticNodeEmbedMessage(lineIndex, segIndex, seg.content)\"\n />\n </div>\n </details>\n }\n } @else if (line.role === 'assistant' && seg.type === 'file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'tool' && (seg.type === 'tool_result' || seg.type === 'agent_result')) {\n <!-- Shown on the matching tool/agent block above -->\n } @else if (line.role === 'system' && seg.type === 'text') {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.delegated-agent.roles.system' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n </details>\n } @else {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-bot__fallback axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(formatFallbackSegment(seg))\"\n >\n {{ formatFallbackSegment(seg) }}\n </div>\n </details>\n }\n }\n </div>\n </details>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;.axm-assist-renderer{display:flex;flex-direction:column;gap:.25rem}.axm-assist-renderer axm-assist-suggestion-chips>div{padding:0;padding-top:calc(var(--spacing, .25rem) * 4)}.axm-assist-renderer .axm-assist-renderer__cursor{display:inline-block;inline-size:6px;block-size:1em;margin-inline-start:2px;background:rgb(var(--ax-sys-color-primary-500));border-radius:1px;animation:axm-blink .8s steps(2) infinite;vertical-align:text-bottom}.axm-assist-renderer .axm-assist-renderer__stream-content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-assist-renderer .axm-assist-renderer__streaming-activity{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-block:.15rem}.axm-assist-renderer .axm-assist-renderer__activity-label{line-height:1.45}.axm-assist-renderer .axm-assist-renderer__text{white-space:pre-line;word-break:break-word;line-height:1.85;font-size:.95rem;letter-spacing:.002em;text-wrap:pretty}.axm-assist-renderer .axm-assist-renderer__markdown .axp-markdown-viewer__content :is(p,ul,ol){margin-block:.45rem}.axm-assist-renderer .axm-assist-renderer__markdown .axp-markdown-viewer__content li{line-height:1.8}.axm-assist-renderer .axm-assist-renderer__accordion-group{width:100%}.axm-assist-renderer .axm-assist-renderer__collapse-shell{border-radius:.625rem;overflow:hidden;background:rgb(var(--ax-sys-color-lighter-surface))}.axm-assist-renderer .axm-assist-renderer__collapse-shell>.axm-assist-renderer__accordion-header:hover{background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__collapse-body{margin:0;padding:0;border-radius:0 0 .5rem .5rem;background:transparent}.axm-assist-renderer .axm-assist-renderer__collapse-body>.axm-assist-renderer__agent-live-block--in-accordion{padding-inline:.5rem;padding-block-end:.35rem}.axm-assist-renderer .axm-assist-renderer__accordion-header{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);--tw-border-style: none;border-style:none;padding:.5rem .75rem;background:transparent;border-radius:.625rem .625rem 0 0;transition:background-color .15s ease}.axm-assist-renderer .axm-assist-renderer__accordion-header-main{display:flex;flex-direction:column;min-inline-size:0;gap:.1rem}.axm-assist-renderer .axm-assist-renderer__accordion-header-title{display:inline-flex;align-items:center;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.8125rem;line-height:1.25;color:rgb(var(--ax-sys-color-on-surface));gap:.4rem}.axm-assist-renderer .axm-assist-renderer__header-trailing{display:inline-flex;flex-shrink:0;align-items:center;gap:.35rem}.axm-assist-renderer .axm-assist-renderer__delegated-agent-detail-link{text-decoration-line:underline;padding:.25rem;padding-top:0}.axm-assist-renderer .axm-assist-renderer__badge{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem);padding:.1875rem .65rem;font-size:.6875rem;line-height:1.3;letter-spacing:.03em}.axm-assist-renderer .axm-assist-renderer__badge--warning{background:rgb(var(--ax-sys-color-warning-100))}.axm-assist-renderer .axm-assist-renderer__badge--primary{background:rgb(var(--ax-sys-color-primary-100))}.axm-assist-renderer .axm-assist-renderer__badge--success{background:rgb(var(--ax-sys-color-success-100))}.axm-assist-renderer .axm-assist-renderer__thinking-chevron{display:inline-block;flex-shrink:0;font-size:.65rem;opacity:.65;transition:transform .2s ease;line-height:1}.axm-assist-renderer .axm-assist-renderer__thinking-chevron--expanded{transform:rotate(180deg)}.axm-assist-renderer .axm-assist-renderer__thinking-body{padding:.625rem .75rem .75rem;font-size:.78rem;color:rgb(var(--ax-sys-color-neutral-700));word-break:break-word;line-height:1.55}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content{font-size:inherit;color:inherit;line-height:inherit}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content :is(p,ul,ol){margin-block:.35rem}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content li{line-height:inherit}.axm-assist-renderer .axm-assist-renderer__tools{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-assist-renderer .axm-assist-renderer__tool-row{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);padding:.5rem .65rem;border-radius:.625rem;background:rgb(var(--ax-sys-color-lighter-surface));border:1px solid rgb(var(--ax-sys-color-border-lighter-surface))}.axm-assist-renderer .axm-assist-renderer__tool-row-main{display:flex;min-width:0px;align-items:center;gap:.45rem}.axm-assist-renderer .axm-assist-renderer__tool-row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:rgb(var(--ax-sys-color-on-surface))}.axm-assist-renderer .axm-assist-renderer__tool-model-label{flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);max-width:9rem;letter-spacing:.01em;color:rgb(var(--ax-sys-color-neutral-600));opacity:.78}.axm-assist-renderer .axm-assist-renderer__tool-card{border-radius:.625rem;overflow:hidden}.axm-assist-renderer .axm-assist-renderer__tool-body{display:flex;flex-direction:column;padding:.625rem .75rem .75rem;gap:.35rem}.axm-assist-renderer .axm-assist-renderer__tool-section-label{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;font-size:.625rem;letter-spacing:.06em;color:rgb(var(--ax-sys-color-neutral-700))}.axm-assist-renderer .axm-assist-renderer__tool-pre{margin:0;overflow:auto;border-radius:var(--radius-md, .375rem);max-block-size:10rem;background:rgb(var(--ax-sys-color-light-surface));padding:.5rem;font-family:var(--ax-font-mono, monospace);font-size:.675rem;line-height:1.45;word-break:break-word}.axm-assist-renderer .axm-assist-renderer__run-meta-wrap{margin-block-start:.45rem}.axm-assist-renderer .axm-assist-renderer__run-meta-header-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;line-height:1.35;color:rgb(var(--ax-sys-color-neutral-700));max-width:100%}.axm-assist-renderer .axm-assist-renderer__run-meta{display:flex;flex-direction:column;margin-block-start:.45rem;padding:.55rem .65rem .6rem;border-radius:.625rem;background:rgb(var(--ax-sys-color-lighter-surface));gap:.45rem}.axm-assist-renderer .axm-assist-renderer__run-meta--panel{margin-block-start:0;padding:.45rem .5rem .55rem;background:transparent;border-radius:0}.axm-assist-renderer .axm-assist-renderer__run-meta-grid{display:flex;gap:.4rem}.axm-assist-renderer .axm-assist-renderer__meta-tile{min-width:0px;padding:.4rem .5rem .45rem;border-radius:.45rem;background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__meta-tile--wide{grid-column:1/-1}.axm-assist-renderer .axm-assist-renderer__meta-tile--accent{background:rgb(var(--ax-sys-color-primary-50))}.axm-assist-renderer .axm-assist-renderer__meta-tile-label{--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);text-transform:uppercase;font-size:.6rem;letter-spacing:.06em;color:rgb(var(--ax-sys-color-neutral-700));margin-block-end:.2rem}.axm-assist-renderer .axm-assist-renderer__meta-tile-value{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.78rem;line-height:1.35;color:rgb(var(--ax-sys-color-on-surface));word-break:break-word}.axm-assist-renderer .axm-assist-renderer__meta-tile-value--mono{font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\" 1}.axm-assist-renderer .axm-assist-renderer__meta-tile-sub{margin-block-start:.15rem;font-size:.65rem;line-height:1.3;color:rgb(var(--ax-sys-color-neutral-700));font-family:var(--ax-font-mono, ui-monospace, monospace);word-break:break-all}.axm-assist-renderer .axm-assist-renderer__meta-tile-note{display:inline;--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);margin-inline-start:.2rem;font-size:.65rem;color:rgb(var(--ax-sys-color-success-700))}.axm-assist-renderer .axm-assist-renderer__tool-editor-wrap{overflow:hidden;border-radius:var(--radius-md, .375rem);background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__waiting{display:flex;gap:.25rem;padding:.25rem 0}.axm-assist-renderer .axm-assist-renderer__dot{inline-size:6px;block-size:6px;border-radius:50%;background:rgb(var(--ax-sys-color-neutral-500));animation:axm-blink 1.2s ease-in-out infinite}.axm-assist-renderer .axm-assist-renderer__dot:nth-child(2){animation-delay:.2s}.axm-assist-renderer .axm-assist-renderer__dot:nth-child(3){animation-delay:.4s}.axm-assist-renderer .axm-assist-renderer__agent-live-block{display:flex;flex-direction:column;border-radius:.75rem;background:rgb(var(--ax-sys-color-lighter-surface));padding:.75rem .875rem;gap:.65rem;max-inline-size:min(42rem,100%)}.axm-assist-renderer .axm-assist-renderer__agent-live-block--in-accordion{background:rgb(var(--ax-sys-color-light-surface));border-radius:.5rem;padding:.5rem .55rem .55rem;max-inline-size:none}.axm-assist-renderer .axm-assist-renderer__agent-live-header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axm-assist-renderer .axm-assist-renderer__agent-live-title{flex:1;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.8125rem;color:rgb(var(--ax-sys-color-on-surface));min-inline-size:0}.axm-assist-renderer .axm-assist-renderer__agent-live-prompt{align-self:flex-end;font-size:.8125rem;line-height:1.55;word-break:break-word;padding:.5rem .75rem;border-radius:1.25rem;background:rgb(var(--ax-sys-color-lightest-surface));max-inline-size:min(92%,36rem)}.axm-assist-renderer .axm-assist-renderer__agent-live-stream{font-size:.8125rem;line-height:1.55;white-space:pre-line;word-break:break-word;padding-block-start:.15rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-tools{display:flex;flex-direction:column;gap:.35rem;padding-block-start:.35rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-row{display:flex;align-items:center;gap:.45rem;font-size:.72rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-name{flex:1;overflow:hidden;text-overflow:ellipsis;font-family:var(--ax-font-mono, monospace);font-size:.7rem;min-inline-size:0}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-status{flex-shrink:0;color:rgb(var(--ax-sys-color-neutral-600))}.axm-assist-renderer .axm-assist-renderer__retry-alert-body{display:flex;align-items:flex-start;gap:.75rem}.axm-assist-renderer .axm-assist-renderer__retry-alert-text{display:flex;flex:1;flex-direction:column;min-inline-size:0;gap:.3rem}.axm-assist-renderer .axm-assist-renderer__retry-description{margin:0;font-size:.8125rem;line-height:1.5;opacity:.92}.axm-assist-renderer .axm-assist-renderer__retry-error-detail{margin:.15rem 0 0;font-size:.75rem;line-height:1.45;font-family:var(--ax-font-mono, ui-monospace, monospace);word-break:break-word;opacity:.88}.axm-assist-renderer .axm-assist-renderer__retry-action{flex-shrink:0;align-self:center}.axm-assist-bot,.axm-assist-bot .axm-assist-bot__final-line{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axm-assist-bot .axm-assist-bot__segment{unicode-bidi:isolate;font-size:.95rem;line-height:1.8;letter-spacing:.002em;color:rgb(var(--ax-sys-color-on-surface));text-wrap:pretty}.axm-assist-bot .axm-assist-bot__segment:has(axm-chat-user-form-renderer){inline-size:100%;max-inline-size:100%}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer{display:block}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer :is(p,ul,ol){margin-block:.45rem}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer li{line-height:1.8}.axm-assist-bot .axm-assist-bot__line--user{align-self:flex-end}.axm-assist-bot .axm-assist-bot__line--tool-role{align-self:stretch}.axm-assist-bot .axm-assist-bot__tool-result{border-radius:var(--radius-lg, .5rem);background:rgb(var(--ax-sys-color-lighter-surface));padding:.5rem .75rem}.axm-assist-bot .axm-assist-bot__fallback{font-size:.88rem;line-height:1.75;word-break:break-word;opacity:.9}@keyframes axm-blink{0%{opacity:1}50%{opacity:0}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n", "@layer properties;.axm-delegated-transcript{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3);min-inline-size:0}.axm-delegated-transcript .axm-delegated-transcript__empty{margin:0;border-radius:var(--radius-lg, .5rem);padding:calc(var(--spacing, .25rem) * 6);text-align:center;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgb(var(--ax-sys-color-neutral-600));background:rgb(var(--ax-sys-color-lighter-surface))}.axm-delegated-transcript .axm-delegated-transcript__lines{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);overflow-y:auto;padding:calc(var(--spacing, .25rem) * 4);max-block-size:min(75vh,42rem)}.axm-delegated-transcript .axm-delegated-transcript__line-collapse{display:flex;flex-direction:column;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-lighter-surface));padding:.35rem .65rem .65rem}.axm-delegated-transcript .axm-delegated-transcript__line-collapse--user{background:rgb(var(--ax-sys-color-primary-500))}@supports (color: color-mix(in lab,red,red)){.axm-delegated-transcript .axm-delegated-transcript__line-collapse--user{background:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 5%,rgb(var(--ax-sys-color-lighter-surface)))}}.axm-delegated-transcript .axm-delegated-transcript__line-collapse--assistant{background:rgb(var(--ax-sys-color-lightest-surface))}.axm-delegated-transcript .axm-delegated-transcript__line-summary{display:flex;cursor:pointer;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);padding:.35rem .15rem;list-style:none}.axm-delegated-transcript .axm-delegated-transcript__line-summary::-webkit-details-marker{display:none}.axm-delegated-transcript .axm-delegated-transcript__line-summary:before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease}.axm-delegated-transcript .axm-delegated-transcript__line-collapse[open]>.axm-delegated-transcript__line-summary:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__line{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2.5);padding:.75rem .85rem;border-radius:.75rem;border:1px solid rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-lighter-surface))}.axm-delegated-transcript .axm-delegated-transcript__line--user{background:rgb(var(--ax-sys-color-primary-500))}@supports (color: color-mix(in lab,red,red)){.axm-delegated-transcript .axm-delegated-transcript__line--user{background:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 5%,rgb(var(--ax-sys-color-lighter-surface)))}}.axm-delegated-transcript .axm-delegated-transcript__line--assistant{background:rgb(var(--ax-sys-color-lightest-surface))}.axm-delegated-transcript .axm-delegated-transcript__role{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axm-delegated-transcript .axm-delegated-transcript__role-pill{display:inline-flex;align-items:center;border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;padding:.2rem .55rem;font-size:.625rem;letter-spacing:.05em;color:rgb(var(--ax-sys-color-on-primary-light-surface));background:rgb(var(--ax-sys-color-primary-100))}.axm-delegated-transcript .axm-delegated-transcript__reflection-badge{border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);padding:.125rem .45rem;font-size:.625rem;color:rgb(var(--ax-sys-color-on-warning-light-surface));background:rgb(var(--ax-sys-color-warning-100))}.axm-delegated-transcript .axm-delegated-transcript__name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:rgb(var(--ax-sys-color-neutral-600))}.axm-delegated-transcript .axm-delegated-transcript__segments{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding-inline-start:.35rem}.axm-delegated-transcript .axm-delegated-transcript__section-collapse,.axm-delegated-transcript .axm-delegated-transcript__tool-collapse{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.35rem .5rem}.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header{display:flex;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 2);list-style:none;padding:.2rem .15rem}:is(.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header)::-webkit-details-marker{display:none}:is(.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header):before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.5625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease;flex-shrink:0}.axm-delegated-transcript .axm-delegated-transcript__section-collapse[open]>.axm-delegated-transcript__section-summary:before,.axm-delegated-transcript .axm-delegated-transcript__tool-collapse[open]>.axm-delegated-transcript__tool-panel-header:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__section-summary{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-neutral-700))}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding-block-start:.35rem;padding-inline-start:.5rem}.axm-delegated-transcript .axm-delegated-transcript__widget-embed{inline-size:100%;max-inline-size:100%;min-block-size:0}.axm-delegated-transcript .axm-delegated-transcript__think{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.35rem .5rem}.axm-delegated-transcript .axm-delegated-transcript__think-summary{display:flex;cursor:pointer;align-items:center;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);gap:.35rem;font-size:.8125rem;color:rgb(var(--ax-sys-color-on-surface));list-style:none}.axm-delegated-transcript .axm-delegated-transcript__think-summary::-webkit-details-marker{display:none}.axm-delegated-transcript .axm-delegated-transcript__think-summary:before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.5625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease}.axm-delegated-transcript .axm-delegated-transcript__think[open]>.axm-delegated-transcript__think-summary:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__tool-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.65rem .75rem}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-on-surface))}.axm-delegated-transcript .axm-delegated-transcript__prompt{border-radius:var(--radius-md, .375rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));padding:.5rem .6rem;background:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-surface));white-space:pre-wrap;word-break:break-word}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXConversationTextRendererComponent, selector: "ax-conversation-text-renderer", inputs: ["message"] }, { kind: "component", type: AXMNodeMessageRendererComponent, selector: "axm-chat-user-form-renderer", inputs: ["message", "node"], outputs: ["formSubmitted"] }, { kind: "component", type: AXMAssistBotFileLineComponent, selector: "axm-assist-bot-file-line", inputs: ["parentMessage", "fileId"] }, { kind: "component", type: AXMAssistSuggestionChipsComponent, selector: "axm-assist-suggestion-chips", inputs: ["items", "compact", "sendInPlace", "disabled"], outputs: ["conversationCreated"] }, { kind: "ngmodule", type: AXCodeEditorModule }, { kind: "component", type: i5.AXCodeEditorComponent, selector: "ax-code-editor", inputs: ["disabled", "value", "state", "name", "id", "language", "readonly", "placeholder", "lineNumbers", "lineWrapping", "tabSize", "indentWithTab", "theme", "extensions", "ariaLabel", "focusOnReady", "formatOnSave", "minRow", "customCompletions"], outputs: ["onValueChanged", "valueChange", "stateChange", "readonlyChange", "disabledChange", "ready", "save"] }, { kind: "component", type: AXPMarkdownViewerComponent, selector: "axp-markdown-viewer", inputs: ["markdown"] }, { kind: "directive", type: AXPMarkdownTemplateDirective, selector: "ng-template[axpMarkdownTemplate]", inputs: ["axpMarkdownTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
391
+ }
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentTranscriptViewComponent, decorators: [{
393
+ type: Component,
394
+ args: [{ selector: 'axm-assist-delegated-agent-transcript-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
395
+ AXConversationTextRendererComponent,
396
+ AXMNodeMessageRendererComponent,
397
+ AXMAssistBotFileLineComponent,
398
+ AXMAssistSuggestionChipsComponent,
399
+ AXCodeEditorModule,
400
+ AXPMarkdownViewerComponent,
401
+ AXPMarkdownTemplateDirective,
402
+ FormsModule,
403
+ AXTranslationModule,
404
+ AsyncPipe,
405
+ ], template: "<div class=\"axm-delegated-transcript\">\n @if (!hasMessages() && emptyHint()) {\n <p class=\"axm-delegated-transcript__empty\">{{ emptyHint() }}</p>\n } @else {\n <div class=\"axm-delegated-transcript__lines\" role=\"list\">\n @for (item of displayLines(); track item.lineIndex) {\n @let line = item.line;\n @let lineIndex = item.lineIndex;\n <details\n class=\"axm-delegated-transcript__line-collapse\"\n role=\"listitem\"\n [class.axm-delegated-transcript__line-collapse--user]=\"line.role === 'user'\"\n [class.axm-delegated-transcript__line-collapse--assistant]=\"line.role === 'assistant'\"\n [attr.data-role]=\"line.role\"\n [open]=\"lineIndex === displayLines().length - 1 ? true : null\"\n >\n <summary class=\"axm-delegated-transcript__line-summary\">\n <span class=\"axm-delegated-transcript__role-pill\">{{ roleTranslationKey(line.role) | translate | async }}</span>\n @if (line.delegatedReflection) {\n <span class=\"axm-delegated-transcript__reflection-badge\">{{\n '@conversation:chat.assist-renderer.delegated-agent.reflection' | translate | async\n }}</span>\n }\n @if (line.name?.trim()) {\n <span class=\"axm-delegated-transcript__name\">{{ line.name }}</span>\n }\n </summary>\n\n <div class=\"axm-delegated-transcript__segments\">\n @for (seg of line.responses; track segIndex; let segIndex = $index) {\n @if (line.role === 'user' && seg.type === 'file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'user' && seg.type === 'text') {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'think') {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(seg.content)\"\n >\n <axp-markdown-viewer [markdown]=\"seg.content\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'text') {\n @let parsedLine = parseAssistLineText(seg.content);\n @if (parsedLine.thinking?.trim()) {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(parsedLine.thinking ?? '')\"\n >\n <axp-markdown-viewer [markdown]=\"parsedLine.thinking ?? ''\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @if (parsedLine.body.trim()) {\n @let partitionedLine = partitionAnswerText(parsedLine.body);\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n @if (partitionedLine.markdown.trim()) {\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(partitionedLine.markdown)\"\n >\n <axp-markdown-viewer [markdown]=\"partitionedLine.markdown\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n @if (widgetNodeFromCode(markdownCodeValue(segment))) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeFromCode(\n markdownCodeValue(segment),\n sectionCollapseKey(lineIndex, segIndex, 'md-code')\n )\n \"\n />\n </div>\n } @else {\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n @for (renderable of partitionedLine.renderable; track $index) {\n @switch (renderable.type) {\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(renderable.content)) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(lineIndex, segIndex * 100 + $index, renderable.content)\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"renderable.content\" />\n </div>\n }\n @case ('file') {\n <axm-assist-bot-file-line\n [parentMessage]=\"embedParent()\"\n [fileId]=\"renderable.content.fileId\"\n />\n }\n }\n }\n </details>\n }\n } @else if (\n line.role === 'assistant' &&\n (seg.type === 'agent' || seg.type === 'tool') &&\n isDelegatedAgentCommand(seg.content.command)\n ) {\n <details class=\"axm-delegated-transcript__tool-collapse\">\n <summary class=\"axm-delegated-transcript__tool-panel-header\">\n <i class=\"fa-light fa-people-group axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n <span class=\"axm-delegated-transcript__tool-panel-title\">{{\n resolveToolDisplayTitle(seg.content.command)\n }}</span>\n </summary>\n <div class=\"axm-delegated-transcript__tool-panel-body\">\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-prompt' | translate | async }}\n </summary>\n <div\n class=\"axm-delegated-transcript__prompt axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(delegatedPromptPreview(seg.content.arguments))\"\n >\n {{ delegatedPromptPreview(seg.content.arguments) }}\n </div>\n </details>\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n @let outcomeSegs = delegatedAgentOutcomeSegmentsForCall(resultLine);\n @if (outcomeSegs.length > 0) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n @for (outSeg of outcomeSegs; track $index; let outcomeIndex = $index) {\n @switch (outSeg.type) {\n @case ('text') {\n @let parsedOut = parseAssistLineText(outSeg.content);\n @if (parsedOut.thinking?.trim()) {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(parsedOut.thinking ?? '')\"\n >\n <axp-markdown-viewer [markdown]=\"parsedOut.thinking ?? ''\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @if (parsedOut.body.trim()) {\n @let partitionedOut = partitionAnswerText(parsedOut.body);\n @if (partitionedOut.markdown.trim()) {\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(partitionedOut.markdown)\"\n >\n <axp-markdown-viewer [markdown]=\"partitionedOut.markdown\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n @if (widgetNodeFromCode(markdownCodeValue(segment))) {\n <div\n class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\"\n dir=\"auto\"\n >\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeFromCode(\n markdownCodeValue(segment),\n sectionCollapseKey(\n lineIndex,\n segIndex * 1000 + outcomeIndex,\n 'out-code'\n )\n )\n \"\n />\n </div>\n } @else {\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n @for (renderable of partitionedOut.renderable; track $index; let renderableIndex = $index) {\n @switch (renderable.type) {\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(renderable.content)) {\n <div\n class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\"\n dir=\"auto\"\n >\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(\n lineIndex,\n segIndex * 1000 + outcomeIndex * 10 + renderableIndex,\n renderable.content\n )\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"renderable.content\" />\n </div>\n }\n @case ('file') {\n <axm-assist-bot-file-line\n [parentMessage]=\"embedParent()\"\n [fileId]=\"renderable.content.fileId\"\n />\n }\n }\n }\n }\n }\n @case ('think') {\n <details class=\"axm-delegated-transcript__think\">\n <summary class=\"axm-delegated-transcript__think-summary\">\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(outSeg.content)\"\n >\n <axp-markdown-viewer [markdown]=\"outSeg.content\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n </details>\n }\n @case ('file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"outSeg.content.fileId\" />\n }\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(outSeg.content)) {\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"\n syntheticNodeEmbedMessage(lineIndex, segIndex * 1000 + outcomeIndex, outSeg.content)\n \"\n />\n </div>\n }\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"outSeg.content\" />\n </div>\n }\n }\n }\n </details>\n } @else {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n }\n }\n </div>\n </details>\n } @else if (line.role === 'assistant' && (seg.type === 'agent' || seg.type === 'tool')) {\n <details class=\"axm-delegated-transcript__tool-collapse\">\n <summary class=\"axm-delegated-transcript__tool-panel-header\">\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n <span class=\"axm-delegated-transcript__tool-panel-title\">{{\n resolveToolDisplayTitle(seg.content.command)\n }}</span>\n </summary>\n <div class=\"axm-delegated-transcript__tool-panel-body\">\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </details>\n }\n </div>\n </details>\n } @else if (line.role === 'assistant' && seg.type === 'node') {\n @if (axmAssistWidgetNodeFromUnknown(seg.content)) {\n <details class=\"axm-delegated-transcript__section-collapse\" open>\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment axm-delegated-transcript__widget-embed\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"syntheticNodeEmbedMessage(lineIndex, segIndex, seg.content)\"\n />\n </div>\n </details>\n }\n } @else if (line.role === 'assistant' && seg.type === 'file') {\n <axm-assist-bot-file-line [parentMessage]=\"embedParent()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'tool' && (seg.type === 'tool_result' || seg.type === 'agent_result')) {\n <!-- Shown on the matching tool/agent block above -->\n } @else if (line.role === 'system' && seg.type === 'text') {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.delegated-agent.roles.system' | translate | async }}\n </summary>\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n </details>\n } @else {\n <details class=\"axm-delegated-transcript__section-collapse\">\n <summary class=\"axm-delegated-transcript__section-summary\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </summary>\n <div\n class=\"axm-assist-bot__fallback axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(formatFallbackSegment(seg))\"\n >\n {{ formatFallbackSegment(seg) }}\n </div>\n </details>\n }\n }\n </div>\n </details>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;.axm-assist-renderer{display:flex;flex-direction:column;gap:.25rem}.axm-assist-renderer axm-assist-suggestion-chips>div{padding:0;padding-top:calc(var(--spacing, .25rem) * 4)}.axm-assist-renderer .axm-assist-renderer__cursor{display:inline-block;inline-size:6px;block-size:1em;margin-inline-start:2px;background:rgb(var(--ax-sys-color-primary-500));border-radius:1px;animation:axm-blink .8s steps(2) infinite;vertical-align:text-bottom}.axm-assist-renderer .axm-assist-renderer__stream-content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-assist-renderer .axm-assist-renderer__streaming-activity{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-block:.15rem}.axm-assist-renderer .axm-assist-renderer__activity-label{line-height:1.45}.axm-assist-renderer .axm-assist-renderer__text{white-space:pre-line;word-break:break-word;line-height:1.85;font-size:.95rem;letter-spacing:.002em;text-wrap:pretty}.axm-assist-renderer .axm-assist-renderer__markdown .axp-markdown-viewer__content :is(p,ul,ol){margin-block:.45rem}.axm-assist-renderer .axm-assist-renderer__markdown .axp-markdown-viewer__content li{line-height:1.8}.axm-assist-renderer .axm-assist-renderer__accordion-group{width:100%}.axm-assist-renderer .axm-assist-renderer__collapse-shell{border-radius:.625rem;overflow:hidden;background:rgb(var(--ax-sys-color-lighter-surface))}.axm-assist-renderer .axm-assist-renderer__collapse-shell>.axm-assist-renderer__accordion-header:hover{background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__collapse-body{margin:0;padding:0;border-radius:0 0 .5rem .5rem;background:transparent}.axm-assist-renderer .axm-assist-renderer__collapse-body>.axm-assist-renderer__agent-live-block--in-accordion{padding-inline:.5rem;padding-block-end:.35rem}.axm-assist-renderer .axm-assist-renderer__accordion-header{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);--tw-border-style: none;border-style:none;padding:.5rem .75rem;background:transparent;border-radius:.625rem .625rem 0 0;transition:background-color .15s ease}.axm-assist-renderer .axm-assist-renderer__accordion-header-main{display:flex;flex-direction:column;min-inline-size:0;gap:.1rem}.axm-assist-renderer .axm-assist-renderer__accordion-header-title{display:inline-flex;align-items:center;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.8125rem;line-height:1.25;color:rgb(var(--ax-sys-color-on-surface));gap:.4rem}.axm-assist-renderer .axm-assist-renderer__header-trailing{display:inline-flex;flex-shrink:0;align-items:center;gap:.35rem}.axm-assist-renderer .axm-assist-renderer__delegated-agent-detail-link{text-decoration-line:underline;padding:.25rem;padding-top:0}.axm-assist-renderer .axm-assist-renderer__badge{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden;border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem);padding:.1875rem .65rem;font-size:.6875rem;line-height:1.3;letter-spacing:.03em}.axm-assist-renderer .axm-assist-renderer__badge--warning{background:rgb(var(--ax-sys-color-warning-100))}.axm-assist-renderer .axm-assist-renderer__badge--primary{background:rgb(var(--ax-sys-color-primary-100))}.axm-assist-renderer .axm-assist-renderer__badge--success{background:rgb(var(--ax-sys-color-success-100))}.axm-assist-renderer .axm-assist-renderer__thinking-chevron{display:inline-block;flex-shrink:0;font-size:.65rem;opacity:.65;transition:transform .2s ease;line-height:1}.axm-assist-renderer .axm-assist-renderer__thinking-chevron--expanded{transform:rotate(180deg)}.axm-assist-renderer .axm-assist-renderer__thinking-body{padding:.625rem .75rem .75rem;font-size:.78rem;color:rgb(var(--ax-sys-color-neutral-700));word-break:break-word;line-height:1.55}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content{font-size:inherit;color:inherit;line-height:inherit}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content :is(p,ul,ol){margin-block:.35rem}.axm-assist-renderer .axm-assist-renderer__thinking-body.axm-assist-renderer__markdown .axp-markdown-viewer__content li{line-height:inherit}.axm-assist-renderer .axm-assist-renderer__tools{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axm-assist-renderer .axm-assist-renderer__tool-row{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);padding:.5rem .65rem;border-radius:.625rem;background:rgb(var(--ax-sys-color-lighter-surface));border:1px solid rgb(var(--ax-sys-color-border-lighter-surface))}.axm-assist-renderer .axm-assist-renderer__tool-row-main{display:flex;min-width:0px;align-items:center;gap:.45rem}.axm-assist-renderer .axm-assist-renderer__tool-row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:rgb(var(--ax-sys-color-on-surface))}.axm-assist-renderer .axm-assist-renderer__tool-model-label{flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);max-width:9rem;letter-spacing:.01em;color:rgb(var(--ax-sys-color-neutral-600));opacity:.78}.axm-assist-renderer .axm-assist-renderer__tool-card{border-radius:.625rem;overflow:hidden}.axm-assist-renderer .axm-assist-renderer__tool-body{display:flex;flex-direction:column;padding:.625rem .75rem .75rem;gap:.35rem}.axm-assist-renderer .axm-assist-renderer__tool-section-label{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;font-size:.625rem;letter-spacing:.06em;color:rgb(var(--ax-sys-color-neutral-700))}.axm-assist-renderer .axm-assist-renderer__tool-pre{margin:0;overflow:auto;border-radius:var(--radius-md, .375rem);max-block-size:10rem;background:rgb(var(--ax-sys-color-light-surface));padding:.5rem;font-family:var(--ax-font-mono, monospace);font-size:.675rem;line-height:1.45;word-break:break-word}.axm-assist-renderer .axm-assist-renderer__run-meta-wrap{margin-block-start:.45rem}.axm-assist-renderer .axm-assist-renderer__run-meta-header-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;line-height:1.35;color:rgb(var(--ax-sys-color-neutral-700));max-width:100%}.axm-assist-renderer .axm-assist-renderer__run-meta{display:flex;flex-direction:column;margin-block-start:.45rem;padding:.55rem .65rem .6rem;border-radius:.625rem;background:rgb(var(--ax-sys-color-lighter-surface));gap:.45rem}.axm-assist-renderer .axm-assist-renderer__run-meta--panel{margin-block-start:0;padding:.45rem .5rem .55rem;background:transparent;border-radius:0}.axm-assist-renderer .axm-assist-renderer__run-meta-grid{display:flex;gap:.4rem}.axm-assist-renderer .axm-assist-renderer__meta-tile{min-width:0px;padding:.4rem .5rem .45rem;border-radius:.45rem;background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__meta-tile--wide{grid-column:1/-1}.axm-assist-renderer .axm-assist-renderer__meta-tile--accent{background:rgb(var(--ax-sys-color-primary-50))}.axm-assist-renderer .axm-assist-renderer__meta-tile-label{--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);text-transform:uppercase;font-size:.6rem;letter-spacing:.06em;color:rgb(var(--ax-sys-color-neutral-700));margin-block-end:.2rem}.axm-assist-renderer .axm-assist-renderer__meta-tile-value{--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.78rem;line-height:1.35;color:rgb(var(--ax-sys-color-on-surface));word-break:break-word}.axm-assist-renderer .axm-assist-renderer__meta-tile-value--mono{font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\" 1}.axm-assist-renderer .axm-assist-renderer__meta-tile-sub{margin-block-start:.15rem;font-size:.65rem;line-height:1.3;color:rgb(var(--ax-sys-color-neutral-700));font-family:var(--ax-font-mono, ui-monospace, monospace);word-break:break-all}.axm-assist-renderer .axm-assist-renderer__meta-tile-note{display:inline;--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);margin-inline-start:.2rem;font-size:.65rem;color:rgb(var(--ax-sys-color-success-700))}.axm-assist-renderer .axm-assist-renderer__tool-editor-wrap{overflow:hidden;border-radius:var(--radius-md, .375rem);background:rgb(var(--ax-sys-color-light-surface))}.axm-assist-renderer .axm-assist-renderer__waiting{display:flex;gap:.25rem;padding:.25rem 0}.axm-assist-renderer .axm-assist-renderer__dot{inline-size:6px;block-size:6px;border-radius:50%;background:rgb(var(--ax-sys-color-neutral-500));animation:axm-blink 1.2s ease-in-out infinite}.axm-assist-renderer .axm-assist-renderer__dot:nth-child(2){animation-delay:.2s}.axm-assist-renderer .axm-assist-renderer__dot:nth-child(3){animation-delay:.4s}.axm-assist-renderer .axm-assist-renderer__agent-live-block{display:flex;flex-direction:column;border-radius:.75rem;background:rgb(var(--ax-sys-color-lighter-surface));padding:.75rem .875rem;gap:.65rem;max-inline-size:min(42rem,100%)}.axm-assist-renderer .axm-assist-renderer__agent-live-block--in-accordion{background:rgb(var(--ax-sys-color-light-surface));border-radius:.5rem;padding:.5rem .55rem .55rem;max-inline-size:none}.axm-assist-renderer .axm-assist-renderer__agent-live-header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axm-assist-renderer .axm-assist-renderer__agent-live-title{flex:1;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);font-size:.8125rem;color:rgb(var(--ax-sys-color-on-surface));min-inline-size:0}.axm-assist-renderer .axm-assist-renderer__agent-live-prompt{align-self:flex-end;font-size:.8125rem;line-height:1.55;word-break:break-word;padding:.5rem .75rem;border-radius:1.25rem;background:rgb(var(--ax-sys-color-lightest-surface));max-inline-size:min(92%,36rem)}.axm-assist-renderer .axm-assist-renderer__agent-live-stream{font-size:.8125rem;line-height:1.55;white-space:pre-line;word-break:break-word;padding-block-start:.15rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-tools{display:flex;flex-direction:column;gap:.35rem;padding-block-start:.35rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-row{display:flex;align-items:center;gap:.45rem;font-size:.72rem}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-name{flex:1;overflow:hidden;text-overflow:ellipsis;font-family:var(--ax-font-mono, monospace);font-size:.7rem;min-inline-size:0}.axm-assist-renderer .axm-assist-renderer__agent-live-nested-status{flex-shrink:0;color:rgb(var(--ax-sys-color-neutral-600))}.axm-assist-renderer .axm-assist-renderer__retry-alert-body{display:flex;align-items:flex-start;gap:.75rem}.axm-assist-renderer .axm-assist-renderer__retry-alert-text{display:flex;flex:1;flex-direction:column;min-inline-size:0;gap:.3rem}.axm-assist-renderer .axm-assist-renderer__retry-description{margin:0;font-size:.8125rem;line-height:1.5;opacity:.92}.axm-assist-renderer .axm-assist-renderer__retry-error-detail{margin:.15rem 0 0;font-size:.75rem;line-height:1.45;font-family:var(--ax-font-mono, ui-monospace, monospace);word-break:break-word;opacity:.88}.axm-assist-renderer .axm-assist-renderer__retry-action{flex-shrink:0;align-self:center}.axm-assist-bot,.axm-assist-bot .axm-assist-bot__final-line{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axm-assist-bot .axm-assist-bot__segment{unicode-bidi:isolate;font-size:.95rem;line-height:1.8;letter-spacing:.002em;color:rgb(var(--ax-sys-color-on-surface));text-wrap:pretty}.axm-assist-bot .axm-assist-bot__segment:has(axm-chat-user-form-renderer){inline-size:100%;max-inline-size:100%}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer{display:block}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer :is(p,ul,ol){margin-block:.45rem}.axm-assist-bot .axm-assist-bot__segment ax-conversation-text-renderer li{line-height:1.8}.axm-assist-bot .axm-assist-bot__line--user{align-self:flex-end}.axm-assist-bot .axm-assist-bot__line--tool-role{align-self:stretch}.axm-assist-bot .axm-assist-bot__tool-result{border-radius:var(--radius-lg, .5rem);background:rgb(var(--ax-sys-color-lighter-surface));padding:.5rem .75rem}.axm-assist-bot .axm-assist-bot__fallback{font-size:.88rem;line-height:1.75;word-break:break-word;opacity:.9}@keyframes axm-blink{0%{opacity:1}50%{opacity:0}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n", "@layer properties;.axm-delegated-transcript{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3);min-inline-size:0}.axm-delegated-transcript .axm-delegated-transcript__empty{margin:0;border-radius:var(--radius-lg, .5rem);padding:calc(var(--spacing, .25rem) * 6);text-align:center;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgb(var(--ax-sys-color-neutral-600));background:rgb(var(--ax-sys-color-lighter-surface))}.axm-delegated-transcript .axm-delegated-transcript__lines{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);overflow-y:auto;padding:calc(var(--spacing, .25rem) * 4);max-block-size:min(75vh,42rem)}.axm-delegated-transcript .axm-delegated-transcript__line-collapse{display:flex;flex-direction:column;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-lighter-surface));padding:.35rem .65rem .65rem}.axm-delegated-transcript .axm-delegated-transcript__line-collapse--user{background:rgb(var(--ax-sys-color-primary-500))}@supports (color: color-mix(in lab,red,red)){.axm-delegated-transcript .axm-delegated-transcript__line-collapse--user{background:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 5%,rgb(var(--ax-sys-color-lighter-surface)))}}.axm-delegated-transcript .axm-delegated-transcript__line-collapse--assistant{background:rgb(var(--ax-sys-color-lightest-surface))}.axm-delegated-transcript .axm-delegated-transcript__line-summary{display:flex;cursor:pointer;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);padding:.35rem .15rem;list-style:none}.axm-delegated-transcript .axm-delegated-transcript__line-summary::-webkit-details-marker{display:none}.axm-delegated-transcript .axm-delegated-transcript__line-summary:before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease}.axm-delegated-transcript .axm-delegated-transcript__line-collapse[open]>.axm-delegated-transcript__line-summary:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__line{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2.5);padding:.75rem .85rem;border-radius:.75rem;border:1px solid rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-lighter-surface))}.axm-delegated-transcript .axm-delegated-transcript__line--user{background:rgb(var(--ax-sys-color-primary-500))}@supports (color: color-mix(in lab,red,red)){.axm-delegated-transcript .axm-delegated-transcript__line--user{background:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 5%,rgb(var(--ax-sys-color-lighter-surface)))}}.axm-delegated-transcript .axm-delegated-transcript__line--assistant{background:rgb(var(--ax-sys-color-lightest-surface))}.axm-delegated-transcript .axm-delegated-transcript__role{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axm-delegated-transcript .axm-delegated-transcript__role-pill{display:inline-flex;align-items:center;border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;padding:.2rem .55rem;font-size:.625rem;letter-spacing:.05em;color:rgb(var(--ax-sys-color-on-primary-light-surface));background:rgb(var(--ax-sys-color-primary-100))}.axm-delegated-transcript .axm-delegated-transcript__reflection-badge{border-radius:calc(infinity * 1px);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);padding:.125rem .45rem;font-size:.625rem;color:rgb(var(--ax-sys-color-on-warning-light-surface));background:rgb(var(--ax-sys-color-warning-100))}.axm-delegated-transcript .axm-delegated-transcript__name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:rgb(var(--ax-sys-color-neutral-600))}.axm-delegated-transcript .axm-delegated-transcript__segments{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding-inline-start:.35rem}.axm-delegated-transcript .axm-delegated-transcript__section-collapse,.axm-delegated-transcript .axm-delegated-transcript__tool-collapse{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.35rem .5rem}.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header{display:flex;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 2);list-style:none;padding:.2rem .15rem}:is(.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header)::-webkit-details-marker{display:none}:is(.axm-delegated-transcript .axm-delegated-transcript__section-summary,.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header):before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.5625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease;flex-shrink:0}.axm-delegated-transcript .axm-delegated-transcript__section-collapse[open]>.axm-delegated-transcript__section-summary:before,.axm-delegated-transcript .axm-delegated-transcript__tool-collapse[open]>.axm-delegated-transcript__tool-panel-header:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__section-summary{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-neutral-700))}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding-block-start:.35rem;padding-inline-start:.5rem}.axm-delegated-transcript .axm-delegated-transcript__widget-embed{inline-size:100%;max-inline-size:100%;min-block-size:0}.axm-delegated-transcript .axm-delegated-transcript__think{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.35rem .5rem}.axm-delegated-transcript .axm-delegated-transcript__think-summary{display:flex;cursor:pointer;align-items:center;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);gap:.35rem;font-size:.8125rem;color:rgb(var(--ax-sys-color-on-surface));list-style:none}.axm-delegated-transcript .axm-delegated-transcript__think-summary::-webkit-details-marker{display:none}.axm-delegated-transcript .axm-delegated-transcript__think-summary:before{content:\"\\f054\";font-family:\"Font Awesome 6 Pro\",\"Font Awesome 6 Free\",sans-serif;font-weight:300;font-size:.5625rem;color:rgb(var(--ax-sys-color-neutral-500));transition:transform .15s ease}.axm-delegated-transcript .axm-delegated-transcript__think[open]>.axm-delegated-transcript__think-summary:before{transform:rotate(90deg)}.axm-delegated-transcript .axm-delegated-transcript__tool-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgb(var(--ax-sys-color-border-lighter-surface));background:rgb(var(--ax-sys-color-light-surface));padding:.65rem .75rem}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-header{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axm-delegated-transcript .axm-delegated-transcript__tool-panel-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgb(var(--ax-sys-color-on-surface))}.axm-delegated-transcript .axm-delegated-transcript__prompt{border-radius:var(--radius-md, .375rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));padding:.5rem .6rem;background:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-surface));white-space:pre-wrap;word-break:break-word}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
406
+ }], propDecorators: { messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], embedParent: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedParent", required: true }] }], emptyHint: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyHint", required: false }] }], agentTitleById: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentTitleById", required: false }] }] } });
407
+
408
+ //#region ---- Imports ----
409
+ //#endregion
410
+ //#region ---- Component ----
411
+ class AXMAssistDelegatedAgentDetailPopupComponent extends AXBasePageComponent {
412
+ constructor() {
413
+ super(...arguments);
414
+ /** Set by {@link AXPopupService} from `data`. */
415
+ this.delegationCallId = '';
416
+ this.messages = [];
417
+ this.agentTitleById = {};
418
+ this.embedParent = axmDelegatedTranscriptEmbedParentStub();
419
+ }
420
+ downloadJson() {
421
+ axmDownloadDelegatedAgentDetailJson(this.delegationCallId, this.messages, this.runInput, this.agentName);
422
+ }
423
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentDetailPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
424
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMAssistDelegatedAgentDetailPopupComponent, isStandalone: true, selector: "axm-assist-delegated-agent-detail-popup", usesInheritance: true, ngImport: i0, template: `
425
+ <div class="axm-assist-delegated-detail-popup">
426
+ <axm-assist-delegated-agent-transcript-view
427
+ [messages]="messages"
428
+ [embedParent]="embedParent"
429
+ [emptyHint]="emptyHint"
430
+ [agentTitleById]="agentTitleById"
431
+ />
432
+ <ax-footer>
433
+ <ax-suffix>
434
+ <ax-button
435
+ look="outline"
436
+ color="primary"
437
+ icon="fa-light fa-download"
438
+ [text]="'@conversation:chat.assist-renderer.delegated-agent.download-json' | translate | async"
439
+ [disabled]="!messages.length"
440
+ (onClick)="downloadJson()"
441
+ ></ax-button>
442
+ <ax-button
443
+ look="solid"
444
+ color="primary"
445
+ [text]="'@general:actions.close.title' | translate | async"
446
+ (onClick)="close()"
447
+ ></ax-button>
448
+ </ax-suffix>
449
+ </ax-footer>
450
+ </div>
451
+ `, isInline: true, styles: [".axm-assist-delegated-detail-popup{display:flex;flex-direction:column;gap:1rem;min-block-size:0}.axm-assist-delegated-detail-popup ax-footer ax-suffix{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "component", type: AXMAssistDelegatedAgentTranscriptViewComponent, selector: "axm-assist-delegated-agent-transcript-view", inputs: ["messages", "embedParent", "emptyHint", "agentTitleById"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
452
+ }
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAssistDelegatedAgentDetailPopupComponent, decorators: [{
454
+ type: Component,
455
+ args: [{ selector: 'axm-assist-delegated-agent-detail-popup', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
456
+ AXMAssistDelegatedAgentTranscriptViewComponent,
457
+ AXButtonModule,
458
+ AXTranslationModule,
459
+ AsyncPipe,
460
+ AXDecoratorModule,
461
+ ], template: `
462
+ <div class="axm-assist-delegated-detail-popup">
463
+ <axm-assist-delegated-agent-transcript-view
464
+ [messages]="messages"
465
+ [embedParent]="embedParent"
466
+ [emptyHint]="emptyHint"
467
+ [agentTitleById]="agentTitleById"
468
+ />
469
+ <ax-footer>
470
+ <ax-suffix>
471
+ <ax-button
472
+ look="outline"
473
+ color="primary"
474
+ icon="fa-light fa-download"
475
+ [text]="'@conversation:chat.assist-renderer.delegated-agent.download-json' | translate | async"
476
+ [disabled]="!messages.length"
477
+ (onClick)="downloadJson()"
478
+ ></ax-button>
479
+ <ax-button
480
+ look="solid"
481
+ color="primary"
482
+ [text]="'@general:actions.close.title' | translate | async"
483
+ (onClick)="close()"
484
+ ></ax-button>
485
+ </ax-suffix>
486
+ </ax-footer>
487
+ </div>
488
+ `, styles: [".axm-assist-delegated-detail-popup{display:flex;flex-direction:column;gap:1rem;min-block-size:0}.axm-assist-delegated-detail-popup ax-footer ax-suffix{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}\n"] }]
489
+ }] });
490
+
491
+ export { AXMAssistDelegatedAgentDetailPopupComponent };
492
+ //# sourceMappingURL=acorex-platform-module-conversation-client-assist-delegated-agent-detail-popup.component-BfjJCQ-e.mjs.map