@memberjunction/ng-core-entity-forms 5.22.0 → 5.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +4 -5
  2. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +55 -59
  4. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +0 -1
  6. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +4 -5
  8. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +54 -71
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1053 -1096
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +2 -3
  15. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +39 -82
  17. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +4 -5
  19. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +28 -31
  21. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +4 -5
  23. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +15 -14
  25. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +4 -7
  27. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +77 -124
  29. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +2 -2
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +10 -11
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  34. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +4 -5
  35. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +18 -18
  37. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +4 -5
  39. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +59 -80
  41. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  42. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +4 -5
  43. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +23 -24
  45. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  47. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +862 -906
  48. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  49. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +4 -5
  50. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  51. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +448 -499
  52. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  53. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +2 -2
  54. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  55. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +6 -11
  56. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  57. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +4 -5
  58. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  59. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +16 -15
  60. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  61. package/dist/lib/custom/Actions/action-execution-log-form.component.js +160 -166
  62. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  63. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  64. package/dist/lib/custom/Actions/action-form.component.js +93 -94
  65. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  66. package/dist/lib/custom/Entities/entity-form.component.js +2 -2
  67. package/dist/lib/custom/Lists/list-form.component.js +61 -63
  68. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  69. package/dist/lib/custom/Queries/query-category-dialog.component.js +33 -59
  70. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  71. package/dist/lib/custom/Queries/query-form.component.js +354 -360
  72. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  73. package/dist/lib/custom/Queries/query-run-dialog.component.js +62 -71
  74. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  75. package/dist/lib/custom/Templates/template-param-dialog.component.js +128 -124
  76. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  77. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +45 -22
  78. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Templates/template-params-grid.component.js +380 -384
  80. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  81. package/dist/lib/custom/Templates/templates-form.component.js +34 -36
  82. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  83. package/dist/lib/custom/Tests/test-form.component.js +8 -9
  84. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  85. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +4 -4
  86. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  87. package/dist/lib/custom/Tests/test-run-form.component.js +7 -7
  88. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/test-suite-form.component.js +6 -7
  90. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  91. package/dist/lib/custom/Tests/test-suite-run-form.component.js +6 -7
  92. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  93. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +381 -409
  94. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  95. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +1 -1
  97. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  98. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  99. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +74 -63
  100. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  101. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +10 -10
  102. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  103. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  104. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +352 -332
  105. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.d.ts +22 -27
  107. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  108. package/dist/lib/custom/custom-forms.module.js +51 -81
  109. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  110. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +4 -5
  111. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  112. package/dist/lib/custom/shared/entity-selector-dialog.component.js +59 -66
  113. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  115. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +176 -156
  116. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  117. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts +10 -0
  118. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts.map +1 -0
  119. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js +65 -0
  120. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js.map +1 -0
  121. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts +10 -0
  122. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts.map +1 -0
  123. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +89 -0
  124. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -0
  125. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +80 -44
  127. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js +11 -8
  129. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +39 -24
  132. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +35 -17
  135. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +15 -13
  137. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  139. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +7 -9
  140. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
  142. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +21 -9
  143. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +41 -5
  146. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
  147. package/dist/lib/generated/generated-forms.module.d.ts +280 -279
  148. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  149. package/dist/lib/generated/generated-forms.module.js +102 -142
  150. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  151. package/dist/lib/shared/components/template-editor.component.js +14 -15
  152. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  153. package/package.json +34 -41
@@ -21,13 +21,14 @@ import { ApplicationManager } from '@memberjunction/ng-base-application';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "@angular/common";
23
23
  import * as i2 from "@angular/forms";
24
- import * as i3 from "@progress/kendo-angular-layout";
24
+ import * as i3 from "@memberjunction/ng-ui-components";
25
25
  import * as i4 from "@memberjunction/ng-code-editor";
26
26
  import * as i5 from "@memberjunction/ng-deep-diff";
27
- import * as i6 from "./ai-agent-run-timeline.component";
28
- import * as i7 from "./ai-agent-run-analytics.component";
29
- import * as i8 from "./ai-agent-run-visualization.component";
30
- import * as i9 from "./ai-agent-run-step-detail.component";
27
+ import * as i6 from "angular-split";
28
+ import * as i7 from "./ai-agent-run-timeline.component";
29
+ import * as i8 from "./ai-agent-run-analytics.component";
30
+ import * as i9 from "./ai-agent-run-visualization.component";
31
+ import * as i10 from "./ai-agent-run-step-detail.component";
31
32
  function MJAIAgentRunFormComponentExtended_Conditional_6_Template(rf, ctx) { if (rf & 1) {
32
33
  i0.ɵɵelement(0, "img", 8);
33
34
  } if (rf & 2) {
@@ -199,34 +200,42 @@ function MJAIAgentRunFormComponentExtended_Conditional_38_Template(rf, ctx) { if
199
200
  i0.ɵɵadvance(8);
200
201
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Configuration || "Unknown", " ");
201
202
  } }
203
+ function MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template(rf, ctx) { if (rf & 1) {
204
+ const _r7 = i0.ɵɵgetCurrentView();
205
+ i0.ɵɵelementStart(0, "as-split-area", 50)(1, "mj-ai-agent-run-step-detail", 52);
206
+ i0.ɵɵlistener("closePanel", function MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template_mj_ai_agent_run_step_detail_closePanel_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.closeJsonPanel()); })("navigateToActionLog", function MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template_mj_ai_agent_run_step_detail_navigateToActionLog_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.navigateToActionLog($event)); })("copyToClipboard", function MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template_mj_ai_agent_run_step_detail_copyToClipboard_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.copyToClipboard($event)); });
207
+ i0.ɵɵelementEnd()();
208
+ } if (rf & 2) {
209
+ const ctx_r0 = i0.ɵɵnextContext(2);
210
+ i0.ɵɵproperty("size", 45);
211
+ i0.ɵɵadvance();
212
+ i0.ɵɵproperty("selectedTimelineItem", ctx_r0.selectedTimelineItem);
213
+ } }
202
214
  function MJAIAgentRunFormComponentExtended_Conditional_53_Template(rf, ctx) { if (rf & 1) {
203
215
  const _r6 = i0.ɵɵgetCurrentView();
204
- i0.ɵɵelementStart(0, "div", 34)(1, "kendo-splitter", 49)(2, "kendo-splitter-pane", 50)(3, "mj-ai-agent-run-timeline", 51);
216
+ i0.ɵɵelementStart(0, "div", 34)(1, "as-split", 49)(2, "as-split-area", 50)(3, "mj-ai-agent-run-timeline", 51);
205
217
  i0.ɵɵlistener("itemSelected", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.selectTimelineItem($event)); })("navigateToEntity", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToEntityRecord($event)); })("agentRunCompleted", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_timeline_agentRunCompleted_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onAgentRunCompleted($event)); });
206
218
  i0.ɵɵelementEnd()();
207
- i0.ɵɵelementStart(4, "kendo-splitter-pane", 52)(5, "mj-ai-agent-run-step-detail", 53);
208
- i0.ɵɵlistener("closePanel", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeJsonPanel()); })("navigateToActionLog", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_step_detail_navigateToActionLog_5_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToActionLog($event)); })("copyToClipboard", function MJAIAgentRunFormComponentExtended_Conditional_53_Template_mj_ai_agent_run_step_detail_copyToClipboard_5_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard($event)); });
209
- i0.ɵɵelementEnd()()()();
219
+ i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template, 2, 2, "as-split-area", 50);
220
+ i0.ɵɵelementEnd()();
210
221
  } if (rf & 2) {
211
222
  const ctx_r0 = i0.ɵɵnextContext();
212
223
  i0.ɵɵadvance(2);
213
- i0.ɵɵproperty("min", "400px");
224
+ i0.ɵɵproperty("size", ctx_r0.selectedTimelineItem ? 55 : 100);
214
225
  i0.ɵɵadvance();
215
226
  i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper)("autoRefresh", ctx_r0.record.Status === "Running")("refreshInterval", 30000);
216
227
  i0.ɵɵadvance();
217
- i0.ɵɵproperty("size", "45%")("min", "300px")("collapsed", !ctx_r0.selectedTimelineItem);
218
- i0.ɵɵadvance();
219
- i0.ɵɵproperty("selectedTimelineItem", ctx_r0.selectedTimelineItem);
228
+ i0.ɵɵconditional(ctx_r0.selectedTimelineItem ? 4 : -1);
220
229
  } }
221
230
  function MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_1_Template(rf, ctx) { if (rf & 1) {
222
- i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 54, 0);
231
+ i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 53, 0);
223
232
  } if (rf & 2) {
224
233
  const ctx_r0 = i0.ɵɵnextContext(2);
225
234
  i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper);
226
235
  } }
227
236
  function MJAIAgentRunFormComponentExtended_Conditional_54_Template(rf, ctx) { if (rf & 1) {
228
237
  i0.ɵɵelementStart(0, "div", 34);
229
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_1_Template, 2, 2, "mj-ai-agent-run-visualization", 54);
238
+ i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_1_Template, 2, 2, "mj-ai-agent-run-visualization", 53);
230
239
  i0.ɵɵelementEnd();
231
240
  } if (rf & 2) {
232
241
  const ctx_r0 = i0.ɵɵnextContext();
@@ -234,489 +243,499 @@ function MJAIAgentRunFormComponentExtended_Conditional_54_Template(rf, ctx) { if
234
243
  i0.ɵɵconditional(ctx_r0.visualizationLoaded ? 1 : -1);
235
244
  } }
236
245
  function MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template(rf, ctx) { if (rf & 1) {
237
- i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 55, 1);
246
+ i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 54, 1);
238
247
  } if (rf & 2) {
239
248
  const ctx_r0 = i0.ɵɵnextContext(2);
240
249
  i0.ɵɵproperty("agentRunId", ctx_r0.record.ID);
241
250
  } }
242
251
  function MJAIAgentRunFormComponentExtended_Conditional_55_Template(rf, ctx) { if (rf & 1) {
243
252
  i0.ɵɵelementStart(0, "div", 34);
244
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template, 2, 1, "mj-ai-agent-run-analytics", 55);
253
+ i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template, 2, 1, "mj-ai-agent-run-analytics", 54);
245
254
  i0.ɵɵelementEnd();
246
255
  } if (rf & 2) {
247
256
  const ctx_r0 = i0.ɵɵnextContext();
248
257
  i0.ɵɵadvance();
249
258
  i0.ɵɵconditional(ctx_r0.analyticsLoaded ? 1 : -1);
250
259
  } }
251
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
252
- const _r8 = i0.ɵɵgetCurrentView();
260
+ function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_2_Template(rf, ctx) { if (rf & 1) {
261
+ i0.ɵɵelement(0, "i", 32);
262
+ i0.ɵɵtext(1, " General Information ");
263
+ } }
264
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template(rf, ctx) { if (rf & 1) {
265
+ const _r9 = i0.ɵɵgetCurrentView();
253
266
  i0.ɵɵelementStart(0, "a", 36);
254
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.ParentRunID)); });
267
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.ParentRunID)); });
255
268
  i0.ɵɵtext(1);
256
269
  i0.ɵɵelementEnd();
257
270
  } if (rf & 2) {
258
- const ctx_r0 = i0.ɵɵnextContext(3);
271
+ const ctx_r0 = i0.ɵɵnextContext(2);
259
272
  i0.ɵɵadvance();
260
273
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ParentRunID, " ");
261
274
  } }
262
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
275
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_15_Template(rf, ctx) { if (rf & 1) {
263
276
  i0.ɵɵelementStart(0, "span");
264
277
  i0.ɵɵtext(1, "None (Root)");
265
278
  i0.ɵɵelementEnd();
266
279
  } }
267
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
268
- const _r9 = i0.ɵɵgetCurrentView();
280
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Template(rf, ctx) { if (rf & 1) {
281
+ const _r10 = i0.ɵɵgetCurrentView();
269
282
  i0.ɵɵelementStart(0, "a", 36);
270
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_17_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.LastRunID)); });
283
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.LastRunID)); });
271
284
  i0.ɵɵtext(1);
272
285
  i0.ɵɵelementEnd();
273
286
  } if (rf & 2) {
274
- const ctx_r0 = i0.ɵɵnextContext(3);
287
+ const ctx_r0 = i0.ɵɵnextContext(2);
275
288
  i0.ɵɵadvance();
276
289
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.LastRunID, " ");
277
290
  } }
278
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_18_Template(rf, ctx) { if (rf & 1) {
291
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_21_Template(rf, ctx) { if (rf & 1) {
279
292
  i0.ɵɵelementStart(0, "span");
280
293
  i0.ɵɵtext(1, "None");
281
294
  i0.ɵɵelementEnd();
282
295
  } }
283
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_23_Template(rf, ctx) { if (rf & 1) {
284
- const _r10 = i0.ɵɵgetCurrentView();
296
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Template(rf, ctx) { if (rf & 1) {
297
+ const _r11 = i0.ɵɵgetCurrentView();
285
298
  i0.ɵɵelementStart(0, "a", 36);
286
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Conversations", ctx_r0.record.ConversationID)); });
299
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Conversations", ctx_r0.record.ConversationID)); });
287
300
  i0.ɵɵtext(1);
288
301
  i0.ɵɵelementEnd();
289
302
  } if (rf & 2) {
290
- const ctx_r0 = i0.ɵɵnextContext(3);
303
+ const ctx_r0 = i0.ɵɵnextContext(2);
291
304
  i0.ɵɵadvance();
292
305
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ConversationID, " ");
293
306
  } }
294
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_24_Template(rf, ctx) { if (rf & 1) {
307
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_27_Template(rf, ctx) { if (rf & 1) {
295
308
  i0.ɵɵelementStart(0, "span");
296
309
  i0.ɵɵtext(1, "N/A");
297
310
  i0.ɵɵelementEnd();
298
311
  } }
299
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_29_Template(rf, ctx) { if (rf & 1) {
300
- const _r11 = i0.ɵɵgetCurrentView();
312
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Template(rf, ctx) { if (rf & 1) {
313
+ const _r12 = i0.ɵɵgetCurrentView();
301
314
  i0.ɵɵelementStart(0, "a", 36);
302
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Users", ctx_r0.record.UserID)); });
315
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Users", ctx_r0.record.UserID)); });
303
316
  i0.ɵɵtext(1);
304
317
  i0.ɵɵelementEnd();
305
318
  } if (rf & 2) {
306
- const ctx_r0 = i0.ɵɵnextContext(3);
319
+ const ctx_r0 = i0.ɵɵnextContext(2);
307
320
  i0.ɵɵadvance();
308
321
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.User || "N/A", " ");
309
322
  } }
310
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_30_Template(rf, ctx) { if (rf & 1) {
323
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_33_Template(rf, ctx) { if (rf & 1) {
311
324
  i0.ɵɵelementStart(0, "span");
312
325
  i0.ɵɵtext(1, "N/A");
313
326
  i0.ɵɵelementEnd();
314
327
  } }
315
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Template(rf, ctx) { if (rf & 1) {
316
- const _r7 = i0.ɵɵgetCurrentView();
317
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68)(2, "label");
318
- i0.ɵɵtext(3, "Agent");
319
- i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(4, "span")(5, "a", 36);
321
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agents", ctx_r0.record.AgentID)); });
322
- i0.ɵɵtext(6);
323
- i0.ɵɵelementEnd()()();
324
- i0.ɵɵelementStart(7, "div", 68)(8, "label");
325
- i0.ɵɵtext(9, "Parent Run ID");
326
- i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(10, "span");
328
- i0.ɵɵconditionalCreate(11, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_11_Template, 2, 1, "a", 69);
329
- i0.ɵɵconditionalCreate(12, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_12_Template, 2, 0, "span");
330
- i0.ɵɵelementEnd()();
331
- i0.ɵɵelementStart(13, "div", 68)(14, "label");
332
- i0.ɵɵtext(15, "Last Run ID");
333
- i0.ɵɵelementEnd();
334
- i0.ɵɵelementStart(16, "span");
335
- i0.ɵɵconditionalCreate(17, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_17_Template, 2, 1, "a", 69);
336
- i0.ɵɵconditionalCreate(18, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_18_Template, 2, 0, "span");
337
- i0.ɵɵelementEnd()();
338
- i0.ɵɵelementStart(19, "div", 68)(20, "label");
339
- i0.ɵɵtext(21, "Conversation ID");
340
- i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(22, "span");
342
- i0.ɵɵconditionalCreate(23, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_23_Template, 2, 1, "a", 69);
343
- i0.ɵɵconditionalCreate(24, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_24_Template, 2, 0, "span");
344
- i0.ɵɵelementEnd()();
345
- i0.ɵɵelementStart(25, "div", 68)(26, "label");
346
- i0.ɵɵtext(27, "User");
347
- i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(28, "span");
349
- i0.ɵɵconditionalCreate(29, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_29_Template, 2, 1, "a", 69);
350
- i0.ɵɵconditionalCreate(30, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Conditional_30_Template, 2, 0, "span");
351
- i0.ɵɵelementEnd()()();
352
- } if (rf & 2) {
353
- const ctx_r0 = i0.ɵɵnextContext(2);
354
- i0.ɵɵadvance(6);
355
- i0.ɵɵtextInterpolate1(" ", (ctx_r0.agent == null ? null : ctx_r0.agent.Name) || "N/A", " ");
356
- i0.ɵɵadvance(5);
357
- i0.ɵɵconditional(ctx_r0.record.ParentRunID ? 11 : -1);
358
- i0.ɵɵadvance();
359
- i0.ɵɵconditional(!ctx_r0.record.ParentRunID ? 12 : -1);
360
- i0.ɵɵadvance(5);
361
- i0.ɵɵconditional(ctx_r0.record.LastRunID ? 17 : -1);
362
- i0.ɵɵadvance();
363
- i0.ɵɵconditional(!ctx_r0.record.LastRunID ? 18 : -1);
364
- i0.ɵɵadvance(5);
365
- i0.ɵɵconditional(ctx_r0.record.ConversationID ? 23 : -1);
366
- i0.ɵɵadvance();
367
- i0.ɵɵconditional(!ctx_r0.record.ConversationID ? 24 : -1);
368
- i0.ɵɵadvance(5);
369
- i0.ɵɵconditional(ctx_r0.record.UserID ? 29 : -1);
370
- i0.ɵɵadvance();
371
- i0.ɵɵconditional(!ctx_r0.record.UserID ? 30 : -1);
328
+ function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_35_Template(rf, ctx) { if (rf & 1) {
329
+ i0.ɵɵelement(0, "i", 63);
330
+ i0.ɵɵtext(1, " Execution Settings ");
372
331
  } }
373
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
374
- const _r12 = i0.ɵɵgetCurrentView();
332
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Template(rf, ctx) { if (rf & 1) {
333
+ const _r13 = i0.ɵɵgetCurrentView();
375
334
  i0.ɵɵelementStart(0, "a", 36);
376
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Models", ctx_r0.record.OverrideModelID)); });
335
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Models", ctx_r0.record.OverrideModelID)); });
377
336
  i0.ɵɵtext(1);
378
337
  i0.ɵɵelementEnd();
379
338
  } if (rf & 2) {
380
- const ctx_r0 = i0.ɵɵnextContext(3);
339
+ const ctx_r0 = i0.ɵɵnextContext(2);
381
340
  i0.ɵɵadvance();
382
341
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideModel || "N/A", " ");
383
342
  } }
384
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
343
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_42_Template(rf, ctx) { if (rf & 1) {
385
344
  i0.ɵɵelementStart(0, "span");
386
345
  i0.ɵɵtext(1, "N/A");
387
346
  i0.ɵɵelementEnd();
388
347
  } }
389
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_11_Template(rf, ctx) { if (rf & 1) {
390
- const _r13 = i0.ɵɵgetCurrentView();
348
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Template(rf, ctx) { if (rf & 1) {
349
+ const _r14 = i0.ɵɵgetCurrentView();
391
350
  i0.ɵɵelementStart(0, "a", 36);
392
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Vendors", ctx_r0.record.OverrideVendorID)); });
351
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Vendors", ctx_r0.record.OverrideVendorID)); });
393
352
  i0.ɵɵtext(1);
394
353
  i0.ɵɵelementEnd();
395
354
  } if (rf & 2) {
396
- const ctx_r0 = i0.ɵɵnextContext(3);
355
+ const ctx_r0 = i0.ɵɵnextContext(2);
397
356
  i0.ɵɵadvance();
398
357
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideVendor || "N/A", " ");
399
358
  } }
400
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
359
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_48_Template(rf, ctx) { if (rf & 1) {
401
360
  i0.ɵɵelementStart(0, "span");
402
361
  i0.ɵɵtext(1, "N/A");
403
362
  i0.ɵɵelementEnd();
404
363
  } }
405
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Template(rf, ctx) { if (rf & 1) {
406
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68)(2, "label");
407
- i0.ɵɵtext(3, "Override Model");
408
- i0.ɵɵelementEnd();
409
- i0.ɵɵelementStart(4, "span");
410
- i0.ɵɵconditionalCreate(5, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_5_Template, 2, 1, "a", 69);
411
- i0.ɵɵconditionalCreate(6, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_6_Template, 2, 0, "span");
412
- i0.ɵɵelementEnd()();
413
- i0.ɵɵelementStart(7, "div", 68)(8, "label");
414
- i0.ɵɵtext(9, "Override Vendor");
415
- i0.ɵɵelementEnd();
416
- i0.ɵɵelementStart(10, "span");
417
- i0.ɵɵconditionalCreate(11, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_11_Template, 2, 1, "a", 69);
418
- i0.ɵɵconditionalCreate(12, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Conditional_12_Template, 2, 0, "span");
419
- i0.ɵɵelementEnd()();
420
- i0.ɵɵelementStart(13, "div", 68)(14, "label");
421
- i0.ɵɵtext(15, "Verbose Logging");
422
- i0.ɵɵelementEnd();
423
- i0.ɵɵelementStart(16, "span");
424
- i0.ɵɵtext(17);
425
- i0.ɵɵelementEnd()()();
426
- } if (rf & 2) {
427
- const ctx_r0 = i0.ɵɵnextContext(2);
428
- i0.ɵɵadvance(5);
429
- i0.ɵɵconditional(ctx_r0.record.OverrideModelID ? 5 : -1);
430
- i0.ɵɵadvance();
431
- i0.ɵɵconditional(!ctx_r0.record.OverrideModelID ? 6 : -1);
432
- i0.ɵɵadvance(5);
433
- i0.ɵɵconditional(ctx_r0.record.OverrideVendorID ? 11 : -1);
434
- i0.ɵɵadvance();
435
- i0.ɵɵconditional(!ctx_r0.record.OverrideVendorID ? 12 : -1);
436
- i0.ɵɵadvance(5);
437
- i0.ɵɵtextInterpolate(ctx_r0.record.Verbose ? "Yes" : "No");
364
+ function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_55_Template(rf, ctx) { if (rf & 1) {
365
+ i0.ɵɵelement(0, "i", 64);
366
+ i0.ɵɵtext(1, " Execution Status ");
438
367
  } }
439
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
368
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_65_Template(rf, ctx) { if (rf & 1) {
440
369
  i0.ɵɵelementStart(0, "span");
441
370
  i0.ɵɵtext(1, "In Progress");
442
371
  i0.ɵɵelementEnd();
443
372
  } }
444
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
445
- i0.ɵɵelementStart(0, "span", 70);
373
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_66_Template(rf, ctx) { if (rf & 1) {
374
+ i0.ɵɵelementStart(0, "span", 60);
446
375
  i0.ɵɵtext(1, "Yes");
447
376
  i0.ɵɵelementEnd();
448
377
  } }
449
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelementStart(0, "span", 71);
378
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_67_Template(rf, ctx) { if (rf & 1) {
379
+ i0.ɵɵelementStart(0, "span", 61);
451
380
  i0.ɵɵtext(1, "No");
452
381
  i0.ɵɵelementEnd();
453
382
  } }
454
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_12_Template(rf, ctx) { if (rf & 1) {
455
- i0.ɵɵelementStart(0, "div", 72)(1, "label");
383
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_68_Template(rf, ctx) { if (rf & 1) {
384
+ i0.ɵɵelementStart(0, "div", 62)(1, "label");
456
385
  i0.ɵɵtext(2, "Message");
457
386
  i0.ɵɵelementEnd();
458
- i0.ɵɵelementStart(3, "div", 73);
387
+ i0.ɵɵelementStart(3, "div", 65);
459
388
  i0.ɵɵtext(4);
460
389
  i0.ɵɵelementEnd()();
461
390
  } if (rf & 2) {
462
- const ctx_r0 = i0.ɵɵnextContext(3);
391
+ const ctx_r0 = i0.ɵɵnextContext(2);
463
392
  i0.ɵɵadvance(4);
464
393
  i0.ɵɵtextInterpolate(ctx_r0.record.Message);
465
394
  } }
466
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_13_Template(rf, ctx) { if (rf & 1) {
467
- i0.ɵɵelementStart(0, "div", 72)(1, "label");
395
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_69_Template(rf, ctx) { if (rf & 1) {
396
+ i0.ɵɵelementStart(0, "div", 62)(1, "label");
468
397
  i0.ɵɵtext(2, "Error Message");
469
398
  i0.ɵɵelementEnd();
470
- i0.ɵɵelementStart(3, "div", 71);
399
+ i0.ɵɵelementStart(3, "div", 61);
471
400
  i0.ɵɵtext(4);
472
401
  i0.ɵɵelementEnd()();
473
402
  } if (rf & 2) {
474
- const ctx_r0 = i0.ɵɵnextContext(3);
403
+ const ctx_r0 = i0.ɵɵnextContext(2);
475
404
  i0.ɵɵadvance(4);
476
405
  i0.ɵɵtextInterpolate(ctx_r0.record.ErrorMessage);
477
406
  } }
478
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68)(2, "label");
480
- i0.ɵɵtext(3, "Status");
481
- i0.ɵɵelementEnd();
482
- i0.ɵɵelementStart(4, "span", 18);
483
- i0.ɵɵtext(5);
484
- i0.ɵɵelementEnd()();
485
- i0.ɵɵelementStart(6, "div", 68)(7, "label");
486
- i0.ɵɵtext(8, "Success");
487
- i0.ɵɵelementEnd();
488
- i0.ɵɵconditionalCreate(9, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_9_Template, 2, 0, "span")(10, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_10_Template, 2, 0, "span", 70)(11, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_11_Template, 2, 0, "span", 71);
489
- i0.ɵɵelementEnd();
490
- i0.ɵɵconditionalCreate(12, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_12_Template, 5, 1, "div", 72);
491
- i0.ɵɵconditionalCreate(13, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Conditional_13_Template, 5, 1, "div", 72);
492
- i0.ɵɵelementEnd();
493
- } if (rf & 2) {
494
- const ctx_r0 = i0.ɵɵnextContext(2);
495
- i0.ɵɵadvance(4);
496
- i0.ɵɵattribute("data-status", ctx_r0.record.Status);
497
- i0.ɵɵadvance();
498
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Status, " ");
499
- i0.ɵɵadvance(4);
500
- i0.ɵɵconditional(ctx_r0.record.Success === null ? 9 : ctx_r0.record.Success ? 10 : 11);
501
- i0.ɵɵadvance(3);
502
- i0.ɵɵconditional(ctx_r0.record.Message ? 12 : -1);
503
- i0.ɵɵadvance();
504
- i0.ɵɵconditional(ctx_r0.record.ErrorMessage ? 13 : -1);
407
+ function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_71_Template(rf, ctx) { if (rf & 1) {
408
+ i0.ɵɵelement(0, "i", 66);
409
+ i0.ɵɵtext(1, " Usage & Cost ");
505
410
  } }
506
- function MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_9_Template(rf, ctx) { if (rf & 1) {
507
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 68)(2, "label");
508
- i0.ɵɵtext(3, "Total Tokens Used");
509
- i0.ɵɵelementEnd();
510
- i0.ɵɵelementStart(4, "span");
511
- i0.ɵɵtext(5);
512
- i0.ɵɵpipe(6, "number");
513
- i0.ɵɵelementEnd()();
514
- i0.ɵɵelementStart(7, "div", 68)(8, "label");
515
- i0.ɵɵtext(9, "Prompt Tokens");
516
- i0.ɵɵelementEnd();
517
- i0.ɵɵelementStart(10, "span");
518
- i0.ɵɵtext(11);
519
- i0.ɵɵpipe(12, "number");
520
- i0.ɵɵelementEnd()();
521
- i0.ɵɵelementStart(13, "div", 68)(14, "label");
522
- i0.ɵɵtext(15, "Completion Tokens");
523
- i0.ɵɵelementEnd();
524
- i0.ɵɵelementStart(16, "span");
525
- i0.ɵɵtext(17);
526
- i0.ɵɵpipe(18, "number");
527
- i0.ɵɵelementEnd()();
528
- i0.ɵɵelementStart(19, "div", 68)(20, "label");
529
- i0.ɵɵtext(21, "Total Cost");
530
- i0.ɵɵelementEnd();
531
- i0.ɵɵelementStart(22, "span");
532
- i0.ɵɵtext(23);
533
- i0.ɵɵpipe(24, "number");
534
- i0.ɵɵelementEnd()();
535
- i0.ɵɵelementStart(25, "div", 68)(26, "label");
536
- i0.ɵɵtext(27, "Total Prompt Iterations");
537
- i0.ɵɵelementEnd();
538
- i0.ɵɵelementStart(28, "span");
539
- i0.ɵɵtext(29);
540
- i0.ɵɵpipe(30, "number");
541
- i0.ɵɵelementEnd()()();
542
- } if (rf & 2) {
543
- const ctx_r0 = i0.ɵɵnextContext(2);
544
- i0.ɵɵadvance(5);
545
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalTokensUsed ? i0.ɵɵpipeBind2(6, 5, ctx_r0.record.TotalTokensUsed, "1.0-0") : "N/A");
546
- i0.ɵɵadvance(6);
547
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptTokensUsed ? i0.ɵɵpipeBind2(12, 8, ctx_r0.record.TotalPromptTokensUsed, "1.0-0") : "N/A");
548
- i0.ɵɵadvance(6);
549
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalCompletionTokensUsed ? i0.ɵɵpipeBind2(18, 11, ctx_r0.record.TotalCompletionTokensUsed, "1.0-0") : "N/A");
550
- i0.ɵɵadvance(6);
551
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalCost != null ? "$" + i0.ɵɵpipeBind2(24, 14, ctx_r0.record.TotalCost, "1.2-4") : "N/A");
552
- i0.ɵɵadvance(6);
553
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(30, 17, ctx_r0.record.TotalPromptIterations, "1.0-0") : "N/A");
411
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_ng_template_1_Template(rf, ctx) { if (rf & 1) {
412
+ i0.ɵɵelement(0, "i", 70);
413
+ i0.ɵɵtext(1, " Result ");
554
414
  } }
555
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
556
- i0.ɵɵelement(0, "mj-code-editor", 75);
415
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_3_Template(rf, ctx) { if (rf & 1) {
416
+ i0.ɵɵelement(0, "mj-code-editor", 68);
557
417
  } if (rf & 2) {
558
- const ctx_r0 = i0.ɵɵnextContext(4);
418
+ const ctx_r0 = i0.ɵɵnextContext(3);
559
419
  i0.ɵɵproperty("ngModel", ctx_r0.parsedResult)("language", "json")("readonly", true);
560
420
  } }
561
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
562
- i0.ɵɵelementStart(0, "div", 76);
421
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_4_Template(rf, ctx) { if (rf & 1) {
422
+ i0.ɵɵelementStart(0, "div", 69);
563
423
  i0.ɵɵelement(1, "i", 43);
564
424
  i0.ɵɵtext(2, " Loading result data... ");
565
425
  i0.ɵɵelementEnd();
566
426
  } }
567
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
568
- i0.ɵɵelementStart(0, "div", 74);
569
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 75)(2, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Conditional_2_Template, 3, 0, "div", 76);
570
- i0.ɵɵelementEnd();
427
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Template(rf, ctx) { if (rf & 1) {
428
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
429
+ i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_ng_template_1_Template, 2, 0, "ng-template", 56);
430
+ i0.ɵɵelementStart(2, "div", 67);
431
+ i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_4_Template, 3, 0, "div", 69);
432
+ i0.ɵɵelementEnd()();
571
433
  } if (rf & 2) {
572
- const ctx_r0 = i0.ɵɵnextContext(3);
573
- i0.ɵɵadvance();
574
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
434
+ const ctx_r0 = i0.ɵɵnextContext(2);
435
+ i0.ɵɵproperty("Expanded", false);
436
+ i0.ɵɵadvance(3);
437
+ i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
575
438
  } }
576
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_Template(rf, ctx) { if (rf & 1) {
577
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 62);
578
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_ng_template_1_Template, 3, 1, "ng-template", 58);
579
- i0.ɵɵelementEnd();
439
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_ng_template_1_Template(rf, ctx) { if (rf & 1) {
440
+ i0.ɵɵelement(0, "i", 71);
441
+ i0.ɵɵtext(1, " Starting Payload ");
580
442
  } }
581
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
582
- i0.ɵɵelement(0, "mj-code-editor", 75);
443
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_3_Template(rf, ctx) { if (rf & 1) {
444
+ i0.ɵɵelement(0, "mj-code-editor", 68);
583
445
  } if (rf & 2) {
584
- const ctx_r0 = i0.ɵɵnextContext(4);
446
+ const ctx_r0 = i0.ɵɵnextContext(3);
585
447
  i0.ɵɵproperty("ngModel", ctx_r0.parsedStartingPayload)("language", "json")("readonly", true);
586
448
  } }
587
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
588
- i0.ɵɵelementStart(0, "div", 76);
449
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_4_Template(rf, ctx) { if (rf & 1) {
450
+ i0.ɵɵelementStart(0, "div", 69);
589
451
  i0.ɵɵelement(1, "i", 43);
590
452
  i0.ɵɵtext(2, " Loading payload data... ");
591
453
  i0.ɵɵelementEnd();
592
454
  } }
593
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
594
- i0.ɵɵelementStart(0, "div", 74);
595
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 75)(2, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Conditional_2_Template, 3, 0, "div", 76);
596
- i0.ɵɵelementEnd();
455
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Template(rf, ctx) { if (rf & 1) {
456
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
457
+ i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_ng_template_1_Template, 2, 0, "ng-template", 56);
458
+ i0.ɵɵelementStart(2, "div", 67);
459
+ i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_4_Template, 3, 0, "div", 69);
460
+ i0.ɵɵelementEnd()();
597
461
  } if (rf & 2) {
598
- const ctx_r0 = i0.ɵɵnextContext(3);
599
- i0.ɵɵadvance();
600
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
462
+ const ctx_r0 = i0.ɵɵnextContext(2);
463
+ i0.ɵɵproperty("Expanded", false);
464
+ i0.ɵɵadvance(3);
465
+ i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
601
466
  } }
602
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_Template(rf, ctx) { if (rf & 1) {
603
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 63);
604
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_ng_template_1_Template, 3, 1, "ng-template", 58);
605
- i0.ɵɵelementEnd();
467
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_ng_template_1_Template(rf, ctx) { if (rf & 1) {
468
+ i0.ɵɵelement(0, "i", 72);
469
+ i0.ɵɵtext(1, " Execution Data ");
606
470
  } }
607
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
608
- i0.ɵɵelement(0, "mj-code-editor", 75);
471
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_3_Template(rf, ctx) { if (rf & 1) {
472
+ i0.ɵɵelement(0, "mj-code-editor", 68);
609
473
  } if (rf & 2) {
610
- const ctx_r0 = i0.ɵɵnextContext(4);
474
+ const ctx_r0 = i0.ɵɵnextContext(3);
611
475
  i0.ɵɵproperty("ngModel", ctx_r0.parsedData)("language", "json")("readonly", true);
612
476
  } }
613
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
614
- i0.ɵɵelementStart(0, "div", 76);
477
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_4_Template(rf, ctx) { if (rf & 1) {
478
+ i0.ɵɵelementStart(0, "div", 69);
615
479
  i0.ɵɵelement(1, "i", 43);
616
480
  i0.ɵɵtext(2, " Loading execution data... ");
617
481
  i0.ɵɵelementEnd();
618
482
  } }
619
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
620
- i0.ɵɵelementStart(0, "div", 74);
621
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 75)(2, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Conditional_2_Template, 3, 0, "div", 76);
622
- i0.ɵɵelementEnd();
483
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Template(rf, ctx) { if (rf & 1) {
484
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
485
+ i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_ng_template_1_Template, 2, 0, "ng-template", 56);
486
+ i0.ɵɵelementStart(2, "div", 67);
487
+ i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_4_Template, 3, 0, "div", 69);
488
+ i0.ɵɵelementEnd()();
623
489
  } if (rf & 2) {
624
- const ctx_r0 = i0.ɵɵnextContext(3);
625
- i0.ɵɵadvance();
626
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
490
+ const ctx_r0 = i0.ɵɵnextContext(2);
491
+ i0.ɵɵproperty("Expanded", false);
492
+ i0.ɵɵadvance(3);
493
+ i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
627
494
  } }
628
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_Template(rf, ctx) { if (rf & 1) {
629
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 64);
630
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_ng_template_1_Template, 3, 1, "ng-template", 58);
631
- i0.ɵɵelementEnd();
495
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_ng_template_1_Template(rf, ctx) { if (rf & 1) {
496
+ i0.ɵɵelement(0, "i", 73);
497
+ i0.ɵɵtext(1, " Final Payload ");
632
498
  } }
633
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
634
- i0.ɵɵelement(0, "mj-code-editor", 75);
499
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_3_Template(rf, ctx) { if (rf & 1) {
500
+ i0.ɵɵelement(0, "mj-code-editor", 68);
635
501
  } if (rf & 2) {
636
- const ctx_r0 = i0.ɵɵnextContext(4);
502
+ const ctx_r0 = i0.ɵɵnextContext(3);
637
503
  i0.ɵɵproperty("ngModel", ctx_r0.parsedFinalPayload)("language", "json")("readonly", true);
638
504
  } }
639
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
640
- i0.ɵɵelementStart(0, "div", 76);
505
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_4_Template(rf, ctx) { if (rf & 1) {
506
+ i0.ɵɵelementStart(0, "div", 69);
641
507
  i0.ɵɵelement(1, "i", 43);
642
508
  i0.ɵɵtext(2, " Loading final payload data... ");
643
509
  i0.ɵɵelementEnd();
644
510
  } }
645
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
646
- i0.ɵɵelementStart(0, "div", 74);
647
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 75)(2, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Conditional_2_Template, 3, 0, "div", 76);
648
- i0.ɵɵelementEnd();
511
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Template(rf, ctx) { if (rf & 1) {
512
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
513
+ i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_ng_template_1_Template, 2, 0, "ng-template", 56);
514
+ i0.ɵɵelementStart(2, "div", 67);
515
+ i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_4_Template, 3, 0, "div", 69);
516
+ i0.ɵɵelementEnd()();
649
517
  } if (rf & 2) {
650
- const ctx_r0 = i0.ɵɵnextContext(3);
651
- i0.ɵɵadvance();
652
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
518
+ const ctx_r0 = i0.ɵɵnextContext(2);
519
+ i0.ɵɵproperty("Expanded", false);
520
+ i0.ɵɵadvance(3);
521
+ i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
653
522
  } }
654
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_Template(rf, ctx) { if (rf & 1) {
655
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 65);
656
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_ng_template_1_Template, 3, 1, "ng-template", 58);
657
- i0.ɵɵelementEnd();
523
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_ng_template_1_Template(rf, ctx) { if (rf & 1) {
524
+ i0.ɵɵelement(0, "i", 76);
525
+ i0.ɵɵtext(1, " Payload Diff ");
658
526
  } }
659
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
660
- i0.ɵɵelement(0, "mj-deep-diff", 78);
527
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_3_Template(rf, ctx) { if (rf & 1) {
528
+ i0.ɵɵelement(0, "mj-deep-diff", 75);
661
529
  } if (rf & 2) {
662
- const ctx_r0 = i0.ɵɵnextContext(4);
530
+ const ctx_r0 = i0.ɵɵnextContext(3);
663
531
  i0.ɵɵproperty("oldValue", ctx_r0.startingPayloadObject)("newValue", ctx_r0.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
664
532
  } }
665
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
666
- i0.ɵɵelementStart(0, "div", 76);
533
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_4_Template(rf, ctx) { if (rf & 1) {
534
+ i0.ɵɵelementStart(0, "div", 69);
667
535
  i0.ɵɵelement(1, "i", 43);
668
536
  i0.ɵɵtext(2, " Loading payload diff... ");
669
537
  i0.ɵɵelementEnd();
670
538
  } }
671
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
672
- i0.ɵɵelementStart(0, "div", 77);
673
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Conditional_1_Template, 1, 9, "mj-deep-diff", 78)(2, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Conditional_2_Template, 3, 0, "div", 76);
674
- i0.ɵɵelementEnd();
539
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Template(rf, ctx) { if (rf & 1) {
540
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
541
+ i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_ng_template_1_Template, 2, 0, "ng-template", 56);
542
+ i0.ɵɵelementStart(2, "div", 74);
543
+ i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_3_Template, 1, 9, "mj-deep-diff", 75)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_4_Template, 3, 0, "div", 69);
544
+ i0.ɵɵelementEnd()();
675
545
  } if (rf & 2) {
676
- const ctx_r0 = i0.ɵɵnextContext(3);
677
- i0.ɵɵadvance();
678
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
679
- } }
680
- function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template(rf, ctx) { if (rf & 1) {
681
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 66);
682
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_ng_template_1_Template, 3, 1, "ng-template", 58);
683
- i0.ɵɵelementEnd();
546
+ const ctx_r0 = i0.ɵɵnextContext(2);
547
+ i0.ɵɵproperty("Expanded", false);
548
+ i0.ɵɵadvance(3);
549
+ i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
684
550
  } }
685
551
  function MJAIAgentRunFormComponentExtended_Conditional_56_Template(rf, ctx) { if (rf & 1) {
686
- i0.ɵɵelementStart(0, "div", 35)(1, "kendo-panelbar", 56)(2, "kendo-panelbar-item", 57);
687
- i0.ɵɵtemplate(3, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_3_Template, 31, 9, "ng-template", 58);
552
+ const _r8 = i0.ɵɵgetCurrentView();
553
+ i0.ɵɵelementStart(0, "div", 35)(1, "mj-accordion-panel", 55);
554
+ i0.ɵɵtemplate(2, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_2_Template, 2, 0, "ng-template", 56);
555
+ i0.ɵɵelementStart(3, "div", 57)(4, "div", 58)(5, "label");
556
+ i0.ɵɵtext(6, "Agent");
557
+ i0.ɵɵelementEnd();
558
+ i0.ɵɵelementStart(7, "span")(8, "a", 36);
559
+ i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_56_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agents", ctx_r0.record.AgentID)); });
560
+ i0.ɵɵtext(9);
561
+ i0.ɵɵelementEnd()()();
562
+ i0.ɵɵelementStart(10, "div", 58)(11, "label");
563
+ i0.ɵɵtext(12, "Parent Run ID");
564
+ i0.ɵɵelementEnd();
565
+ i0.ɵɵelementStart(13, "span");
566
+ i0.ɵɵconditionalCreate(14, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template, 2, 1, "a", 59);
567
+ i0.ɵɵconditionalCreate(15, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_15_Template, 2, 0, "span");
568
+ i0.ɵɵelementEnd()();
569
+ i0.ɵɵelementStart(16, "div", 58)(17, "label");
570
+ i0.ɵɵtext(18, "Last Run ID");
688
571
  i0.ɵɵelementEnd();
689
- i0.ɵɵelementStart(4, "kendo-panelbar-item", 59);
690
- i0.ɵɵtemplate(5, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_5_Template, 18, 5, "ng-template", 58);
572
+ i0.ɵɵelementStart(19, "span");
573
+ i0.ɵɵconditionalCreate(20, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Template, 2, 1, "a", 59);
574
+ i0.ɵɵconditionalCreate(21, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_21_Template, 2, 0, "span");
575
+ i0.ɵɵelementEnd()();
576
+ i0.ɵɵelementStart(22, "div", 58)(23, "label");
577
+ i0.ɵɵtext(24, "Conversation ID");
578
+ i0.ɵɵelementEnd();
579
+ i0.ɵɵelementStart(25, "span");
580
+ i0.ɵɵconditionalCreate(26, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Template, 2, 1, "a", 59);
581
+ i0.ɵɵconditionalCreate(27, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_27_Template, 2, 0, "span");
582
+ i0.ɵɵelementEnd()();
583
+ i0.ɵɵelementStart(28, "div", 58)(29, "label");
584
+ i0.ɵɵtext(30, "User");
585
+ i0.ɵɵelementEnd();
586
+ i0.ɵɵelementStart(31, "span");
587
+ i0.ɵɵconditionalCreate(32, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Template, 2, 1, "a", 59);
588
+ i0.ɵɵconditionalCreate(33, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_33_Template, 2, 0, "span");
589
+ i0.ɵɵelementEnd()()()();
590
+ i0.ɵɵelementStart(34, "mj-accordion-panel", 55);
591
+ i0.ɵɵtemplate(35, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_35_Template, 2, 0, "ng-template", 56);
592
+ i0.ɵɵelementStart(36, "div", 57)(37, "div", 58)(38, "label");
593
+ i0.ɵɵtext(39, "Override Model");
594
+ i0.ɵɵelementEnd();
595
+ i0.ɵɵelementStart(40, "span");
596
+ i0.ɵɵconditionalCreate(41, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Template, 2, 1, "a", 59);
597
+ i0.ɵɵconditionalCreate(42, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_42_Template, 2, 0, "span");
598
+ i0.ɵɵelementEnd()();
599
+ i0.ɵɵelementStart(43, "div", 58)(44, "label");
600
+ i0.ɵɵtext(45, "Override Vendor");
601
+ i0.ɵɵelementEnd();
602
+ i0.ɵɵelementStart(46, "span");
603
+ i0.ɵɵconditionalCreate(47, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Template, 2, 1, "a", 59);
604
+ i0.ɵɵconditionalCreate(48, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_48_Template, 2, 0, "span");
605
+ i0.ɵɵelementEnd()();
606
+ i0.ɵɵelementStart(49, "div", 58)(50, "label");
607
+ i0.ɵɵtext(51, "Verbose Logging");
608
+ i0.ɵɵelementEnd();
609
+ i0.ɵɵelementStart(52, "span");
610
+ i0.ɵɵtext(53);
611
+ i0.ɵɵelementEnd()()()();
612
+ i0.ɵɵelementStart(54, "mj-accordion-panel", 55);
613
+ i0.ɵɵtemplate(55, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_55_Template, 2, 0, "ng-template", 56);
614
+ i0.ɵɵelementStart(56, "div", 57)(57, "div", 58)(58, "label");
615
+ i0.ɵɵtext(59, "Status");
616
+ i0.ɵɵelementEnd();
617
+ i0.ɵɵelementStart(60, "span", 18);
618
+ i0.ɵɵtext(61);
619
+ i0.ɵɵelementEnd()();
620
+ i0.ɵɵelementStart(62, "div", 58)(63, "label");
621
+ i0.ɵɵtext(64, "Success");
622
+ i0.ɵɵelementEnd();
623
+ i0.ɵɵconditionalCreate(65, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_65_Template, 2, 0, "span")(66, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_66_Template, 2, 0, "span", 60)(67, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_67_Template, 2, 0, "span", 61);
691
624
  i0.ɵɵelementEnd();
692
- i0.ɵɵelementStart(6, "kendo-panelbar-item", 60);
693
- i0.ɵɵtemplate(7, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_7_Template, 14, 5, "ng-template", 58);
625
+ i0.ɵɵconditionalCreate(68, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_68_Template, 5, 1, "div", 62);
626
+ i0.ɵɵconditionalCreate(69, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_69_Template, 5, 1, "div", 62);
627
+ i0.ɵɵelementEnd()();
628
+ i0.ɵɵelementStart(70, "mj-accordion-panel", 55);
629
+ i0.ɵɵtemplate(71, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_71_Template, 2, 0, "ng-template", 56);
630
+ i0.ɵɵelementStart(72, "div", 57)(73, "div", 58)(74, "label");
631
+ i0.ɵɵtext(75, "Total Tokens Used");
632
+ i0.ɵɵelementEnd();
633
+ i0.ɵɵelementStart(76, "span");
634
+ i0.ɵɵtext(77);
635
+ i0.ɵɵpipe(78, "number");
636
+ i0.ɵɵelementEnd()();
637
+ i0.ɵɵelementStart(79, "div", 58)(80, "label");
638
+ i0.ɵɵtext(81, "Prompt Tokens");
694
639
  i0.ɵɵelementEnd();
695
- i0.ɵɵelementStart(8, "kendo-panelbar-item", 61);
696
- i0.ɵɵtemplate(9, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_9_Template, 31, 20, "ng-template", 58);
640
+ i0.ɵɵelementStart(82, "span");
641
+ i0.ɵɵtext(83);
642
+ i0.ɵɵpipe(84, "number");
643
+ i0.ɵɵelementEnd()();
644
+ i0.ɵɵelementStart(85, "div", 58)(86, "label");
645
+ i0.ɵɵtext(87, "Completion Tokens");
697
646
  i0.ɵɵelementEnd();
698
- i0.ɵɵconditionalCreate(10, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_10_Template, 2, 0, "kendo-panelbar-item", 62);
699
- i0.ɵɵconditionalCreate(11, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_11_Template, 2, 0, "kendo-panelbar-item", 63);
700
- i0.ɵɵconditionalCreate(12, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_12_Template, 2, 0, "kendo-panelbar-item", 64);
701
- i0.ɵɵconditionalCreate(13, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_13_Template, 2, 0, "kendo-panelbar-item", 65);
702
- i0.ɵɵconditionalCreate(14, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template, 2, 0, "kendo-panelbar-item", 66);
647
+ i0.ɵɵelementStart(88, "span");
648
+ i0.ɵɵtext(89);
649
+ i0.ɵɵpipe(90, "number");
703
650
  i0.ɵɵelementEnd()();
651
+ i0.ɵɵelementStart(91, "div", 58)(92, "label");
652
+ i0.ɵɵtext(93, "Total Cost");
653
+ i0.ɵɵelementEnd();
654
+ i0.ɵɵelementStart(94, "span");
655
+ i0.ɵɵtext(95);
656
+ i0.ɵɵpipe(96, "number");
657
+ i0.ɵɵelementEnd()();
658
+ i0.ɵɵelementStart(97, "div", 58)(98, "label");
659
+ i0.ɵɵtext(99, "Total Prompt Iterations");
660
+ i0.ɵɵelementEnd();
661
+ i0.ɵɵelementStart(100, "span");
662
+ i0.ɵɵtext(101);
663
+ i0.ɵɵpipe(102, "number");
664
+ i0.ɵɵelementEnd()()()();
665
+ i0.ɵɵconditionalCreate(103, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Template, 5, 2, "mj-accordion-panel", 55);
666
+ i0.ɵɵconditionalCreate(104, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Template, 5, 2, "mj-accordion-panel", 55);
667
+ i0.ɵɵconditionalCreate(105, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Template, 5, 2, "mj-accordion-panel", 55);
668
+ i0.ɵɵconditionalCreate(106, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Template, 5, 2, "mj-accordion-panel", 55);
669
+ i0.ɵɵconditionalCreate(107, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Template, 5, 2, "mj-accordion-panel", 55);
670
+ i0.ɵɵelementEnd();
704
671
  } if (rf & 2) {
705
672
  const ctx_r0 = i0.ɵɵnextContext();
706
673
  i0.ɵɵadvance();
707
- i0.ɵɵproperty("keepItemContent", true);
708
- i0.ɵɵadvance();
709
- i0.ɵɵproperty("expanded", true);
674
+ i0.ɵɵproperty("Expanded", true);
710
675
  i0.ɵɵadvance(8);
711
- i0.ɵɵconditional(ctx_r0.record.Result ? 10 : -1);
676
+ i0.ɵɵtextInterpolate1(" ", (ctx_r0.agent == null ? null : ctx_r0.agent.Name) || "N/A", " ");
677
+ i0.ɵɵadvance(5);
678
+ i0.ɵɵconditional(ctx_r0.record.ParentRunID ? 14 : -1);
679
+ i0.ɵɵadvance();
680
+ i0.ɵɵconditional(!ctx_r0.record.ParentRunID ? 15 : -1);
681
+ i0.ɵɵadvance(5);
682
+ i0.ɵɵconditional(ctx_r0.record.LastRunID ? 20 : -1);
683
+ i0.ɵɵadvance();
684
+ i0.ɵɵconditional(!ctx_r0.record.LastRunID ? 21 : -1);
685
+ i0.ɵɵadvance(5);
686
+ i0.ɵɵconditional(ctx_r0.record.ConversationID ? 26 : -1);
687
+ i0.ɵɵadvance();
688
+ i0.ɵɵconditional(!ctx_r0.record.ConversationID ? 27 : -1);
689
+ i0.ɵɵadvance(5);
690
+ i0.ɵɵconditional(ctx_r0.record.UserID ? 32 : -1);
691
+ i0.ɵɵadvance();
692
+ i0.ɵɵconditional(!ctx_r0.record.UserID ? 33 : -1);
693
+ i0.ɵɵadvance();
694
+ i0.ɵɵproperty("Expanded", false);
695
+ i0.ɵɵadvance(7);
696
+ i0.ɵɵconditional(ctx_r0.record.OverrideModelID ? 41 : -1);
697
+ i0.ɵɵadvance();
698
+ i0.ɵɵconditional(!ctx_r0.record.OverrideModelID ? 42 : -1);
699
+ i0.ɵɵadvance(5);
700
+ i0.ɵɵconditional(ctx_r0.record.OverrideVendorID ? 47 : -1);
701
+ i0.ɵɵadvance();
702
+ i0.ɵɵconditional(!ctx_r0.record.OverrideVendorID ? 48 : -1);
703
+ i0.ɵɵadvance(5);
704
+ i0.ɵɵtextInterpolate(ctx_r0.record.Verbose ? "Yes" : "No");
705
+ i0.ɵɵadvance();
706
+ i0.ɵɵproperty("Expanded", false);
707
+ i0.ɵɵadvance(6);
708
+ i0.ɵɵattribute("data-status", ctx_r0.record.Status);
709
+ i0.ɵɵadvance();
710
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Status, " ");
711
+ i0.ɵɵadvance(4);
712
+ i0.ɵɵconditional(ctx_r0.record.Success === null ? 65 : ctx_r0.record.Success ? 66 : 67);
713
+ i0.ɵɵadvance(3);
714
+ i0.ɵɵconditional(ctx_r0.record.Message ? 68 : -1);
715
+ i0.ɵɵadvance();
716
+ i0.ɵɵconditional(ctx_r0.record.ErrorMessage ? 69 : -1);
717
+ i0.ɵɵadvance();
718
+ i0.ɵɵproperty("Expanded", false);
719
+ i0.ɵɵadvance(7);
720
+ i0.ɵɵtextInterpolate(ctx_r0.record.TotalTokensUsed ? i0.ɵɵpipeBind2(78, 33, ctx_r0.record.TotalTokensUsed, "1.0-0") : "N/A");
721
+ i0.ɵɵadvance(6);
722
+ i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptTokensUsed ? i0.ɵɵpipeBind2(84, 36, ctx_r0.record.TotalPromptTokensUsed, "1.0-0") : "N/A");
723
+ i0.ɵɵadvance(6);
724
+ i0.ɵɵtextInterpolate(ctx_r0.record.TotalCompletionTokensUsed ? i0.ɵɵpipeBind2(90, 39, ctx_r0.record.TotalCompletionTokensUsed, "1.0-0") : "N/A");
725
+ i0.ɵɵadvance(6);
726
+ i0.ɵɵtextInterpolate(ctx_r0.record.TotalCost != null ? "$" + i0.ɵɵpipeBind2(96, 42, ctx_r0.record.TotalCost, "1.2-4") : "N/A");
727
+ i0.ɵɵadvance(6);
728
+ i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(102, 45, ctx_r0.record.TotalPromptIterations, "1.0-0") : "N/A");
729
+ i0.ɵɵadvance(2);
730
+ i0.ɵɵconditional(ctx_r0.record.Result ? 103 : -1);
712
731
  i0.ɵɵadvance();
713
- i0.ɵɵconditional(ctx_r0.record.StartingPayload ? 11 : -1);
732
+ i0.ɵɵconditional(ctx_r0.record.StartingPayload ? 104 : -1);
714
733
  i0.ɵɵadvance();
715
- i0.ɵɵconditional(ctx_r0.record.Data ? 12 : -1);
734
+ i0.ɵɵconditional(ctx_r0.record.Data ? 105 : -1);
716
735
  i0.ɵɵadvance();
717
- i0.ɵɵconditional(ctx_r0.record.FinalPayload ? 13 : -1);
736
+ i0.ɵɵconditional(ctx_r0.record.FinalPayload ? 106 : -1);
718
737
  i0.ɵɵadvance();
719
- i0.ɵɵconditional(ctx_r0.showPayloadDiff ? 14 : -1);
738
+ i0.ɵɵconditional(ctx_r0.showPayloadDiff ? 107 : -1);
720
739
  } }
721
740
  let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormComponent {
722
741
  constructor() {
@@ -773,6 +792,7 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
773
792
  const agent = await md.GetEntityObject('MJ: AI Agents');
774
793
  if (agent && await agent.Load(this.record.AgentID)) {
775
794
  this.agent = agent;
795
+ this.cdr.detectChanges();
776
796
  }
777
797
  }
778
798
  catch (error) {
@@ -1264,7 +1284,7 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
1264
1284
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
1265
1285
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analyticsComponent = _t.first);
1266
1286
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.visualizationComponent = _t.first);
1267
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 57, vars: 33, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], [1, "agent-name"], [1, "run-id"], [1, "parent-run"], ["title", "Open conversation in Chat app", 1, "conversation-pill"], [1, "header-right"], [1, "status-badge"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], [1, "configuration-bar"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], [1, "tab-content", 2, "height", "100%"], [1, "tab-content"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["title", "Open conversation in Chat app", 1, "conversation-pill", 3, "click"], [1, "fas", "fa-comments"], [1, "fas", "fa-external-link-alt", "pill-action"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], ["orientation", "horizontal", 2, "height", "100%"], [3, "min"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "dataHelper", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper"], [3, "agentRunId"], [3, "keepItemContent"], ["title", "General Information", 3, "expanded"], ["kendoPanelBarContent", ""], ["title", "Execution Settings"], ["title", "Execution Status"], ["title", "Usage & Cost"], ["title", "Result"], ["title", "Starting Payload"], ["title", "Execution Data"], ["title", "Final Payload"], ["title", "Payload Diff"], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", 1, "entity-link"], [1, "success"], [1, "error-message"], [1, "detail-item", "full-width"], [1, "message"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "#666"], [2, "padding", "20px", "background", "#f8f9fa"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"]], template: function MJAIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1287
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 57, vars: 33, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], [1, "agent-name"], [1, "run-id"], [1, "parent-run"], ["title", "Open conversation in Chat app", 1, "conversation-pill"], [1, "header-right"], [1, "status-badge"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], [1, "configuration-bar"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], [1, "tab-content", 2, "height", "100%"], [1, "tab-content"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["title", "Open conversation in Chat app", 1, "conversation-pill", 3, "click"], [1, "fas", "fa-comments"], [1, "fas", "fa-external-link-alt", "pill-action"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], ["direction", "horizontal", 2, "height", "100%"], [3, "size"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "dataHelper", "autoRefresh", "refreshInterval"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper"], [3, "agentRunId"], [3, "Expanded"], ["mjAccordionTitle", ""], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", 1, "entity-link"], [1, "success"], [1, "error-message"], [1, "detail-item", "full-width"], [1, "fas", "fa-cogs"], [1, "fas", "fa-tasks"], [1, "message"], [1, "fas", "fa-dollar-sign"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fas", "fa-code"], [1, "fas", "fa-upload"], [1, "fas", "fa-database"], [1, "fas", "fa-download"], [2, "padding", "20px", "background", "var(--mj-bg-surface-card)"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "fas", "fa-code-compare"]], template: function MJAIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1268
1288
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6)(5, "div", 7);
1269
1289
  i0.ɵɵconditionalCreate(6, MJAIAgentRunFormComponentExtended_Conditional_6_Template, 1, 2, "img", 8);
1270
1290
  i0.ɵɵconditionalCreate(7, MJAIAgentRunFormComponentExtended_Conditional_7_Template, 1, 1, "i", 9);
@@ -1326,10 +1346,10 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
1326
1346
  i0.ɵɵtext(51, " Details ");
1327
1347
  i0.ɵɵelementEnd()();
1328
1348
  i0.ɵɵelementStart(52, "div", 33);
1329
- i0.ɵɵconditionalCreate(53, MJAIAgentRunFormComponentExtended_Conditional_53_Template, 6, 9, "div", 34);
1349
+ i0.ɵɵconditionalCreate(53, MJAIAgentRunFormComponentExtended_Conditional_53_Template, 5, 6, "div", 34);
1330
1350
  i0.ɵɵconditionalCreate(54, MJAIAgentRunFormComponentExtended_Conditional_54_Template, 2, 1, "div", 34);
1331
1351
  i0.ɵɵconditionalCreate(55, MJAIAgentRunFormComponentExtended_Conditional_55_Template, 2, 1, "div", 34);
1332
- i0.ɵɵconditionalCreate(56, MJAIAgentRunFormComponentExtended_Conditional_56_Template, 15, 7, "div", 35);
1352
+ i0.ɵɵconditionalCreate(56, MJAIAgentRunFormComponentExtended_Conditional_56_Template, 108, 48, "div", 35);
1333
1353
  i0.ɵɵelementEnd()()();
1334
1354
  } if (rf & 2) {
1335
1355
  i0.ɵɵadvance(6);
@@ -1384,7 +1404,7 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
1384
1404
  i0.ɵɵconditional(ctx.activeTab === "analytics" ? 55 : -1);
1385
1405
  i0.ɵɵadvance();
1386
1406
  i0.ɵɵconditional(ctx.activeTab === "details" ? 56 : -1);
1387
- } }, dependencies: [i1.NgClass, i2.NgControlStatus, i2.NgModel, i3.PanelBarComponent, i3.PanelBarItemComponent, i3.PanelBarContentDirective, i3.SplitterComponent, i3.SplitterPaneComponent, i4.CodeEditorComponent, i5.DeepDiffComponent, i6.AIAgentRunTimelineComponent, i7.AIAgentRunAnalyticsComponent, i8.AIAgentRunVisualizationComponent, i9.AIAgentRunStepDetailComponent, i1.DecimalPipe, i1.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%], \n.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n\n\n.conversation-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill[_ngcontent-%COMP%] .pill-action[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover .pill-action[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.configuration-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.tab-content[ng-reflect-ng-if=\"true\"][_ngcontent-%COMP%] > kendo-panelbar[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
1407
+ } }, dependencies: [i1.NgClass, i2.NgControlStatus, i2.NgModel, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.CodeEditorComponent, i5.DeepDiffComponent, i6.SplitComponent, i6.SplitAreaComponent, i7.AIAgentRunTimelineComponent, i8.AIAgentRunAnalyticsComponent, i9.AIAgentRunVisualizationComponent, i10.AIAgentRunStepDetailComponent, i1.DecimalPipe, i1.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%], \n.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n\n\n.conversation-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill[_ngcontent-%COMP%] .pill-action[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover .pill-action[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.configuration-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
1388
1408
  };
1389
1409
  MJAIAgentRunFormComponentExtended = __decorate([
1390
1410
  RegisterClass(BaseFormComponent, 'MJ: AI Agent Runs')
@@ -1392,7 +1412,7 @@ MJAIAgentRunFormComponentExtended = __decorate([
1392
1412
  export { MJAIAgentRunFormComponentExtended };
1393
1413
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentRunFormComponentExtended, [{
1394
1414
  type: Component,
1395
- args: [{ standalone: false, selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <kendo-splitter style=\"height: 100%;\" orientation=\"horizontal\">\n <!-- Timeline Pane -->\n <kendo-splitter-pane [min]=\"'400px'\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </kendo-splitter-pane>\n <!-- JSON Detail Pane -->\n <kendo-splitter-pane [size]=\"'45%'\" [min]=\"'300px'\" [collapsed]=\"!selectedTimelineItem\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n }\n\n <!-- Visualization Tab -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n >\n </mj-ai-agent-run-visualization>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <kendo-panelbar-item title=\"General Information\" [expanded]=\"true\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n <kendo-panelbar-item title=\"Execution Settings\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n <kendo-panelbar-item title=\"Execution Status\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n <kendo-panelbar-item title=\"Usage & Cost\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n @if (record.Result) {\n <kendo-panelbar-item title=\"Result\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n @if (record.StartingPayload) {\n <kendo-panelbar-item title=\"Starting Payload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n @if (record.Data) {\n <kendo-panelbar-item title=\"Execution Data\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n @if (record.FinalPayload) {\n <kendo-panelbar-item title=\"Final Payload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n @if (showPayloadDiff) {\n <kendo-panelbar-item title=\"Payload Diff\">\n <ng-template kendoPanelBarContent>\n <div style=\"padding: 20px; background: #f8f9fa;\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n </kendo-panelbar>\n </div>\n }\n</div>\n</div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form > .record-form,\n.ai-agent-run-form > .record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n/* Conversation Link Pill */\n.conversation-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill i:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill .pill-action {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill:hover .pill-action {\n opacity: 1;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value .entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat .value.success {\n color: var(--mj-status-success);\n}\n\n.stat .value.error {\n color: var(--mj-status-error);\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n/* Details tab specific */\n.tab-content[ng-reflect-ng-if=\"true\"] > kendo-panelbar {\n height: 100%;\n overflow-y: auto;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link:active {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
1415
+ args: [{ standalone: false, selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <as-split direction=\"horizontal\" style=\"height: 100%;\">\n <!-- Timeline Pane -->\n <as-split-area [size]=\"selectedTimelineItem ? 55 : 100\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </as-split-area>\n <!-- JSON Detail Pane -->\n @if (selectedTimelineItem) {\n <as-split-area [size]=\"45\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </as-split-area>\n }\n </as-split>\n </div>\n }\n\n <!-- Visualization Tab -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n >\n </mj-ai-agent-run-visualization>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> General Information\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-cogs\"></i> Execution Settings\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks\"></i> Execution Status\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-dollar-sign\"></i> Usage &amp; Cost\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n @if (record.Result) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Result\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.StartingPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-upload\"></i> Starting Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.Data) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.FinalPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-download\"></i> Final Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (showPayloadDiff) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code-compare\"></i> Payload Diff\n </ng-template>\n <div style=\"padding: 20px; background: var(--mj-bg-surface-card);\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n</div>\n</div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form > .record-form,\n.ai-agent-run-form > .record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n/* Conversation Link Pill */\n.conversation-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill i:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill .pill-action {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill:hover .pill-action {\n opacity: 1;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value .entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat .value.success {\n color: var(--mj-status-success);\n}\n\n.stat .value.error {\n color: var(--mj-status-error);\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n/* Details tab accordion panels */\n.tab-content mj-accordion-panel {\n display: block;\n margin-bottom: 8px;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link:active {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
1396
1416
  }], null, { timelineComponent: [{
1397
1417
  type: ViewChild,
1398
1418
  args: [AIAgentRunTimelineComponent]