@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
@@ -10,16 +10,15 @@ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
10
10
  import { Metadata, RunView, CompositeKey } from '@memberjunction/core';
11
11
  import { MJAIPromptRunFormComponent } from '../../generated/Entities/MJAIPromptRun/mjaipromptrun.form.component';
12
12
  import { SharedService } from '@memberjunction/ng-shared';
13
- import { TestHarnessWindowService } from '@memberjunction/ng-ai-test-harness';
13
+ import { TestHarnessWindowManagerService } from '@memberjunction/ng-ai-test-harness';
14
14
  import { ParseJSONRecursive } from '@memberjunction/global';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "@angular/forms";
17
- import * as i2 from "@progress/kendo-angular-layout";
18
- import * as i3 from "@progress/kendo-angular-buttons";
19
- import * as i4 from "@memberjunction/ng-base-forms";
20
- import * as i5 from "@memberjunction/ng-code-editor";
21
- import * as i6 from "./chat-message-viewer.component";
22
- import * as i7 from "@angular/common";
17
+ import * as i2 from "@memberjunction/ng-ui-components";
18
+ import * as i3 from "@memberjunction/ng-base-forms";
19
+ import * as i4 from "@memberjunction/ng-code-editor";
20
+ import * as i5 from "./chat-message-viewer.component";
21
+ import * as i6 from "@angular/common";
23
22
  const _forTrack0 = ($index, $item) => $item.attemptNumber;
24
23
  const _forTrack1 = ($index, $item) => $item.ID;
25
24
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
@@ -49,26 +48,26 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_20_Templat
49
48
  } }
50
49
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
51
50
  const _r3 = i0.ɵɵgetCurrentView();
52
- i0.ɵɵelementStart(0, "div", 32)(1, "div", 14);
51
+ i0.ɵɵelementStart(0, "div", 65)(1, "div", 14);
53
52
  i0.ɵɵtext(2, "Prompt");
54
53
  i0.ɵɵelementEnd();
55
- i0.ɵɵelementStart(3, "div", 34);
54
+ i0.ɵɵelementStart(3, "div", 67);
56
55
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.ChildPromptID)); });
57
- i0.ɵɵelement(4, "i", 35);
56
+ i0.ɵɵelement(4, "i", 68);
58
57
  i0.ɵɵtext(5);
59
58
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(6, "div", 36);
61
- i0.ɵɵelement(7, "span", 37);
62
- i0.ɵɵelementStart(8, "span", 38);
59
+ i0.ɵɵelementStart(6, "div", 69);
60
+ i0.ɵɵelement(7, "span", 70);
61
+ i0.ɵɵelementStart(8, "span", 71);
63
62
  i0.ɵɵtext(9, "wrapped by");
64
63
  i0.ɵɵelementEnd();
65
- i0.ɵɵelement(10, "span", 37);
64
+ i0.ɵɵelement(10, "span", 70);
66
65
  i0.ɵɵelementEnd();
67
- i0.ɵɵelementStart(11, "div", 39);
66
+ i0.ɵɵelementStart(11, "div", 72);
68
67
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template_div_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
69
- i0.ɵɵelement(12, "i", 40);
68
+ i0.ɵɵelement(12, "i", 73);
70
69
  i0.ɵɵtext(13);
71
- i0.ɵɵelement(14, "i", 41);
70
+ i0.ɵɵelement(14, "i", 74);
72
71
  i0.ɵɵelementEnd()();
73
72
  } if (rf & 2) {
74
73
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -79,12 +78,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditi
79
78
  } }
80
79
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
81
80
  const _r4 = i0.ɵɵgetCurrentView();
82
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 14);
81
+ i0.ɵɵelementStart(0, "div", 66)(1, "div", 14);
83
82
  i0.ɵɵtext(2, "Prompt");
84
83
  i0.ɵɵelementEnd();
85
- i0.ɵɵelementStart(3, "div", 42);
84
+ i0.ɵɵelementStart(3, "div", 75);
86
85
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
87
- i0.ɵɵelement(4, "i", 43);
86
+ i0.ɵɵelement(4, "i", 76);
88
87
  i0.ɵɵtext(5);
89
88
  i0.ɵɵelementEnd()();
90
89
  } if (rf & 2) {
@@ -93,13 +92,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditi
93
92
  i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
94
93
  } }
95
94
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template, 15, 2, "div", 32)(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template, 6, 1, "div", 33);
95
+ i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template, 15, 2, "div", 65)(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template, 6, 1, "div", 66);
97
96
  } if (rf & 2) {
98
97
  const ctx_r1 = i0.ɵɵnextContext(2);
99
98
  i0.ɵɵconditional(ctx_r1.record.ChildPromptID ? 0 : 1);
100
99
  } }
101
100
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Conditional_7_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelementStart(0, "span", 47);
101
+ i0.ɵɵelementStart(0, "span", 80);
103
102
  i0.ɵɵtext(1);
104
103
  i0.ɵɵelementEnd();
105
104
  } if (rf & 2) {
@@ -112,13 +111,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Templat
112
111
  i0.ɵɵelementStart(0, "div", 18)(1, "div", 14);
113
112
  i0.ɵɵtext(2, "Model");
114
113
  i0.ɵɵelementEnd();
115
- i0.ɵɵelementStart(3, "div", 44);
114
+ i0.ɵɵelementStart(3, "div", 77);
116
115
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Models", ctx_r1.model.ID)); });
117
- i0.ɵɵelementStart(4, "span", 45);
118
- i0.ɵɵelement(5, "i", 46);
116
+ i0.ɵɵelementStart(4, "span", 78);
117
+ i0.ɵɵelement(5, "i", 79);
119
118
  i0.ɵɵtext(6);
120
119
  i0.ɵɵelementEnd();
121
- i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Conditional_7_Template, 2, 1, "span", 47);
120
+ i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Conditional_7_Template, 2, 1, "span", 80);
122
121
  i0.ɵɵelementEnd()();
123
122
  } if (rf & 2) {
124
123
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -130,19 +129,19 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Templat
130
129
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
131
130
  const _r6 = i0.ɵɵgetCurrentView();
132
131
  i0.ɵɵelementStart(0, "span", 19);
133
- i0.ɵɵelement(1, "i", 48);
134
- i0.ɵɵelementStart(2, "a", 49);
132
+ i0.ɵɵelement(1, "i", 81);
133
+ i0.ɵɵelementStart(2, "a", 82);
135
134
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_23_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToOriginalRun()); });
136
135
  i0.ɵɵtext(3, "Original Run");
137
136
  i0.ɵɵelementEnd()();
138
137
  } }
139
138
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
140
- i0.ɵɵelementStart(0, "div", 50);
141
- i0.ɵɵelement(1, "i", 58);
142
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
139
+ i0.ɵɵelementStart(0, "div", 83);
140
+ i0.ɵɵelement(1, "i", 50);
141
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
143
142
  i0.ɵɵtext(4, "Temperature");
144
143
  i0.ɵɵelementEnd();
145
- i0.ɵɵelementStart(5, "div", 53);
144
+ i0.ɵɵelementStart(5, "div", 86);
146
145
  i0.ɵɵtext(6);
147
146
  i0.ɵɵelementEnd()()();
148
147
  } if (rf & 2) {
@@ -151,12 +150,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
151
150
  i0.ɵɵtextInterpolate(ctx_r1.record.Temperature);
152
151
  } }
153
152
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_10_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelementStart(0, "div", 50);
155
- i0.ɵɵelement(1, "i", 59);
156
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
153
+ i0.ɵɵelementStart(0, "div", 83);
154
+ i0.ɵɵelement(1, "i", 51);
155
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
157
156
  i0.ɵɵtext(4, "Top P");
158
157
  i0.ɵɵelementEnd();
159
- i0.ɵɵelementStart(5, "div", 53);
158
+ i0.ɵɵelementStart(5, "div", 86);
160
159
  i0.ɵɵtext(6);
161
160
  i0.ɵɵelementEnd()()();
162
161
  } if (rf & 2) {
@@ -165,12 +164,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
165
164
  i0.ɵɵtextInterpolate(ctx_r1.record.TopP);
166
165
  } }
167
166
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_11_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "div", 50);
169
- i0.ɵɵelement(1, "i", 60);
170
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
167
+ i0.ɵɵelementStart(0, "div", 83);
168
+ i0.ɵɵelement(1, "i", 52);
169
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
171
170
  i0.ɵɵtext(4, "Top K");
172
171
  i0.ɵɵelementEnd();
173
- i0.ɵɵelementStart(5, "div", 53);
172
+ i0.ɵɵelementStart(5, "div", 86);
174
173
  i0.ɵɵtext(6);
175
174
  i0.ɵɵelementEnd()()();
176
175
  } if (rf & 2) {
@@ -179,12 +178,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
179
178
  i0.ɵɵtextInterpolate(ctx_r1.record.TopK);
180
179
  } }
181
180
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_12_Template(rf, ctx) { if (rf & 1) {
182
- i0.ɵɵelementStart(0, "div", 50);
183
- i0.ɵɵelement(1, "i", 61);
184
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
181
+ i0.ɵɵelementStart(0, "div", 83);
182
+ i0.ɵɵelement(1, "i", 89);
183
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
185
184
  i0.ɵɵtext(4, "Effort Level");
186
185
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(5, "div", 53);
186
+ i0.ɵɵelementStart(5, "div", 86);
188
187
  i0.ɵɵtext(6);
189
188
  i0.ɵɵelementEnd()()();
190
189
  } if (rf & 2) {
@@ -193,12 +192,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
193
192
  i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
194
193
  } }
195
194
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_13_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵelementStart(0, "div", 50);
197
- i0.ɵɵelement(1, "i", 62);
198
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
195
+ i0.ɵɵelementStart(0, "div", 83);
196
+ i0.ɵɵelement(1, "i", 90);
197
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
199
198
  i0.ɵɵtext(4, "Response Format");
200
199
  i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(5, "div", 53);
200
+ i0.ɵɵelementStart(5, "div", 86);
202
201
  i0.ɵɵtext(6);
203
202
  i0.ɵɵelementEnd()()();
204
203
  } if (rf & 2) {
@@ -207,12 +206,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
207
206
  i0.ɵɵtextInterpolate(ctx_r1.record.ResponseFormat);
208
207
  } }
209
208
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_36_Template(rf, ctx) { if (rf & 1) {
210
- i0.ɵɵelementStart(0, "div", 50);
211
- i0.ɵɵelement(1, "i", 63);
212
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
209
+ i0.ɵɵelementStart(0, "div", 83);
210
+ i0.ɵɵelement(1, "i", 91);
211
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
213
212
  i0.ɵɵtext(4, "Started");
214
213
  i0.ɵɵelementEnd();
215
- i0.ɵɵelementStart(5, "div", 53);
214
+ i0.ɵɵelementStart(5, "div", 86);
216
215
  i0.ɵɵtext(6);
217
216
  i0.ɵɵpipe(7, "date");
218
217
  i0.ɵɵelementEnd()()();
@@ -223,46 +222,46 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditi
223
222
  } }
224
223
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template(rf, ctx) { if (rf & 1) {
225
224
  const _r7 = i0.ɵɵgetCurrentView();
226
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 50);
227
- i0.ɵɵelement(2, "i", 40);
228
- i0.ɵɵelementStart(3, "div", 51)(4, "div", 52);
225
+ i0.ɵɵelementStart(0, "div", 25)(1, "div", 83);
226
+ i0.ɵɵelement(2, "i", 73);
227
+ i0.ɵɵelementStart(3, "div", 84)(4, "div", 85);
229
228
  i0.ɵɵtext(5, "Configuration");
230
229
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(6, "div", 53)(7, "a", 54);
230
+ i0.ɵɵelementStart(6, "div", 86)(7, "a", 87);
232
231
  i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Configurations", ctx_r1.record.ConfigurationID)); });
233
232
  i0.ɵɵtext(8);
234
233
  i0.ɵɵelementEnd()()()();
235
- i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_9_Template, 7, 1, "div", 50);
236
- i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_10_Template, 7, 1, "div", 50);
237
- i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_11_Template, 7, 1, "div", 50);
238
- i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_12_Template, 7, 1, "div", 50);
239
- i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_13_Template, 7, 1, "div", 50);
240
- i0.ɵɵelementEnd();
241
- i0.ɵɵelementStart(14, "div", 25)(15, "div", 50);
242
- i0.ɵɵelement(16, "i", 55);
243
- i0.ɵɵelementStart(17, "div", 51)(18, "div", 52);
234
+ i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_9_Template, 7, 1, "div", 83);
235
+ i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_10_Template, 7, 1, "div", 83);
236
+ i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_11_Template, 7, 1, "div", 83);
237
+ i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_12_Template, 7, 1, "div", 83);
238
+ i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_13_Template, 7, 1, "div", 83);
239
+ i0.ɵɵelementEnd();
240
+ i0.ɵɵelementStart(14, "div", 25)(15, "div", 83);
241
+ i0.ɵɵelement(16, "i", 88);
242
+ i0.ɵɵelementStart(17, "div", 84)(18, "div", 85);
244
243
  i0.ɵɵtext(19, "Duration");
245
244
  i0.ɵɵelementEnd();
246
- i0.ɵɵelementStart(20, "div", 53);
245
+ i0.ɵɵelementStart(20, "div", 86);
247
246
  i0.ɵɵtext(21);
248
247
  i0.ɵɵelementEnd()()();
249
- i0.ɵɵelementStart(22, "div", 50);
250
- i0.ɵɵelement(23, "i", 56);
251
- i0.ɵɵelementStart(24, "div", 51)(25, "div", 52);
248
+ i0.ɵɵelementStart(22, "div", 83);
249
+ i0.ɵɵelement(23, "i", 41);
250
+ i0.ɵɵelementStart(24, "div", 84)(25, "div", 85);
252
251
  i0.ɵɵtext(26, "Total Tokens");
253
252
  i0.ɵɵelementEnd();
254
- i0.ɵɵelementStart(27, "div", 53);
253
+ i0.ɵɵelementStart(27, "div", 86);
255
254
  i0.ɵɵtext(28);
256
255
  i0.ɵɵelementEnd()()();
257
- i0.ɵɵelementStart(29, "div", 50);
258
- i0.ɵɵelement(30, "i", 57);
259
- i0.ɵɵelementStart(31, "div", 51)(32, "div", 52);
256
+ i0.ɵɵelementStart(29, "div", 83);
257
+ i0.ɵɵelement(30, "i", 42);
258
+ i0.ɵɵelementStart(31, "div", 84)(32, "div", 85);
260
259
  i0.ɵɵtext(33, "Cost");
261
260
  i0.ɵɵelementEnd();
262
- i0.ɵɵelementStart(34, "div", 53);
261
+ i0.ɵɵelementStart(34, "div", 86);
263
262
  i0.ɵɵtext(35);
264
263
  i0.ɵɵelementEnd()()();
265
- i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_36_Template, 8, 4, "div", 50);
264
+ i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_36_Template, 8, 4, "div", 83);
266
265
  i0.ɵɵelementEnd();
267
266
  } if (rf & 2) {
268
267
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -288,12 +287,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Templat
288
287
  i0.ɵɵconditional(ctx_r1.record.RunAt ? 36 : -1);
289
288
  } }
290
289
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditional_22_Template(rf, ctx) { if (rf & 1) {
291
- i0.ɵɵelementStart(0, "div", 50);
292
- i0.ɵɵelement(1, "i", 63);
293
- i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
290
+ i0.ɵɵelementStart(0, "div", 83);
291
+ i0.ɵɵelement(1, "i", 91);
292
+ i0.ɵɵelementStart(2, "div", 84)(3, "div", 85);
294
293
  i0.ɵɵtext(4, "Started");
295
294
  i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(5, "div", 53);
295
+ i0.ɵɵelementStart(5, "div", 86);
297
296
  i0.ɵɵtext(6);
298
297
  i0.ɵɵpipe(7, "date");
299
298
  i0.ɵɵelementEnd()()();
@@ -303,31 +302,31 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditi
303
302
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
304
303
  } }
305
304
  function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Template(rf, ctx) { if (rf & 1) {
306
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 50);
307
- i0.ɵɵelement(2, "i", 55);
308
- i0.ɵɵelementStart(3, "div", 51)(4, "div", 52);
305
+ i0.ɵɵelementStart(0, "div", 25)(1, "div", 83);
306
+ i0.ɵɵelement(2, "i", 88);
307
+ i0.ɵɵelementStart(3, "div", 84)(4, "div", 85);
309
308
  i0.ɵɵtext(5, "Duration");
310
309
  i0.ɵɵelementEnd();
311
- i0.ɵɵelementStart(6, "div", 53);
310
+ i0.ɵɵelementStart(6, "div", 86);
312
311
  i0.ɵɵtext(7);
313
312
  i0.ɵɵelementEnd()()();
314
- i0.ɵɵelementStart(8, "div", 50);
315
- i0.ɵɵelement(9, "i", 56);
316
- i0.ɵɵelementStart(10, "div", 51)(11, "div", 52);
313
+ i0.ɵɵelementStart(8, "div", 83);
314
+ i0.ɵɵelement(9, "i", 41);
315
+ i0.ɵɵelementStart(10, "div", 84)(11, "div", 85);
317
316
  i0.ɵɵtext(12, "Total Tokens");
318
317
  i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(13, "div", 53);
318
+ i0.ɵɵelementStart(13, "div", 86);
320
319
  i0.ɵɵtext(14);
321
320
  i0.ɵɵelementEnd()()();
322
- i0.ɵɵelementStart(15, "div", 50);
323
- i0.ɵɵelement(16, "i", 57);
324
- i0.ɵɵelementStart(17, "div", 51)(18, "div", 52);
321
+ i0.ɵɵelementStart(15, "div", 83);
322
+ i0.ɵɵelement(16, "i", 42);
323
+ i0.ɵɵelementStart(17, "div", 84)(18, "div", 85);
325
324
  i0.ɵɵtext(19, "Cost");
326
325
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(20, "div", 53);
326
+ i0.ɵɵelementStart(20, "div", 86);
328
327
  i0.ɵɵtext(21);
329
328
  i0.ɵɵelementEnd()()();
330
- i0.ɵɵconditionalCreate(22, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditional_22_Template, 8, 4, "div", 50);
329
+ i0.ɵɵconditionalCreate(22, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditional_22_Template, 8, 4, "div", 83);
331
330
  i0.ɵɵelementEnd();
332
331
  } if (rf & 2) {
333
332
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -340,185 +339,176 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Templat
340
339
  i0.ɵɵadvance();
341
340
  i0.ɵɵconditional(ctx_r1.record.RunAt ? 22 : -1);
342
341
  } }
343
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
344
- i0.ɵɵelementStart(0, "span", 66);
342
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_34_Conditional_3_Template(rf, ctx) { if (rf & 1) {
343
+ i0.ɵɵelementStart(0, "span", 94);
345
344
  i0.ɵɵtext(1, "JSON");
346
345
  i0.ɵɵelementEnd();
347
346
  } }
348
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Template(rf, ctx) { if (rf & 1) {
349
- i0.ɵɵelementStart(0, "span", 64);
350
- i0.ɵɵelement(1, "i", 65);
347
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_34_Template(rf, ctx) { if (rf & 1) {
348
+ i0.ɵɵelementStart(0, "span", 92);
349
+ i0.ɵɵelement(1, "i", 93);
351
350
  i0.ɵɵtext(2, " Input ");
352
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Conditional_3_Template, 2, 0, "span", 66);
351
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_34_Conditional_3_Template, 2, 0, "span", 94);
353
352
  i0.ɵɵelementEnd();
354
353
  } if (rf & 2) {
355
354
  const ctx_r1 = i0.ɵɵnextContext(2);
356
355
  i0.ɵɵadvance(3);
357
356
  i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 3 : -1);
358
357
  } }
359
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
360
- i0.ɵɵelementStart(0, "span", 84);
358
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
359
+ i0.ɵɵelementStart(0, "span", 107);
361
360
  i0.ɵɵtext(1);
362
361
  i0.ɵɵelementEnd();
363
362
  } if (rf & 2) {
364
- const ctx_r1 = i0.ɵɵnextContext(5);
363
+ const ctx_r1 = i0.ɵɵnextContext(4);
365
364
  i0.ɵɵadvance();
366
365
  i0.ɵɵtextInterpolate1("(", ctx_r1.chatMessages.length, ")");
367
366
  } }
368
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
369
- i0.ɵɵelementStart(0, "span", 82);
370
- i0.ɵɵelement(1, "i", 83);
367
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_2_Template(rf, ctx) { if (rf & 1) {
368
+ i0.ɵɵelementStart(0, "span", 105);
369
+ i0.ɵɵelement(1, "i", 106);
371
370
  i0.ɵɵtext(2, " Messages ");
372
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Conditional_3_Template, 2, 1, "span", 84);
371
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_2_Conditional_3_Template, 2, 1, "span", 107);
373
372
  i0.ɵɵelementEnd();
374
373
  } if (rf & 2) {
375
- const ctx_r1 = i0.ɵɵnextContext(4);
374
+ const ctx_r1 = i0.ɵɵnextContext(3);
376
375
  i0.ɵɵadvance(3);
377
376
  i0.ɵɵconditional(ctx_r1.chatMessages.length > 0 ? 3 : -1);
378
377
  } }
379
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
380
- i0.ɵɵelementStart(0, "div", 73);
381
- i0.ɵɵelement(1, "i", 85);
378
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
379
+ i0.ɵɵelementStart(0, "div", 97);
380
+ i0.ɵɵelement(1, "i", 108);
382
381
  i0.ɵɵelementStart(2, "p");
383
382
  i0.ɵɵtext(3, "Loading messages...");
384
383
  i0.ɵɵelementEnd()();
385
384
  } }
386
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
387
- i0.ɵɵelement(0, "mj-chat-message-viewer", 74);
385
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_5_Template(rf, ctx) { if (rf & 1) {
386
+ i0.ɵɵelement(0, "mj-chat-message-viewer", 98);
388
387
  } if (rf & 2) {
389
- const ctx_r1 = i0.ɵɵnextContext(4);
388
+ const ctx_r1 = i0.ɵɵnextContext(3);
390
389
  i0.ɵɵproperty("messages", ctx_r1.chatMessages);
391
390
  } }
392
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
393
- i0.ɵɵelementStart(0, "div", 69);
394
- i0.ɵɵelement(1, "i", 86);
391
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_6_Template(rf, ctx) { if (rf & 1) {
392
+ i0.ɵɵelementStart(0, "div", 31);
393
+ i0.ɵɵelement(1, "i", 109);
395
394
  i0.ɵɵelementStart(2, "p");
396
395
  i0.ɵɵtext(3, "No chat messages found");
397
396
  i0.ɵɵelementEnd()();
398
397
  } }
399
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
400
- i0.ɵɵelementStart(0, "span", 66);
398
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
399
+ i0.ɵɵelementStart(0, "span", 94);
401
400
  i0.ɵɵtext(1, "Object");
402
401
  i0.ɵɵelementEnd();
403
402
  } }
404
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Template(rf, ctx) { if (rf & 1) {
405
- i0.ɵɵelementStart(0, "span", 82);
406
- i0.ɵɵelement(1, "i", 87);
403
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_8_Template(rf, ctx) { if (rf & 1) {
404
+ i0.ɵɵelementStart(0, "span", 105);
405
+ i0.ɵɵelement(1, "i", 110);
407
406
  i0.ɵɵtext(2, " Data ");
408
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Conditional_3_Template, 2, 0, "span", 66);
407
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_8_Conditional_3_Template, 2, 0, "span", 94);
409
408
  i0.ɵɵelementEnd();
410
409
  } if (rf & 2) {
411
- const ctx_r1 = i0.ɵɵnextContext(4);
410
+ const ctx_r1 = i0.ɵɵnextContext(3);
412
411
  i0.ɵɵadvance(3);
413
412
  i0.ɵɵconditional(ctx_r1.inputData ? 3 : -1);
414
413
  } }
415
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
414
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_10_Template(rf, ctx) { if (rf & 1) {
416
415
  const _r9 = i0.ɵɵgetCurrentView();
417
- i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "button", 77);
418
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
419
- i0.ɵɵelement(3, "i", 78);
416
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 99)(2, "button", 100);
417
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
418
+ i0.ɵɵelement(3, "i", 101);
420
419
  i0.ɵɵtext(4, " Copy ");
421
420
  i0.ɵɵelementEnd();
422
- i0.ɵɵelementStart(5, "button", 79);
423
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
424
- i0.ɵɵelement(6, "i", 80);
421
+ i0.ɵɵelementStart(5, "button", 102);
422
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
423
+ i0.ɵɵelement(6, "i", 103);
425
424
  i0.ɵɵelementEnd()();
426
- i0.ɵɵelementStart(7, "mj-code-editor", 88);
427
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
425
+ i0.ɵɵelementStart(7, "mj-code-editor", 111);
426
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_10_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
428
427
  i0.ɵɵelementEnd()();
429
428
  } if (rf & 2) {
430
- const ctx_r1 = i0.ɵɵnextContext(4);
429
+ const ctx_r1 = i0.ɵɵnextContext(3);
431
430
  i0.ɵɵadvance(7);
432
431
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedData);
433
432
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
434
433
  } }
435
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
436
- i0.ɵɵelementStart(0, "div", 69);
437
- i0.ɵɵelement(1, "i", 87);
434
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_11_Template(rf, ctx) { if (rf & 1) {
435
+ i0.ɵɵelementStart(0, "div", 31);
436
+ i0.ɵɵelement(1, "i", 110);
438
437
  i0.ɵɵelementStart(2, "p");
439
438
  i0.ɵɵtext(3, "No data object found");
440
439
  i0.ɵɵelementEnd()();
441
440
  } }
442
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_13_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵelementStart(0, "span", 82);
444
- i0.ɵɵelement(1, "i", 62);
441
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_13_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵelementStart(0, "span", 105);
443
+ i0.ɵɵelement(1, "i", 90);
445
444
  i0.ɵɵtext(2, " Raw ");
446
445
  i0.ɵɵelementEnd();
447
446
  } }
448
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template(rf, ctx) { if (rf & 1) {
447
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Template(rf, ctx) { if (rf & 1) {
449
448
  const _r8 = i0.ɵɵgetCurrentView();
450
- i0.ɵɵelementStart(0, "div", 68)(1, "kendo-expansionpanel", 70);
451
- i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Template, 4, 1, "ng-template", 71);
452
- i0.ɵɵelementStart(3, "div", 72);
453
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_4_Template, 4, 0, "div", 73)(5, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 74)(6, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_6_Template, 4, 0, "div", 69);
454
- i0.ɵɵelementEnd()();
455
- i0.ɵɵelementStart(7, "kendo-expansionpanel", 70);
456
- i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Template, 4, 1, "ng-template", 71);
457
- i0.ɵɵelementStart(9, "div", 72);
458
- i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template, 8, 4, "div", 75)(11, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_11_Template, 4, 0, "div", 69);
459
- i0.ɵɵelementEnd()();
460
- i0.ɵɵelementStart(12, "kendo-expansionpanel", 70);
461
- i0.ɵɵtemplate(13, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_13_Template, 3, 0, "ng-template", 71);
462
- i0.ɵɵelementStart(14, "div", 72)(15, "div", 75)(16, "div", 76)(17, "button", 77);
463
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
464
- i0.ɵɵelement(18, "i", 78);
449
+ i0.ɵɵelementStart(0, "div", 30)(1, "mj-accordion-panel", 95);
450
+ i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_2_Template, 4, 1, "ng-template", 28);
451
+ i0.ɵɵelementStart(3, "div", 96);
452
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_4_Template, 4, 0, "div", 97)(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 98)(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_6_Template, 4, 0, "div", 31);
453
+ i0.ɵɵelementEnd()();
454
+ i0.ɵɵelementStart(7, "mj-accordion-panel", 95);
455
+ i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_8_Template, 4, 1, "ng-template", 28);
456
+ i0.ɵɵelementStart(9, "div", 96);
457
+ i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_10_Template, 8, 4, "div", 33)(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Conditional_11_Template, 4, 0, "div", 31);
458
+ i0.ɵɵelementEnd()();
459
+ i0.ɵɵelementStart(12, "mj-accordion-panel", 95);
460
+ i0.ɵɵtemplate(13, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_ng_template_13_Template, 3, 0, "ng-template", 28);
461
+ i0.ɵɵelementStart(14, "div", 96)(15, "div", 33)(16, "div", 99)(17, "button", 100);
462
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
463
+ i0.ɵɵelement(18, "i", 101);
465
464
  i0.ɵɵtext(19, " Copy ");
466
465
  i0.ɵɵelementEnd();
467
- i0.ɵɵelementStart(20, "button", 79);
468
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
469
- i0.ɵɵelement(21, "i", 80);
466
+ i0.ɵɵelementStart(20, "button", 102);
467
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
468
+ i0.ɵɵelement(21, "i", 103);
470
469
  i0.ɵɵelementEnd()();
471
- i0.ɵɵelementStart(22, "mj-code-editor", 81);
472
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_mj_code_editor_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
470
+ i0.ɵɵelementStart(22, "mj-code-editor", 104);
471
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Template_mj_code_editor_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
473
472
  i0.ɵɵelementEnd()()()()();
474
473
  } if (rf & 2) {
475
- const ctx_r1 = i0.ɵɵnextContext(3);
474
+ const ctx_r1 = i0.ɵɵnextContext(2);
476
475
  i0.ɵɵadvance();
477
- i0.ɵɵproperty("expanded", ctx_r1.messagesExpanded)("animation", false);
476
+ i0.ɵɵproperty("Expanded", ctx_r1.messagesExpanded);
478
477
  i0.ɵɵadvance(3);
479
478
  i0.ɵɵconditional(ctx_r1.isParsingMessages || ctx_r1.isLoadingRelatedData ? 4 : ctx_r1.chatMessages.length > 0 ? 5 : 6);
480
479
  i0.ɵɵadvance(3);
481
- i0.ɵɵproperty("expanded", ctx_r1.dataExpanded)("animation", false);
480
+ i0.ɵɵproperty("Expanded", ctx_r1.dataExpanded);
482
481
  i0.ɵɵadvance(3);
483
482
  i0.ɵɵconditional(ctx_r1.inputData && ctx_r1.formattedData ? 10 : 11);
484
483
  i0.ɵɵadvance(2);
485
- i0.ɵɵproperty("expanded", ctx_r1.rawExpanded)("animation", false);
484
+ i0.ɵɵproperty("Expanded", ctx_r1.rawExpanded);
486
485
  i0.ɵɵadvance(10);
487
486
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedMessages);
488
487
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
489
488
  } }
490
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_2_Template(rf, ctx) { if (rf & 1) {
491
- i0.ɵɵelementStart(0, "div", 69);
492
- i0.ɵɵelement(1, "i", 86);
489
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_37_Template(rf, ctx) { if (rf & 1) {
490
+ i0.ɵɵelementStart(0, "div", 31);
491
+ i0.ɵɵelement(1, "i", 109);
493
492
  i0.ɵɵelementStart(2, "p");
494
493
  i0.ɵɵtext(3, "No input messages recorded");
495
494
  i0.ɵɵelementEnd()();
496
495
  } }
497
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Template(rf, ctx) { if (rf & 1) {
498
- i0.ɵɵelementStart(0, "div", 67);
499
- i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template, 23, 12, "div", 68)(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_2_Template, 4, 0, "div", 69);
500
- i0.ɵɵelementEnd();
501
- } if (rf & 2) {
502
- const ctx_r1 = i0.ɵɵnextContext(2);
503
- i0.ɵɵadvance();
504
- i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 1 : 2);
505
- } }
506
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
507
- i0.ɵɵelementStart(0, "span", 66);
496
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
497
+ i0.ɵɵelementStart(0, "span", 94);
508
498
  i0.ɵɵtext(1, "JSON");
509
499
  i0.ɵɵelementEnd();
510
500
  } }
511
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
512
- i0.ɵɵelementStart(0, "span", 90);
501
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
502
+ i0.ɵɵelementStart(0, "span", 113);
513
503
  i0.ɵɵtext(1, "Error");
514
504
  i0.ɵɵelementEnd();
515
505
  } }
516
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Template(rf, ctx) { if (rf & 1) {
517
- i0.ɵɵelementStart(0, "span", 64);
518
- i0.ɵɵelement(1, "i", 89);
506
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template(rf, ctx) { if (rf & 1) {
507
+ i0.ɵɵelementStart(0, "span", 92);
508
+ i0.ɵɵelement(1, "i", 112);
519
509
  i0.ɵɵtext(2, " Result ");
520
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_3_Template, 2, 0, "span", 66);
521
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_4_Template, 2, 0, "span", 90);
510
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template, 2, 0, "span", 94);
511
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_4_Template, 2, 0, "span", 113);
522
512
  i0.ɵɵelementEnd();
523
513
  } if (rf & 2) {
524
514
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -527,80 +517,80 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Templat
527
517
  i0.ɵɵadvance();
528
518
  i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 4 : -1);
529
519
  } }
530
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_1_Template(rf, ctx) { if (rf & 1) {
531
- i0.ɵɵelementStart(0, "div", 91);
532
- i0.ɵɵelement(1, "i", 92);
533
- i0.ɵɵelementStart(2, "div", 93)(3, "h4");
520
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
521
+ i0.ɵɵelementStart(0, "div", 32);
522
+ i0.ɵɵelement(1, "i", 114);
523
+ i0.ɵɵelementStart(2, "div", 115)(3, "h4");
534
524
  i0.ɵɵtext(4, "Error Message");
535
525
  i0.ɵɵelementEnd();
536
526
  i0.ɵɵelementStart(5, "p");
537
527
  i0.ɵɵtext(6);
538
528
  i0.ɵɵelementEnd()()();
539
529
  } if (rf & 2) {
540
- const ctx_r1 = i0.ɵɵnextContext(3);
530
+ const ctx_r1 = i0.ɵɵnextContext(2);
541
531
  i0.ɵɵadvance(6);
542
532
  i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
543
533
  } }
544
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template(rf, ctx) { if (rf & 1) {
534
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
545
535
  const _r10 = i0.ɵɵgetCurrentView();
546
- i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "button", 77);
547
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
548
- i0.ɵɵelement(3, "i", 78);
536
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 99)(2, "button", 100);
537
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_42_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
538
+ i0.ɵɵelement(3, "i", 101);
549
539
  i0.ɵɵtext(4, " Copy ");
550
540
  i0.ɵɵelementEnd();
551
- i0.ɵɵelementStart(5, "button", 79);
552
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
553
- i0.ɵɵelement(6, "i", 80);
541
+ i0.ɵɵelementStart(5, "button", 102);
542
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_42_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
543
+ i0.ɵɵelement(6, "i", 103);
554
544
  i0.ɵɵelementEnd()();
555
- i0.ɵɵelementStart(7, "mj-code-editor", 94);
556
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
545
+ i0.ɵɵelementStart(7, "mj-code-editor", 116);
546
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_42_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
557
547
  i0.ɵɵelementEnd()();
558
548
  } if (rf & 2) {
559
- const ctx_r1 = i0.ɵɵnextContext(3);
549
+ const ctx_r1 = i0.ɵɵnextContext(2);
560
550
  i0.ɵɵadvance(7);
561
551
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedResult);
562
552
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
563
553
  } }
564
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
565
- i0.ɵɵelementStart(0, "p", 97)(1, "strong");
554
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
555
+ i0.ɵɵelementStart(0, "p", 119)(1, "strong");
566
556
  i0.ɵɵtext(2, "Status:");
567
557
  i0.ɵɵelementEnd();
568
558
  i0.ɵɵtext(3);
569
559
  i0.ɵɵelementEnd();
570
560
  } if (rf & 2) {
571
- const ctx_r1 = i0.ɵɵnextContext(5);
561
+ const ctx_r1 = i0.ɵɵnextContext(4);
572
562
  i0.ɵɵadvance(3);
573
563
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
574
564
  } }
575
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
565
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
576
566
  const _r11 = i0.ɵɵgetCurrentView();
577
- i0.ɵɵelementStart(0, "div", 98)(1, "div", 76)(2, "h4", 100);
567
+ i0.ɵɵelementStart(0, "div", 120)(1, "div", 99)(2, "h4", 122);
578
568
  i0.ɵɵtext(3, "Error Details");
579
569
  i0.ɵɵelementEnd();
580
- i0.ɵɵelementStart(4, "button", 79);
581
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
582
- i0.ɵɵelement(5, "i", 80);
570
+ i0.ɵɵelementStart(4, "button", 102);
571
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
572
+ i0.ɵɵelement(5, "i", 103);
583
573
  i0.ɵɵelementEnd()();
584
- i0.ɵɵelement(6, "mj-code-editor", 101);
574
+ i0.ɵɵelement(6, "mj-code-editor", 123);
585
575
  i0.ɵɵelementEnd();
586
576
  } if (rf & 2) {
587
- const ctx_r1 = i0.ɵɵnextContext(5);
577
+ const ctx_r1 = i0.ɵɵnextContext(4);
588
578
  i0.ɵɵadvance(6);
589
579
  i0.ɵɵproperty("ngModel", ctx_r1.formattedErrorDetails)("disabled", true)("language", "json")("lineWrapping", true);
590
580
  } }
591
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
592
- i0.ɵɵelementStart(0, "p", 99);
581
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
582
+ i0.ɵɵelementStart(0, "p", 121);
593
583
  i0.ɵɵtext(1, " The prompt execution failed but no additional error information is available. ");
594
584
  i0.ɵɵelementEnd();
595
585
  } }
596
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
597
- i0.ɵɵelementStart(0, "div", 96);
598
- i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_1_Template, 4, 1, "p", 97);
599
- i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template, 7, 4, "div", 98);
600
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_3_Template, 2, 0, "p", 99);
586
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
587
+ i0.ɵɵelementStart(0, "div", 118);
588
+ i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1, "p", 119);
589
+ i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_2_Template, 7, 4, "div", 120);
590
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_3_Template, 2, 0, "p", 121);
601
591
  i0.ɵɵelementEnd();
602
592
  } if (rf & 2) {
603
- const ctx_r1 = i0.ɵɵnextContext(4);
593
+ const ctx_r1 = i0.ɵɵnextContext(3);
604
594
  i0.ɵɵadvance();
605
595
  i0.ɵɵconditional(ctx_r1.record.Status ? 1 : -1);
606
596
  i0.ɵɵadvance();
@@ -608,234 +598,141 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
608
598
  i0.ɵɵadvance();
609
599
  i0.ɵɵconditional(!ctx_r1.formattedErrorDetails ? 3 : -1);
610
600
  } }
611
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
612
- i0.ɵɵelementStart(0, "div", 69);
613
- i0.ɵɵelement(1, "i", 95);
601
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template(rf, ctx) { if (rf & 1) {
602
+ i0.ɵɵelementStart(0, "div", 31);
603
+ i0.ɵɵelement(1, "i", 117);
614
604
  i0.ɵɵelementStart(2, "p");
615
605
  i0.ɵɵtext(3, "No result data recorded");
616
606
  i0.ɵɵelementEnd();
617
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Template, 4, 3, "div", 96);
607
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template, 4, 3, "div", 118);
618
608
  i0.ɵɵelementEnd();
619
609
  } if (rf & 2) {
620
- const ctx_r1 = i0.ɵɵnextContext(3);
610
+ const ctx_r1 = i0.ɵɵnextContext(2);
621
611
  i0.ɵɵadvance(4);
622
612
  i0.ɵɵconditional(ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false ? 4 : -1);
623
613
  } }
624
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template(rf, ctx) { if (rf & 1) {
625
- i0.ɵɵelementStart(0, "div", 67);
626
- i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_1_Template, 7, 1, "div", 91);
627
- i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template, 8, 4, "div", 75)(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template, 5, 1, "div", 69);
628
- i0.ɵɵelementEnd();
629
- } if (rf & 2) {
630
- const ctx_r1 = i0.ɵɵnextContext(2);
631
- i0.ɵɵadvance();
632
- i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 1 : -1);
633
- i0.ɵɵadvance();
634
- i0.ɵɵconditional(ctx_r1.record.Result && ctx_r1.record.Result.trim() !== "" ? 2 : !ctx_r1.record.ErrorMessage ? 3 : -1);
635
- } }
636
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_41_Template(rf, ctx) { if (rf & 1) {
637
- i0.ɵɵelementStart(0, "span", 64);
638
- i0.ɵɵelement(1, "i", 102);
614
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_45_Template(rf, ctx) { if (rf & 1) {
615
+ i0.ɵɵelementStart(0, "span", 92);
616
+ i0.ɵɵelement(1, "i", 124);
639
617
  i0.ɵɵtext(2, " Token Usage & Metrics ");
640
618
  i0.ɵɵelementEnd();
641
619
  } }
642
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_9_Template(rf, ctx) { if (rf & 1) {
643
- i0.ɵɵelementStart(0, "div", 108)(1, "span");
620
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_55_Template(rf, ctx) { if (rf & 1) {
621
+ i0.ɵɵelementStart(0, "div", 39)(1, "span");
644
622
  i0.ɵɵtext(2);
645
623
  i0.ɵɵelementEnd()();
646
624
  } if (rf & 2) {
647
- const ctx_r1 = i0.ɵɵnextContext(3);
625
+ const ctx_r1 = i0.ɵɵnextContext(2);
648
626
  i0.ɵɵadvance(2);
649
627
  i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensPromptRollup));
650
628
  } }
651
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_17_Template(rf, ctx) { if (rf & 1) {
652
- i0.ɵɵelementStart(0, "div", 108)(1, "span");
629
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_63_Template(rf, ctx) { if (rf & 1) {
630
+ i0.ɵɵelementStart(0, "div", 39)(1, "span");
653
631
  i0.ɵɵtext(2);
654
632
  i0.ɵɵelementEnd()();
655
633
  } if (rf & 2) {
656
- const ctx_r1 = i0.ɵɵnextContext(3);
634
+ const ctx_r1 = i0.ɵɵnextContext(2);
657
635
  i0.ɵɵadvance(2);
658
636
  i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensCompletionRollup));
659
637
  } }
660
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_25_Template(rf, ctx) { if (rf & 1) {
661
- i0.ɵɵelementStart(0, "div", 108)(1, "span");
638
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_71_Template(rf, ctx) { if (rf & 1) {
639
+ i0.ɵɵelementStart(0, "div", 39)(1, "span");
662
640
  i0.ɵɵtext(2);
663
641
  i0.ɵɵelementEnd()();
664
642
  } if (rf & 2) {
665
- const ctx_r1 = i0.ɵɵnextContext(3);
643
+ const ctx_r1 = i0.ɵɵnextContext(2);
666
644
  i0.ɵɵadvance(2);
667
645
  i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensUsedRollup));
668
646
  } }
669
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_33_Template(rf, ctx) { if (rf & 1) {
670
- i0.ɵɵelementStart(0, "div", 108)(1, "span");
647
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_79_Template(rf, ctx) { if (rf & 1) {
648
+ i0.ɵɵelementStart(0, "div", 39)(1, "span");
671
649
  i0.ɵɵtext(2);
672
650
  i0.ɵɵelementEnd()();
673
651
  } if (rf & 2) {
674
- const ctx_r1 = i0.ɵɵnextContext(3);
652
+ const ctx_r1 = i0.ɵɵnextContext(2);
675
653
  i0.ɵɵadvance(2);
676
654
  i0.ɵɵtextInterpolate1("Total: ", ctx_r1.formatCost(ctx_r1.record.TotalCost));
677
655
  } }
678
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_34_Template(rf, ctx) { if (rf & 1) {
679
- i0.ɵɵelementStart(0, "div", 110);
656
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_80_Template(rf, ctx) { if (rf & 1) {
657
+ i0.ɵɵelementStart(0, "div", 43);
680
658
  i0.ɵɵtext(1);
681
659
  i0.ɵɵelementEnd();
682
660
  } if (rf & 2) {
683
- const ctx_r1 = i0.ɵɵnextContext(3);
661
+ const ctx_r1 = i0.ɵɵnextContext(2);
684
662
  i0.ɵɵadvance();
685
663
  i0.ɵɵtextInterpolate(ctx_r1.record.CostCurrency);
686
664
  } }
687
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_35_Template(rf, ctx) { if (rf & 1) {
688
- i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
689
- i0.ɵɵelement(2, "i", 113);
665
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_81_Template(rf, ctx) { if (rf & 1) {
666
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
667
+ i0.ɵɵelement(2, "i", 125);
690
668
  i0.ɵɵelementStart(3, "h4");
691
669
  i0.ɵɵtext(4, "Queue Time");
692
670
  i0.ɵɵelementEnd()();
693
- i0.ɵɵelementStart(5, "div", 107);
671
+ i0.ɵɵelementStart(5, "div", 38);
694
672
  i0.ɵɵtext(6);
695
673
  i0.ɵɵelementEnd()();
696
674
  } if (rf & 2) {
697
- const ctx_r1 = i0.ɵɵnextContext(3);
675
+ const ctx_r1 = i0.ɵɵnextContext(2);
698
676
  i0.ɵɵadvance(6);
699
677
  i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.QueueTime));
700
678
  } }
701
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_36_Template(rf, ctx) { if (rf & 1) {
702
- i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
703
- i0.ɵɵelement(2, "i", 114);
679
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_82_Template(rf, ctx) { if (rf & 1) {
680
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
681
+ i0.ɵɵelement(2, "i", 126);
704
682
  i0.ɵɵelementStart(3, "h4");
705
683
  i0.ɵɵtext(4, "Prompt Time");
706
684
  i0.ɵɵelementEnd()();
707
- i0.ɵɵelementStart(5, "div", 107);
685
+ i0.ɵɵelementStart(5, "div", 38);
708
686
  i0.ɵɵtext(6);
709
687
  i0.ɵɵelementEnd()();
710
688
  } if (rf & 2) {
711
- const ctx_r1 = i0.ɵɵnextContext(3);
689
+ const ctx_r1 = i0.ɵɵnextContext(2);
712
690
  i0.ɵɵadvance(6);
713
691
  i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.PromptTime));
714
692
  } }
715
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_37_Template(rf, ctx) { if (rf & 1) {
716
- i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
717
- i0.ɵɵelement(2, "i", 115);
693
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_83_Template(rf, ctx) { if (rf & 1) {
694
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
695
+ i0.ɵɵelement(2, "i", 127);
718
696
  i0.ɵɵelementStart(3, "h4");
719
697
  i0.ɵɵtext(4, "Completion Time");
720
698
  i0.ɵɵelementEnd()();
721
- i0.ɵɵelementStart(5, "div", 107);
699
+ i0.ɵɵelementStart(5, "div", 38);
722
700
  i0.ɵɵtext(6);
723
701
  i0.ɵɵelementEnd()();
724
702
  } if (rf & 2) {
725
- const ctx_r1 = i0.ɵɵnextContext(3);
703
+ const ctx_r1 = i0.ɵɵnextContext(2);
726
704
  i0.ɵɵadvance(6);
727
705
  i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.CompletionTime));
728
706
  } }
729
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_39_Template(rf, ctx) { if (rf & 1) {
730
- i0.ɵɵelementStart(0, "div", 112)(1, "span", 52);
707
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_85_Template(rf, ctx) { if (rf & 1) {
708
+ i0.ɵɵelementStart(0, "div", 45)(1, "span", 85);
731
709
  i0.ɵɵtext(2, "Execution Order:");
732
710
  i0.ɵɵelementEnd();
733
- i0.ɵɵelementStart(3, "span", 53);
711
+ i0.ɵɵelementStart(3, "span", 86);
734
712
  i0.ɵɵtext(4);
735
713
  i0.ɵɵelementEnd()();
736
714
  } if (rf & 2) {
737
- const ctx_r1 = i0.ɵɵnextContext(3);
715
+ const ctx_r1 = i0.ɵɵnextContext(2);
738
716
  i0.ɵɵadvance(4);
739
717
  i0.ɵɵtextInterpolate(ctx_r1.record.ExecutionOrder);
740
718
  } }
741
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template(rf, ctx) { if (rf & 1) {
719
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_86_Template(rf, ctx) { if (rf & 1) {
742
720
  const _r12 = i0.ɵɵgetCurrentView();
743
- i0.ɵɵelementStart(0, "div", 112)(1, "span", 52);
721
+ i0.ɵɵelementStart(0, "div", 45)(1, "span", 85);
744
722
  i0.ɵɵtext(2, "Agent:");
745
723
  i0.ɵɵelementEnd();
746
- i0.ɵɵelementStart(3, "span", 116);
747
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
724
+ i0.ɵɵelementStart(3, "span", 128);
725
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_86_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
748
726
  i0.ɵɵtext(4);
749
- i0.ɵɵelement(5, "i", 117);
727
+ i0.ɵɵelement(5, "i", 129);
750
728
  i0.ɵɵelementEnd()();
751
729
  } if (rf & 2) {
752
- const ctx_r1 = i0.ɵɵnextContext(3);
730
+ const ctx_r1 = i0.ɵɵnextContext(2);
753
731
  i0.ɵɵadvance(4);
754
732
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent, " ");
755
733
  } }
756
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Template(rf, ctx) { if (rf & 1) {
757
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 103)(2, "div", 104)(3, "div", 105);
758
- i0.ɵɵelement(4, "i", 106);
759
- i0.ɵɵelementStart(5, "h4");
760
- i0.ɵɵtext(6, "Prompt Tokens");
761
- i0.ɵɵelementEnd()();
762
- i0.ɵɵelementStart(7, "div", 107);
763
- i0.ɵɵtext(8);
764
- i0.ɵɵelementEnd();
765
- i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_9_Template, 3, 1, "div", 108);
766
- i0.ɵɵelementEnd();
767
- i0.ɵɵelementStart(10, "div", 104)(11, "div", 105);
768
- i0.ɵɵelement(12, "i", 109);
769
- i0.ɵɵelementStart(13, "h4");
770
- i0.ɵɵtext(14, "Completion Tokens");
771
- i0.ɵɵelementEnd()();
772
- i0.ɵɵelementStart(15, "div", 107);
773
- i0.ɵɵtext(16);
774
- i0.ɵɵelementEnd();
775
- i0.ɵɵconditionalCreate(17, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_17_Template, 3, 1, "div", 108);
776
- i0.ɵɵelementEnd();
777
- i0.ɵɵelementStart(18, "div", 104)(19, "div", 105);
778
- i0.ɵɵelement(20, "i", 56);
779
- i0.ɵɵelementStart(21, "h4");
780
- i0.ɵɵtext(22, "Total Tokens");
781
- i0.ɵɵelementEnd()();
782
- i0.ɵɵelementStart(23, "div", 107);
783
- i0.ɵɵtext(24);
784
- i0.ɵɵelementEnd();
785
- i0.ɵɵconditionalCreate(25, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_25_Template, 3, 1, "div", 108);
786
- i0.ɵɵelementEnd();
787
- i0.ɵɵelementStart(26, "div", 104)(27, "div", 105);
788
- i0.ɵɵelement(28, "i", 57);
789
- i0.ɵɵelementStart(29, "h4");
790
- i0.ɵɵtext(30, "Cost");
791
- i0.ɵɵelementEnd()();
792
- i0.ɵɵelementStart(31, "div", 107);
793
- i0.ɵɵtext(32);
794
- i0.ɵɵelementEnd();
795
- i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_33_Template, 3, 1, "div", 108);
796
- i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_34_Template, 2, 1, "div", 110);
797
- i0.ɵɵelementEnd();
798
- i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_35_Template, 7, 1, "div", 104);
799
- i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_36_Template, 7, 1, "div", 104);
800
- i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_37_Template, 7, 1, "div", 104);
801
- i0.ɵɵelementEnd();
802
- i0.ɵɵelementStart(38, "div", 111);
803
- i0.ɵɵconditionalCreate(39, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_39_Template, 5, 1, "div", 112);
804
- i0.ɵɵconditionalCreate(40, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template, 6, 1, "div", 112);
805
- i0.ɵɵelementEnd()();
806
- } if (rf & 2) {
807
- const ctx_r1 = i0.ɵɵnextContext(2);
808
- i0.ɵɵadvance(8);
809
- i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensPrompt));
810
- i0.ɵɵadvance();
811
- i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ? 9 : -1);
812
- i0.ɵɵadvance(7);
813
- i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCompletion));
814
- i0.ɵɵadvance();
815
- i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ? 17 : -1);
816
- i0.ɵɵadvance(7);
817
- i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensUsed));
818
- i0.ɵɵadvance();
819
- i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ? 25 : -1);
820
- i0.ɵɵadvance(7);
821
- i0.ɵɵtextInterpolate(ctx_r1.formatCost(ctx_r1.record.Cost));
822
- i0.ɵɵadvance();
823
- i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ? 33 : -1);
824
- i0.ɵɵadvance();
825
- i0.ɵɵconditional(ctx_r1.record.CostCurrency ? 34 : -1);
826
- i0.ɵɵadvance();
827
- i0.ɵɵconditional(ctx_r1.record.QueueTime != null ? 35 : -1);
828
- i0.ɵɵadvance();
829
- i0.ɵɵconditional(ctx_r1.record.PromptTime != null ? 36 : -1);
830
- i0.ɵɵadvance();
831
- i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ? 37 : -1);
832
- i0.ɵɵadvance(2);
833
- i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ? 39 : -1);
834
- i0.ɵɵadvance();
835
- i0.ɵɵconditional(ctx_r1.record.AgentID ? 40 : -1);
836
- } }
837
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
838
- i0.ɵɵelementStart(0, "span", 84);
734
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
735
+ i0.ɵɵelementStart(0, "span", 107);
839
736
  i0.ɵɵtext(1);
840
737
  i0.ɵɵelementEnd();
841
738
  } if (rf & 2) {
@@ -843,22 +740,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
843
740
  i0.ɵɵadvance();
844
741
  i0.ɵɵtextInterpolate1("(", ctx_r1.record.ValidationAttemptCount, " attempts)");
845
742
  } }
846
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
847
- i0.ɵɵelementStart(0, "span", 119);
743
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
744
+ i0.ɵɵelementStart(0, "span", 141);
848
745
  i0.ɵɵtext(1, "Passed");
849
746
  i0.ɵɵelementEnd();
850
747
  } }
851
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
852
- i0.ɵɵelementStart(0, "span", 90);
748
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
749
+ i0.ɵɵelementStart(0, "span", 113);
853
750
  i0.ɵɵtext(1, "Failed");
854
751
  i0.ɵɵelementEnd();
855
752
  } }
856
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
857
- i0.ɵɵelementStart(0, "span", 64);
858
- i0.ɵɵelement(1, "i", 118);
753
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Template(rf, ctx) { if (rf & 1) {
754
+ i0.ɵɵelementStart(0, "span", 92);
755
+ i0.ɵɵelement(1, "i", 140);
859
756
  i0.ɵɵtext(2, " Validation & Retries ");
860
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 84);
861
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_4_Template, 2, 0, "span", 119)(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_5_Template, 2, 0, "span", 90);
757
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_3_Template, 2, 1, "span", 107);
758
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_4_Template, 2, 0, "span", 141)(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Conditional_5_Template, 2, 0, "span", 113);
862
759
  i0.ɵɵelementEnd();
863
760
  } if (rf & 2) {
864
761
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -867,68 +764,68 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
867
764
  i0.ɵɵadvance();
868
765
  i0.ɵɵconditional(ctx_r1.record.FinalValidationPassed ? 4 : ctx_r1.record.FinalValidationPassed === false ? 5 : -1);
869
766
  } }
870
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Conditional_6_Template(rf, ctx) { if (rf & 1) {
871
- i0.ɵɵelementStart(0, "span", 130);
767
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_31_Conditional_6_Template(rf, ctx) { if (rf & 1) {
768
+ i0.ɵɵelementStart(0, "span", 142);
872
769
  i0.ɵɵtext(1);
873
770
  i0.ɵɵelementEnd();
874
771
  } if (rf & 2) {
875
- const ctx_r1 = i0.ɵɵnextContext(5);
772
+ const ctx_r1 = i0.ɵɵnextContext(4);
876
773
  i0.ɵɵadvance();
877
774
  i0.ɵɵtextInterpolate1("", ctx_r1.record.ValidationErrorCount, " validation errors");
878
775
  } }
879
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
880
- i0.ɵɵelementStart(0, "div", 125)(1, "h5");
881
- i0.ɵɵelement(2, "i", 92);
776
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_31_Template(rf, ctx) { if (rf & 1) {
777
+ i0.ɵɵelementStart(0, "div", 135)(1, "h5");
778
+ i0.ɵɵelement(2, "i", 114);
882
779
  i0.ɵɵtext(3, " Final Validation Error");
883
780
  i0.ɵɵelementEnd();
884
781
  i0.ɵɵelementStart(4, "p");
885
782
  i0.ɵɵtext(5);
886
783
  i0.ɵɵelementEnd();
887
- i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Conditional_6_Template, 2, 1, "span", 130);
784
+ i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_31_Conditional_6_Template, 2, 1, "span", 142);
888
785
  i0.ɵɵelementEnd();
889
786
  } if (rf & 2) {
890
- const ctx_r1 = i0.ɵɵnextContext(4);
787
+ const ctx_r1 = i0.ɵɵnextContext(3);
891
788
  i0.ɵɵadvance(5);
892
789
  i0.ɵɵtextInterpolate(ctx_r1.record.FinalValidationError);
893
790
  i0.ɵɵadvance();
894
791
  i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationErrorCount && ctx_r1.record.ValidationErrorCount > 0 ? 6 : -1);
895
792
  } }
896
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
897
- i0.ɵɵelementStart(0, "div", 126)(1, "h5");
898
- i0.ɵɵelement(2, "i", 131);
793
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_32_Template(rf, ctx) { if (rf & 1) {
794
+ i0.ɵɵelementStart(0, "div", 136)(1, "h5");
795
+ i0.ɵɵelement(2, "i", 54);
899
796
  i0.ɵɵtext(3, " Most Common Error");
900
797
  i0.ɵɵelementEnd();
901
798
  i0.ɵɵelementStart(4, "p");
902
799
  i0.ɵɵtext(5);
903
800
  i0.ɵɵelementEnd()();
904
801
  } if (rf & 2) {
905
- const ctx_r1 = i0.ɵɵnextContext(4);
802
+ const ctx_r1 = i0.ɵɵnextContext(3);
906
803
  i0.ɵɵadvance(5);
907
804
  i0.ɵɵtextInterpolate(ctx_r1.record.CommonValidationError);
908
805
  } }
909
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
910
- i0.ɵɵelementStart(0, "div", 127)(1, "h4");
806
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_33_Template(rf, ctx) { if (rf & 1) {
807
+ i0.ɵɵelementStart(0, "div", 137)(1, "h4");
911
808
  i0.ɵɵtext(2, "Retry Timeline");
912
809
  i0.ɵɵelementEnd();
913
- i0.ɵɵelementStart(3, "div", 132)(4, "div", 133);
914
- i0.ɵɵelement(5, "i", 55);
810
+ i0.ɵɵelementStart(3, "div", 143)(4, "div", 144);
811
+ i0.ɵɵelement(5, "i", 88);
915
812
  i0.ɵɵelementStart(6, "span");
916
813
  i0.ɵɵtext(7);
917
814
  i0.ɵɵpipe(8, "date");
918
815
  i0.ɵɵelementEnd()();
919
- i0.ɵɵelementStart(9, "div", 133);
920
- i0.ɵɵelement(10, "i", 115);
816
+ i0.ɵɵelementStart(9, "div", 144);
817
+ i0.ɵɵelement(10, "i", 127);
921
818
  i0.ɵɵelementStart(11, "span");
922
819
  i0.ɵɵtext(12);
923
820
  i0.ɵɵpipe(13, "date");
924
821
  i0.ɵɵelementEnd()();
925
- i0.ɵɵelementStart(14, "div", 133);
926
- i0.ɵɵelement(15, "i", 134);
822
+ i0.ɵɵelementStart(14, "div", 144);
823
+ i0.ɵɵelement(15, "i", 145);
927
824
  i0.ɵɵelementStart(16, "span");
928
825
  i0.ɵɵtext(17);
929
826
  i0.ɵɵelementEnd()()()();
930
827
  } if (rf & 2) {
931
- const ctx_r1 = i0.ɵɵnextContext(4);
828
+ const ctx_r1 = i0.ɵɵnextContext(3);
932
829
  i0.ɵɵadvance(7);
933
830
  i0.ɵɵtextInterpolate1("First Attempt: ", i0.ɵɵpipeBind2(8, 3, ctx_r1.record.FirstAttemptAt, "short"));
934
831
  i0.ɵɵadvance(5);
@@ -936,8 +833,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
936
833
  i0.ɵɵadvance(5);
937
834
  i0.ɵɵtextInterpolate1("Total Retry Duration: ", ctx_r1.formatDuration(ctx_r1.record.TotalRetryDurationMS));
938
835
  } }
939
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
940
- i0.ɵɵelementStart(0, "span", 130);
836
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
837
+ i0.ɵɵelementStart(0, "span", 142);
941
838
  i0.ɵɵtext(1);
942
839
  i0.ɵɵelementEnd();
943
840
  } if (rf & 2) {
@@ -945,11 +842,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
945
842
  i0.ɵɵadvance();
946
843
  i0.ɵɵtextInterpolate1("(", attempt_r14.validationErrorCount, " errors)");
947
844
  } }
948
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
949
- i0.ɵɵelementStart(0, "span", 142);
845
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
846
+ i0.ɵɵelementStart(0, "span", 153);
950
847
  i0.ɵɵtext(1);
951
848
  i0.ɵɵelementEnd();
952
- i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 130);
849
+ i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 142);
953
850
  } if (rf & 2) {
954
851
  const attempt_r14 = i0.ɵɵnextContext().$implicit;
955
852
  i0.ɵɵadvance();
@@ -957,8 +854,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
957
854
  i0.ɵɵadvance();
958
855
  i0.ɵɵconditional(attempt_r14.validationErrorCount > 0 ? 2 : -1);
959
856
  } }
960
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
961
- i0.ɵɵelementStart(0, "span", 141);
857
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
858
+ i0.ɵɵelementStart(0, "span", 152);
962
859
  i0.ɵɵtext(1);
963
860
  i0.ɵɵelementEnd();
964
861
  } if (rf & 2) {
@@ -966,16 +863,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
966
863
  i0.ɵɵadvance();
967
864
  i0.ɵɵtextInterpolate1("Output: ", attempt_r14.outputLength, " chars");
968
865
  } }
969
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Template(rf, ctx) { if (rf & 1) {
970
- i0.ɵɵelementStart(0, "div", 137)(1, "div", 138);
866
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Template(rf, ctx) { if (rf & 1) {
867
+ i0.ɵɵelementStart(0, "div", 148)(1, "div", 149);
971
868
  i0.ɵɵelement(2, "i");
972
869
  i0.ɵɵtext(3);
973
870
  i0.ɵɵelementEnd();
974
- i0.ɵɵelementStart(4, "div", 139)(5, "span", 140);
871
+ i0.ɵɵelementStart(4, "div", 150)(5, "span", 151);
975
872
  i0.ɵɵtext(6);
976
873
  i0.ɵɵelementEnd();
977
- i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Template, 3, 2);
978
- i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_8_Template, 2, 1, "span", 141);
874
+ i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_7_Template, 3, 2);
875
+ i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Conditional_8_Template, 2, 1, "span", 152);
979
876
  i0.ɵɵelementEnd()();
980
877
  } if (rf & 2) {
981
878
  const attempt_r14 = ctx.$implicit;
@@ -991,97 +888,102 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
991
888
  i0.ɵɵadvance();
992
889
  i0.ɵɵconditional(attempt_r14.outputLength ? 8 : -1);
993
890
  } }
994
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
995
- i0.ɵɵelementStart(0, "div", 128)(1, "h4");
891
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_Template(rf, ctx) { if (rf & 1) {
892
+ i0.ɵɵelementStart(0, "div", 138)(1, "h4");
996
893
  i0.ɵɵtext(2, "Validation Attempts");
997
894
  i0.ɵɵelementEnd();
998
- i0.ɵɵelementStart(3, "div", 135);
999
- i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Template, 9, 10, "div", 136, _forTrack0);
895
+ i0.ɵɵelementStart(3, "div", 146);
896
+ i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_For_5_Template, 9, 10, "div", 147, _forTrack0);
1000
897
  i0.ɵɵelementEnd()();
1001
898
  } if (rf & 2) {
1002
- const ctx_r1 = i0.ɵɵnextContext(4);
899
+ const ctx_r1 = i0.ɵɵnextContext(3);
1003
900
  i0.ɵɵadvance(4);
1004
901
  i0.ɵɵrepeater(ctx_r1.validationAttempts);
1005
902
  } }
1006
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template(rf, ctx) { if (rf & 1) {
903
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1007
904
  const _r15 = i0.ɵɵgetCurrentView();
1008
- i0.ɵɵelementStart(0, "div", 129)(1, "div", 76)(2, "h4", 100);
905
+ i0.ɵɵelementStart(0, "div", 139)(1, "div", 99)(2, "h4", 122);
1009
906
  i0.ɵɵtext(3, "Validation Summary Details");
1010
907
  i0.ɵɵelementEnd();
1011
- i0.ɵɵelementStart(4, "button", 79);
1012
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
1013
- i0.ɵɵelement(5, "i", 80);
908
+ i0.ɵɵelementStart(4, "button", 102);
909
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_35_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
910
+ i0.ɵɵelement(5, "i", 103);
1014
911
  i0.ɵɵelementEnd()();
1015
- i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 144);
1016
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
912
+ i0.ɵɵelementStart(6, "div", 154)(7, "mj-code-editor", 155);
913
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_35_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
1017
914
  i0.ɵɵelementEnd()()();
1018
915
  } if (rf & 2) {
1019
- const ctx_r1 = i0.ɵɵnextContext(4);
916
+ const ctx_r1 = i0.ɵɵnextContext(3);
1020
917
  i0.ɵɵadvance(7);
1021
918
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationSummary);
1022
919
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1023
920
  } }
1024
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template(rf, ctx) { if (rf & 1) {
921
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_36_Template(rf, ctx) { if (rf & 1) {
1025
922
  const _r16 = i0.ɵɵgetCurrentView();
1026
- i0.ɵɵelementStart(0, "div", 129)(1, "div", 76)(2, "h4", 100);
923
+ i0.ɵɵelementStart(0, "div", 139)(1, "div", 99)(2, "h4", 122);
1027
924
  i0.ɵɵtext(3, "Validation Attempts (Raw JSON)");
1028
925
  i0.ɵɵelementEnd();
1029
- i0.ɵɵelementStart(4, "button", 79);
1030
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
1031
- i0.ɵɵelement(5, "i", 80);
926
+ i0.ɵɵelementStart(4, "button", 102);
927
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_36_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
928
+ i0.ɵɵelement(5, "i", 103);
1032
929
  i0.ɵɵelementEnd()();
1033
- i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 145);
1034
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
930
+ i0.ɵɵelementStart(6, "div", 154)(7, "mj-code-editor", 156);
931
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_36_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
1035
932
  i0.ɵɵelementEnd()()();
1036
933
  } if (rf & 2) {
1037
- const ctx_r1 = i0.ɵɵnextContext(4);
934
+ const ctx_r1 = i0.ɵɵnextContext(3);
1038
935
  i0.ɵɵadvance(7);
1039
936
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationAttempts);
1040
937
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1041
938
  } }
1042
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Template(rf, ctx) { if (rf & 1) {
1043
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 120)(2, "div", 121)(3, "h4");
1044
- i0.ɵɵtext(4, "Validation Summary");
1045
- i0.ɵɵelementEnd();
1046
- i0.ɵɵelementStart(5, "div", 122);
1047
- i0.ɵɵelement(6, "i");
1048
- i0.ɵɵtext(7);
939
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Template(rf, ctx) { if (rf & 1) {
940
+ const _r13 = i0.ɵɵgetCurrentView();
941
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
942
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
943
+ i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_ng_template_1_Template, 6, 2, "ng-template", 28);
944
+ i0.ɵɵelementStart(2, "div", 29)(3, "div", 130)(4, "div", 131)(5, "h4");
945
+ i0.ɵɵtext(6, "Validation Summary");
946
+ i0.ɵɵelementEnd();
947
+ i0.ɵɵelementStart(7, "div", 132);
948
+ i0.ɵɵelement(8, "i");
949
+ i0.ɵɵtext(9);
1049
950
  i0.ɵɵelementEnd()();
1050
- i0.ɵɵelementStart(8, "div", 123)(9, "div", 124)(10, "div", 52);
1051
- i0.ɵɵtext(11, "Total Attempts");
951
+ i0.ɵɵelementStart(10, "div", 133)(11, "div", 134)(12, "div", 85);
952
+ i0.ɵɵtext(13, "Total Attempts");
1052
953
  i0.ɵɵelementEnd();
1053
- i0.ɵɵelementStart(12, "div", 53);
1054
- i0.ɵɵtext(13);
954
+ i0.ɵɵelementStart(14, "div", 86);
955
+ i0.ɵɵtext(15);
1055
956
  i0.ɵɵelementEnd()();
1056
- i0.ɵɵelementStart(14, "div", 124)(15, "div", 52);
1057
- i0.ɵɵtext(16, "Successful");
957
+ i0.ɵɵelementStart(16, "div", 134)(17, "div", 85);
958
+ i0.ɵɵtext(18, "Successful");
1058
959
  i0.ɵɵelementEnd();
1059
- i0.ɵɵelementStart(17, "div", 53);
1060
- i0.ɵɵtext(18);
960
+ i0.ɵɵelementStart(19, "div", 86);
961
+ i0.ɵɵtext(20);
1061
962
  i0.ɵɵelementEnd()();
1062
- i0.ɵɵelementStart(19, "div", 124)(20, "div", 52);
1063
- i0.ɵɵtext(21, "Behavior");
963
+ i0.ɵɵelementStart(21, "div", 134)(22, "div", 85);
964
+ i0.ɵɵtext(23, "Behavior");
1064
965
  i0.ɵɵelementEnd();
1065
- i0.ɵɵelementStart(22, "div", 53);
1066
- i0.ɵɵtext(23);
966
+ i0.ɵɵelementStart(24, "div", 86);
967
+ i0.ɵɵtext(25);
1067
968
  i0.ɵɵelementEnd()();
1068
- i0.ɵɵelementStart(24, "div", 124)(25, "div", 52);
1069
- i0.ɵɵtext(26, "Retry Strategy");
969
+ i0.ɵɵelementStart(26, "div", 134)(27, "div", 85);
970
+ i0.ɵɵtext(28, "Retry Strategy");
1070
971
  i0.ɵɵelementEnd();
1071
- i0.ɵɵelementStart(27, "div", 53);
1072
- i0.ɵɵtext(28);
972
+ i0.ɵɵelementStart(29, "div", 86);
973
+ i0.ɵɵtext(30);
1073
974
  i0.ɵɵelementEnd()()();
1074
- i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Template, 7, 2, "div", 125);
1075
- i0.ɵɵconditionalCreate(30, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_30_Template, 6, 1, "div", 126);
1076
- i0.ɵɵelementEnd();
1077
- i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_31_Template, 18, 9, "div", 127);
1078
- i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_Template, 6, 0, "div", 128);
1079
- i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template, 8, 4, "div", 129);
1080
- i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template, 8, 4, "div", 129);
975
+ i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_31_Template, 7, 2, "div", 135);
976
+ i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_32_Template, 6, 1, "div", 136);
1081
977
  i0.ɵɵelementEnd();
978
+ i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_33_Template, 18, 9, "div", 137);
979
+ i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_34_Template, 6, 0, "div", 138);
980
+ i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_35_Template, 8, 4, "div", 139);
981
+ i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Conditional_36_Template, 8, 4, "div", 139);
982
+ i0.ɵɵelementEnd()();
1082
983
  } if (rf & 2) {
1083
- const ctx_r1 = i0.ɵɵnextContext(3);
1084
- i0.ɵɵadvance(5);
984
+ const ctx_r1 = i0.ɵɵnextContext(2);
985
+ i0.ɵɵproperty("Expanded", ctx_r1.validationExpanded);
986
+ i0.ɵɵadvance(7);
1085
987
  i0.ɵɵclassProp("success", ctx_r1.record.FinalValidationPassed)("failed", !ctx_r1.record.FinalValidationPassed);
1086
988
  i0.ɵɵadvance();
1087
989
  i0.ɵɵclassMap(ctx_r1.record.FinalValidationPassed ? "fa-solid fa-check-circle" : "fa-solid fa-times-circle");
@@ -1096,30 +998,20 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_temp
1096
998
  i0.ɵɵadvance(5);
1097
999
  i0.ɵɵtextInterpolate(ctx_r1.record.RetryStrategy || "Not set");
1098
1000
  i0.ɵɵadvance();
1099
- i0.ɵɵconditional(ctx_r1.record.FinalValidationError ? 29 : -1);
1001
+ i0.ɵɵconditional(ctx_r1.record.FinalValidationError ? 31 : -1);
1100
1002
  i0.ɵɵadvance();
1101
- i0.ɵɵconditional(ctx_r1.record.CommonValidationError && ctx_r1.record.CommonValidationError !== ctx_r1.record.FinalValidationError ? 30 : -1);
1003
+ i0.ɵɵconditional(ctx_r1.record.CommonValidationError && ctx_r1.record.CommonValidationError !== ctx_r1.record.FinalValidationError ? 32 : -1);
1102
1004
  i0.ɵɵadvance();
1103
- i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 1 ? 31 : -1);
1005
+ i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 1 ? 33 : -1);
1104
1006
  i0.ɵɵadvance();
1105
- i0.ɵɵconditional(ctx_r1.validationAttempts && ctx_r1.validationAttempts.length > 0 ? 32 : -1);
1007
+ i0.ɵɵconditional(ctx_r1.validationAttempts && ctx_r1.validationAttempts.length > 0 ? 34 : -1);
1106
1008
  i0.ɵɵadvance();
1107
- i0.ɵɵconditional(ctx_r1.validationSummary ? 33 : -1);
1009
+ i0.ɵɵconditional(ctx_r1.validationSummary ? 35 : -1);
1108
1010
  i0.ɵɵadvance();
1109
- i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 34 : -1);
1110
- } }
1111
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template(rf, ctx) { if (rf & 1) {
1112
- const _r13 = i0.ɵɵgetCurrentView();
1113
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 28);
1114
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
1115
- i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template, 6, 2, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Template, 35, 17, "ng-template", 30);
1116
- i0.ɵɵelementEnd();
1117
- } if (rf & 2) {
1118
- const ctx_r1 = i0.ɵɵnextContext(2);
1119
- i0.ɵɵproperty("expanded", ctx_r1.validationExpanded);
1011
+ i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 36 : -1);
1120
1012
  } }
1121
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1122
- i0.ɵɵelementStart(0, "span", 84);
1013
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1014
+ i0.ɵɵelementStart(0, "span", 107);
1123
1015
  i0.ɵɵtext(1);
1124
1016
  i0.ɵɵelementEnd();
1125
1017
  } if (rf & 2) {
@@ -1127,50 +1019,50 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_temp
1127
1019
  i0.ɵɵadvance();
1128
1020
  i0.ɵɵtextInterpolate1("(", ctx_r1.childRuns.length, " children)");
1129
1021
  } }
1130
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1131
- i0.ɵɵelementStart(0, "span", 64);
1132
- i0.ɵɵelement(1, "i", 146);
1022
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1023
+ i0.ɵɵelementStart(0, "span", 92);
1024
+ i0.ɵɵelement(1, "i", 159);
1133
1025
  i0.ɵɵtext(2, " Run Hierarchy ");
1134
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Conditional_3_Template, 2, 1, "span", 84);
1026
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_ng_template_1_Conditional_3_Template, 2, 1, "span", 107);
1135
1027
  i0.ɵɵelementEnd();
1136
1028
  } if (rf & 2) {
1137
1029
  const ctx_r1 = i0.ɵɵnextContext(3);
1138
1030
  i0.ɵɵadvance(3);
1139
1031
  i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 3 : -1);
1140
1032
  } }
1141
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1033
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1142
1034
  const _r17 = i0.ɵɵgetCurrentView();
1143
- i0.ɵɵelementStart(0, "div", 147)(1, "h4");
1144
- i0.ɵɵelement(2, "i", 48);
1035
+ i0.ɵɵelementStart(0, "div", 157)(1, "h4");
1036
+ i0.ɵɵelement(2, "i", 81);
1145
1037
  i0.ɵɵtext(3, " Parent Run");
1146
1038
  i0.ɵɵelementEnd();
1147
- i0.ɵɵelementStart(4, "div", 149);
1148
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
1149
- i0.ɵɵelementStart(5, "div", 150);
1039
+ i0.ɵɵelementStart(4, "div", 160);
1040
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
1041
+ i0.ɵɵelementStart(5, "div", 161);
1150
1042
  i0.ɵɵelement(6, "i");
1151
1043
  i0.ɵɵelementEnd();
1152
- i0.ɵɵelementStart(7, "div", 151)(8, "div", 152);
1044
+ i0.ɵɵelementStart(7, "div", 162)(8, "div", 163);
1153
1045
  i0.ɵɵtext(9);
1154
- i0.ɵɵelementStart(10, "span", 153);
1046
+ i0.ɵɵelementStart(10, "span", 164);
1155
1047
  i0.ɵɵtext(11);
1156
1048
  i0.ɵɵelementEnd()();
1157
- i0.ɵɵelementStart(12, "div", 154)(13, "span");
1158
- i0.ɵɵelement(14, "i", 55);
1049
+ i0.ɵɵelementStart(12, "div", 165)(13, "span");
1050
+ i0.ɵɵelement(14, "i", 88);
1159
1051
  i0.ɵɵtext(15);
1160
1052
  i0.ɵɵelementEnd();
1161
1053
  i0.ɵɵelementStart(16, "span");
1162
- i0.ɵɵelement(17, "i", 56);
1054
+ i0.ɵɵelement(17, "i", 41);
1163
1055
  i0.ɵɵtext(18);
1164
1056
  i0.ɵɵelementEnd();
1165
1057
  i0.ɵɵelementStart(19, "span");
1166
- i0.ɵɵelement(20, "i", 63);
1058
+ i0.ɵɵelement(20, "i", 91);
1167
1059
  i0.ɵɵtext(21);
1168
1060
  i0.ɵɵpipe(22, "date");
1169
1061
  i0.ɵɵelementEnd()()();
1170
- i0.ɵɵelement(23, "i", 117);
1062
+ i0.ɵɵelement(23, "i", 129);
1171
1063
  i0.ɵɵelementEnd()();
1172
1064
  } if (rf & 2) {
1173
- const ctx_r1 = i0.ɵɵnextContext(4);
1065
+ const ctx_r1 = i0.ɵɵnextContext(3);
1174
1066
  i0.ɵɵadvance(5);
1175
1067
  i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor() + "20");
1176
1068
  i0.ɵɵadvance();
@@ -1186,8 +1078,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_temp
1186
1078
  i0.ɵɵadvance(3);
1187
1079
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(22, 9, ctx_r1.parentRun.RunAt, "short"));
1188
1080
  } }
1189
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1190
- i0.ɵɵelementStart(0, "span", 159);
1081
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1082
+ i0.ɵɵelementStart(0, "span", 170);
1191
1083
  i0.ɵɵtext(1);
1192
1084
  i0.ɵɵelementEnd();
1193
1085
  } if (rf & 2) {
@@ -1195,36 +1087,36 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_temp
1195
1087
  i0.ɵɵadvance();
1196
1088
  i0.ɵɵtextInterpolate1("#", childRun_r19.ExecutionOrder);
1197
1089
  } }
1198
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
1090
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_For_6_Template(rf, ctx) { if (rf & 1) {
1199
1091
  const _r18 = i0.ɵɵgetCurrentView();
1200
- i0.ɵɵelementStart(0, "div", 158);
1201
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template_div_click_0_listener() { const childRun_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r19.ID)); });
1202
- i0.ɵɵelementStart(1, "div", 150);
1092
+ i0.ɵɵelementStart(0, "div", 169);
1093
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_For_6_Template_div_click_0_listener() { const childRun_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r19.ID)); });
1094
+ i0.ɵɵelementStart(1, "div", 161);
1203
1095
  i0.ɵɵelement(2, "i");
1204
1096
  i0.ɵɵelementEnd();
1205
- i0.ɵɵelementStart(3, "div", 151)(4, "div", 152);
1097
+ i0.ɵɵelementStart(3, "div", 162)(4, "div", 163);
1206
1098
  i0.ɵɵtext(5);
1207
- i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Conditional_6_Template, 2, 1, "span", 159);
1208
- i0.ɵɵelementStart(7, "span", 153);
1099
+ i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_For_6_Conditional_6_Template, 2, 1, "span", 170);
1100
+ i0.ɵɵelementStart(7, "span", 164);
1209
1101
  i0.ɵɵtext(8);
1210
1102
  i0.ɵɵelementEnd()();
1211
- i0.ɵɵelementStart(9, "div", 154)(10, "span", 16);
1103
+ i0.ɵɵelementStart(9, "div", 165)(10, "span", 16);
1212
1104
  i0.ɵɵelement(11, "i");
1213
1105
  i0.ɵɵtext(12);
1214
1106
  i0.ɵɵelementEnd();
1215
1107
  i0.ɵɵelementStart(13, "span");
1216
- i0.ɵɵelement(14, "i", 55);
1108
+ i0.ɵɵelement(14, "i", 88);
1217
1109
  i0.ɵɵtext(15);
1218
1110
  i0.ɵɵelementEnd();
1219
1111
  i0.ɵɵelementStart(16, "span");
1220
- i0.ɵɵelement(17, "i", 56);
1112
+ i0.ɵɵelement(17, "i", 41);
1221
1113
  i0.ɵɵtext(18);
1222
1114
  i0.ɵɵelementEnd()()();
1223
- i0.ɵɵelement(19, "i", 117);
1115
+ i0.ɵɵelement(19, "i", 129);
1224
1116
  i0.ɵɵelementEnd();
1225
1117
  } if (rf & 2) {
1226
1118
  const childRun_r19 = ctx.$implicit;
1227
- const ctx_r1 = i0.ɵɵnextContext(5);
1119
+ const ctx_r1 = i0.ɵɵnextContext(4);
1228
1120
  i0.ɵɵadvance();
1229
1121
  i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor() + "20");
1230
1122
  i0.ɵɵadvance();
@@ -1246,291 +1138,160 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_temp
1246
1138
  i0.ɵɵadvance(3);
1247
1139
  i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(childRun_r19.TokensUsed));
1248
1140
  } }
1249
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1250
- i0.ɵɵelementStart(0, "div", 148)(1, "h4");
1251
- i0.ɵɵelement(2, "i", 155);
1141
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1142
+ i0.ɵɵelementStart(0, "div", 158)(1, "h4");
1143
+ i0.ɵɵelement(2, "i", 166);
1252
1144
  i0.ɵɵtext(3, " Child Runs");
1253
1145
  i0.ɵɵelementEnd();
1254
- i0.ɵɵelementStart(4, "div", 156);
1255
- i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template, 20, 14, "div", 157, _forTrack1);
1146
+ i0.ɵɵelementStart(4, "div", 167);
1147
+ i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_For_6_Template, 20, 14, "div", 168, _forTrack1);
1256
1148
  i0.ɵɵelementEnd()();
1257
1149
  } if (rf & 2) {
1258
- const ctx_r1 = i0.ɵɵnextContext(4);
1150
+ const ctx_r1 = i0.ɵɵnextContext(3);
1259
1151
  i0.ɵɵadvance(5);
1260
1152
  i0.ɵɵrepeater(ctx_r1.childRuns);
1261
1153
  } }
1262
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Template(rf, ctx) { if (rf & 1) {
1263
- i0.ɵɵelementStart(0, "div", 67);
1264
- i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template, 24, 12, "div", 147);
1265
- i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_Template, 7, 0, "div", 148);
1266
- i0.ɵɵelementEnd();
1267
- } if (rf & 2) {
1268
- const ctx_r1 = i0.ɵɵnextContext(3);
1269
- i0.ɵɵadvance();
1270
- i0.ɵɵconditional(ctx_r1.parentRun ? 1 : -1);
1271
- i0.ɵɵadvance();
1272
- i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 2 : -1);
1273
- } }
1274
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_Template(rf, ctx) { if (rf & 1) {
1275
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 31);
1276
- i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Template, 4, 1, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Template, 3, 2, "ng-template", 30);
1277
- i0.ɵɵelementEnd();
1154
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Template(rf, ctx) { if (rf & 1) {
1155
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 46);
1156
+ i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_ng_template_1_Template, 4, 1, "ng-template", 28);
1157
+ i0.ɵɵelementStart(2, "div", 29);
1158
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_3_Template, 24, 12, "div", 157);
1159
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Conditional_4_Template, 7, 0, "div", 158);
1160
+ i0.ɵɵelementEnd()();
1278
1161
  } if (rf & 2) {
1279
1162
  const ctx_r1 = i0.ɵɵnextContext(2);
1280
- i0.ɵɵproperty("expanded", ctx_r1.hierarchyExpanded);
1163
+ i0.ɵɵproperty("Expanded", ctx_r1.hierarchyExpanded);
1164
+ i0.ɵɵadvance(3);
1165
+ i0.ɵɵconditional(ctx_r1.parentRun ? 3 : -1);
1166
+ i0.ɵɵadvance();
1167
+ i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 4 : -1);
1281
1168
  } }
1282
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_46_Template(rf, ctx) { if (rf & 1) {
1283
- i0.ɵɵelementStart(0, "span", 64);
1284
- i0.ɵɵelement(1, "i", 160);
1169
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_90_Template(rf, ctx) { if (rf & 1) {
1170
+ i0.ɵɵelementStart(0, "span", 92);
1171
+ i0.ɵɵelement(1, "i", 59);
1285
1172
  i0.ɵɵtext(2, " Additional Details ");
1286
1173
  i0.ɵɵelementEnd();
1287
1174
  } }
1288
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1175
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_93_Template(rf, ctx) { if (rf & 1) {
1289
1176
  const _r20 = i0.ɵɵgetCurrentView();
1290
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1177
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1291
1178
  i0.ɵɵtext(2, "Agent");
1292
1179
  i0.ɵɵelementEnd();
1293
- i0.ɵɵelementStart(3, "div", 169);
1294
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
1295
- i0.ɵɵelement(4, "i", 170);
1180
+ i0.ɵɵelementStart(3, "div", 171);
1181
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_93_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
1182
+ i0.ɵɵelement(4, "i", 172);
1296
1183
  i0.ɵɵtext(5);
1297
- i0.ɵɵelement(6, "i", 117);
1184
+ i0.ɵɵelement(6, "i", 129);
1298
1185
  i0.ɵɵelementEnd()();
1299
1186
  } if (rf & 2) {
1300
- const ctx_r1 = i0.ɵɵnextContext(3);
1187
+ const ctx_r1 = i0.ɵɵnextContext(2);
1301
1188
  i0.ɵɵadvance(5);
1302
1189
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Unknown", " ");
1303
1190
  } }
1304
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1305
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1191
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_94_Template(rf, ctx) { if (rf & 1) {
1192
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1306
1193
  i0.ɵɵtext(2, "Run Type");
1307
1194
  i0.ɵɵelementEnd();
1308
- i0.ɵɵelementStart(3, "div", 163);
1195
+ i0.ɵɵelementStart(3, "div", 49);
1309
1196
  i0.ɵɵelement(4, "i");
1310
1197
  i0.ɵɵtext(5);
1311
1198
  i0.ɵɵelementEnd()();
1312
1199
  } if (rf & 2) {
1313
- const ctx_r1 = i0.ɵɵnextContext(3);
1200
+ const ctx_r1 = i0.ɵɵnextContext(2);
1314
1201
  i0.ɵɵadvance(4);
1315
1202
  i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(ctx_r1.record.RunType));
1316
1203
  i0.ɵɵadvance();
1317
1204
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
1318
1205
  } }
1319
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1320
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1206
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_95_Template(rf, ctx) { if (rf & 1) {
1207
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1321
1208
  i0.ɵɵtext(2, "Response Format");
1322
1209
  i0.ɵɵelementEnd();
1323
- i0.ɵɵelementStart(3, "div", 163);
1324
- i0.ɵɵelement(4, "i", 62);
1210
+ i0.ɵɵelementStart(3, "div", 49);
1211
+ i0.ɵɵelement(4, "i", 90);
1325
1212
  i0.ɵɵtext(5);
1326
1213
  i0.ɵɵelementEnd()();
1327
1214
  } if (rf & 2) {
1328
- const ctx_r1 = i0.ɵɵnextContext(3);
1215
+ const ctx_r1 = i0.ɵɵnextContext(2);
1329
1216
  i0.ɵɵadvance(5);
1330
1217
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ResponseFormat, " ");
1331
1218
  } }
1332
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_59_Template(rf, ctx) { if (rf & 1) {
1333
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1219
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_150_Template(rf, ctx) { if (rf & 1) {
1220
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1334
1221
  i0.ɵɵtext(2, "Started At");
1335
1222
  i0.ɵɵelementEnd();
1336
- i0.ɵɵelementStart(3, "div", 163);
1337
- i0.ɵɵelement(4, "i", 55);
1223
+ i0.ɵɵelementStart(3, "div", 49);
1224
+ i0.ɵɵelement(4, "i", 88);
1338
1225
  i0.ɵɵtext(5);
1339
1226
  i0.ɵɵpipe(6, "date");
1340
1227
  i0.ɵɵelementEnd()();
1341
1228
  } if (rf & 2) {
1342
- const ctx_r1 = i0.ɵɵnextContext(3);
1229
+ const ctx_r1 = i0.ɵɵnextContext(2);
1343
1230
  i0.ɵɵadvance(5);
1344
1231
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.RunAt, "medium"), " ");
1345
1232
  } }
1346
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_60_Template(rf, ctx) { if (rf & 1) {
1347
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1233
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_151_Template(rf, ctx) { if (rf & 1) {
1234
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1348
1235
  i0.ɵɵtext(2, "Completed At");
1349
1236
  i0.ɵɵelementEnd();
1350
- i0.ɵɵelementStart(3, "div", 163);
1351
- i0.ɵɵelement(4, "i", 171);
1237
+ i0.ɵɵelementStart(3, "div", 49);
1238
+ i0.ɵɵelement(4, "i", 173);
1352
1239
  i0.ɵɵtext(5);
1353
1240
  i0.ɵɵpipe(6, "date");
1354
1241
  i0.ɵɵelementEnd()();
1355
1242
  } if (rf & 2) {
1356
- const ctx_r1 = i0.ɵɵnextContext(3);
1243
+ const ctx_r1 = i0.ɵɵnextContext(2);
1357
1244
  i0.ɵɵadvance(5);
1358
1245
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.CompletedAt, "medium"), " ");
1359
1246
  } }
1360
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Template(rf, ctx) { if (rf & 1) {
1361
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 161);
1362
- i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template, 7, 1, "div", 162);
1363
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_3_Template, 6, 3, "div", 162);
1364
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_4_Template, 6, 1, "div", 162);
1365
- i0.ɵɵelementStart(5, "div", 162)(6, "label");
1366
- i0.ɵɵtext(7, "Temperature");
1367
- i0.ɵɵelementEnd();
1368
- i0.ɵɵelementStart(8, "div", 163);
1369
- i0.ɵɵelement(9, "i", 58);
1370
- i0.ɵɵtext(10);
1371
- i0.ɵɵelementEnd()();
1372
- i0.ɵɵelementStart(11, "div", 162)(12, "label");
1373
- i0.ɵɵtext(13, "Top P");
1374
- i0.ɵɵelementEnd();
1375
- i0.ɵɵelementStart(14, "div", 163);
1376
- i0.ɵɵelement(15, "i", 59);
1377
- i0.ɵɵtext(16);
1378
- i0.ɵɵelementEnd()();
1379
- i0.ɵɵelementStart(17, "div", 162)(18, "label");
1380
- i0.ɵɵtext(19, "Top K");
1381
- i0.ɵɵelementEnd();
1382
- i0.ɵɵelementStart(20, "div", 163);
1383
- i0.ɵɵelement(21, "i", 60);
1384
- i0.ɵɵtext(22);
1385
- i0.ɵɵelementEnd()();
1386
- i0.ɵɵelementStart(23, "div", 162)(24, "label");
1387
- i0.ɵɵtext(25, "Min P");
1388
- i0.ɵɵelementEnd();
1389
- i0.ɵɵelementStart(26, "div", 163);
1390
- i0.ɵɵelement(27, "i", 164);
1391
- i0.ɵɵtext(28);
1392
- i0.ɵɵelementEnd()();
1393
- i0.ɵɵelementStart(29, "div", 162)(30, "label");
1394
- i0.ɵɵtext(31, "Frequency Penalty");
1395
- i0.ɵɵelementEnd();
1396
- i0.ɵɵelementStart(32, "div", 163);
1397
- i0.ɵɵelement(33, "i", 131);
1398
- i0.ɵɵtext(34);
1399
- i0.ɵɵelementEnd()();
1400
- i0.ɵɵelementStart(35, "div", 162)(36, "label");
1401
- i0.ɵɵtext(37, "Presence Penalty");
1402
- i0.ɵɵelementEnd();
1403
- i0.ɵɵelementStart(38, "div", 163);
1404
- i0.ɵɵelement(39, "i", 165);
1405
- i0.ɵɵtext(40);
1406
- i0.ɵɵelementEnd()();
1407
- i0.ɵɵelementStart(41, "div", 162)(42, "label");
1408
- i0.ɵɵtext(43, "Seed");
1409
- i0.ɵɵelementEnd();
1410
- i0.ɵɵelementStart(44, "div", 163);
1411
- i0.ɵɵelement(45, "i", 166);
1412
- i0.ɵɵtext(46);
1413
- i0.ɵɵelementEnd()();
1414
- i0.ɵɵelementStart(47, "div", 162)(48, "label");
1415
- i0.ɵɵtext(49, "Stop Sequences");
1416
- i0.ɵɵelementEnd();
1417
- i0.ɵɵelementStart(50, "div", 163);
1418
- i0.ɵɵelement(51, "i", 167);
1419
- i0.ɵɵtext(52);
1420
- i0.ɵɵelementEnd()();
1421
- i0.ɵɵelementStart(53, "div", 162)(54, "label");
1422
- i0.ɵɵtext(55, "Assistant Prefill");
1423
- i0.ɵɵelementEnd();
1424
- i0.ɵɵelementStart(56, "div", 163);
1425
- i0.ɵɵelement(57, "i", 168);
1426
- i0.ɵɵtext(58);
1427
- i0.ɵɵelementEnd()();
1428
- i0.ɵɵconditionalCreate(59, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_59_Template, 7, 4, "div", 162);
1429
- i0.ɵɵconditionalCreate(60, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_60_Template, 7, 4, "div", 162);
1430
- i0.ɵɵelementEnd()();
1431
- } if (rf & 2) {
1432
- const ctx_r1 = i0.ɵɵnextContext(2);
1433
- i0.ɵɵadvance(2);
1434
- i0.ɵɵconditional(ctx_r1.record.AgentID ? 2 : -1);
1435
- i0.ɵɵadvance();
1436
- i0.ɵɵconditional(ctx_r1.record.RunType ? 3 : -1);
1437
- i0.ɵɵadvance();
1438
- i0.ɵɵconditional(ctx_r1.record.ResponseFormat ? 4 : -1);
1439
- i0.ɵɵadvance(4);
1440
- i0.ɵɵclassProp("null-value", ctx_r1.record.Temperature === null || ctx_r1.record.Temperature === undefined);
1441
- i0.ɵɵadvance(2);
1442
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Temperature !== null && ctx_r1.record.Temperature !== undefined ? ctx_r1.record.Temperature : "\u2014", " ");
1443
- i0.ɵɵadvance(4);
1444
- i0.ɵɵclassProp("null-value", ctx_r1.record.TopP === null || ctx_r1.record.TopP === undefined);
1445
- i0.ɵɵadvance(2);
1446
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.TopP !== null && ctx_r1.record.TopP !== undefined ? ctx_r1.record.TopP : "\u2014", " ");
1447
- i0.ɵɵadvance(4);
1448
- i0.ɵɵclassProp("null-value", ctx_r1.record.TopK === null || ctx_r1.record.TopK === undefined);
1449
- i0.ɵɵadvance(2);
1450
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.TopK !== null && ctx_r1.record.TopK !== undefined ? ctx_r1.record.TopK : "\u2014", " ");
1451
- i0.ɵɵadvance(4);
1452
- i0.ɵɵclassProp("null-value", ctx_r1.record.MinP === null || ctx_r1.record.MinP === undefined);
1453
- i0.ɵɵadvance(2);
1454
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.MinP !== null && ctx_r1.record.MinP !== undefined ? ctx_r1.record.MinP : "\u2014", " ");
1455
- i0.ɵɵadvance(4);
1456
- i0.ɵɵclassProp("null-value", ctx_r1.record.FrequencyPenalty === null || ctx_r1.record.FrequencyPenalty === undefined);
1457
- i0.ɵɵadvance(2);
1458
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FrequencyPenalty !== null && ctx_r1.record.FrequencyPenalty !== undefined ? ctx_r1.record.FrequencyPenalty : "\u2014", " ");
1459
- i0.ɵɵadvance(4);
1460
- i0.ɵɵclassProp("null-value", ctx_r1.record.PresencePenalty === null || ctx_r1.record.PresencePenalty === undefined);
1461
- i0.ɵɵadvance(2);
1462
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.PresencePenalty !== null && ctx_r1.record.PresencePenalty !== undefined ? ctx_r1.record.PresencePenalty : "\u2014", " ");
1463
- i0.ɵɵadvance(4);
1464
- i0.ɵɵclassProp("null-value", ctx_r1.record.Seed === null || ctx_r1.record.Seed === undefined);
1465
- i0.ɵɵadvance(2);
1466
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Seed !== null && ctx_r1.record.Seed !== undefined ? ctx_r1.record.Seed : "\u2014", " ");
1467
- i0.ɵɵadvance(4);
1468
- i0.ɵɵclassProp("null-value", !ctx_r1.record.StopSequences);
1469
- i0.ɵɵadvance(2);
1470
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StopSequences || "\u2014", " ");
1471
- i0.ɵɵadvance(4);
1472
- i0.ɵɵclassProp("null-value", !ctx_r1.record.AssistantPrefill);
1473
- i0.ɵɵadvance(2);
1474
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.AssistantPrefill || "\u2014", " ");
1475
- i0.ɵɵadvance();
1476
- i0.ɵɵconditional(ctx_r1.record.RunAt ? 59 : -1);
1477
- i0.ɵɵadvance();
1478
- i0.ɵɵconditional(ctx_r1.record.CompletedAt ? 60 : -1);
1479
- } }
1480
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1481
- i0.ɵɵelementStart(0, "span", 64);
1482
- i0.ɵɵelement(1, "i", 46);
1247
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1248
+ i0.ɵɵelementStart(0, "span", 92);
1249
+ i0.ɵɵelement(1, "i", 79);
1483
1250
  i0.ɵɵtext(2, " Model Specific Response Details ");
1484
- i0.ɵɵelementStart(3, "span", 66);
1251
+ i0.ɵɵelementStart(3, "span", 94);
1485
1252
  i0.ɵɵtext(4, "JSON");
1486
1253
  i0.ɵɵelementEnd()();
1487
1254
  } }
1488
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template(rf, ctx) { if (rf & 1) {
1489
- const _r22 = i0.ɵɵgetCurrentView();
1490
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 75)(2, "div", 76)(3, "button", 77);
1491
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
1492
- i0.ɵɵelement(4, "i", 78);
1493
- i0.ɵɵtext(5, " Copy ");
1494
- i0.ɵɵelementEnd();
1495
- i0.ɵɵelementStart(6, "button", 79);
1496
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
1497
- i0.ɵɵelement(7, "i", 80);
1498
- i0.ɵɵelementEnd()();
1499
- i0.ɵɵelementStart(8, "mj-code-editor", 172);
1500
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_mj_code_editor_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
1501
- i0.ɵɵelementEnd()()();
1502
- } if (rf & 2) {
1503
- const ctx_r1 = i0.ɵɵnextContext(3);
1504
- i0.ɵɵadvance(8);
1505
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSpecificResponseDetails);
1506
- i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1507
- } }
1508
- function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template(rf, ctx) { if (rf & 1) {
1255
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template(rf, ctx) { if (rf & 1) {
1509
1256
  const _r21 = i0.ɵɵgetCurrentView();
1510
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 28);
1511
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
1512
- i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_1_Template, 5, 0, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template, 9, 4, "ng-template", 30);
1513
- i0.ɵɵelementEnd();
1257
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
1258
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
1259
+ i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_ng_template_1_Template, 5, 0, "ng-template", 28);
1260
+ i0.ɵɵelementStart(2, "div", 29)(3, "div", 33)(4, "div", 99)(5, "button", 100);
1261
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
1262
+ i0.ɵɵelement(6, "i", 101);
1263
+ i0.ɵɵtext(7, " Copy ");
1264
+ i0.ɵɵelementEnd();
1265
+ i0.ɵɵelementStart(8, "button", 102);
1266
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
1267
+ i0.ɵɵelement(9, "i", 103);
1268
+ i0.ɵɵelementEnd()();
1269
+ i0.ɵɵelementStart(10, "mj-code-editor", 174);
1270
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template_mj_code_editor_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
1271
+ i0.ɵɵelementEnd()()()();
1514
1272
  } if (rf & 2) {
1515
1273
  const ctx_r1 = i0.ɵɵnextContext(2);
1516
- i0.ɵɵproperty("expanded", ctx_r1.modelSpecificExpanded);
1274
+ i0.ɵɵproperty("Expanded", ctx_r1.modelSpecificExpanded);
1275
+ i0.ɵɵadvance(10);
1276
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSpecificResponseDetails);
1277
+ i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1517
1278
  } }
1518
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1519
- i0.ɵɵelementStart(0, "span", 119);
1279
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1280
+ i0.ɵɵelementStart(0, "span", 141);
1520
1281
  i0.ɵɵtext(1, "Cached");
1521
1282
  i0.ɵɵelementEnd();
1522
1283
  } }
1523
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1524
- i0.ɵɵelementStart(0, "span", 119);
1284
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1285
+ i0.ɵɵelementStart(0, "span", 141);
1525
1286
  i0.ɵɵtext(1, "Selected");
1526
1287
  i0.ɵɵelementEnd();
1527
1288
  } }
1528
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Template(rf, ctx) { if (rf & 1) {
1529
- i0.ɵɵelementStart(0, "span", 64);
1530
- i0.ɵɵelement(1, "i", 46);
1289
+ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Template(rf, ctx) { if (rf & 1) {
1290
+ i0.ɵɵelementStart(0, "span", 92);
1291
+ i0.ɵɵelement(1, "i", 79);
1531
1292
  i0.ɵɵtext(2, " Model Selection & Performance ");
1532
- i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_3_Template, 2, 0, "span", 119);
1533
- i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_4_Template, 2, 0, "span", 119);
1293
+ i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Conditional_3_Template, 2, 0, "span", 141);
1294
+ i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Conditional_4_Template, 2, 0, "span", 141);
1534
1295
  i0.ɵɵelementEnd();
1535
1296
  } if (rf & 2) {
1536
1297
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1539,214 +1300,125 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Templat
1539
1300
  i0.ɵɵadvance();
1540
1301
  i0.ɵɵconditional(ctx_r1.record.WasSelectedResult ? 4 : -1);
1541
1302
  } }
1542
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1543
- i0.ɵɵelementStart(0, "div", 175)(1, "label");
1303
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_181_Template(rf, ctx) { if (rf & 1) {
1304
+ i0.ɵɵelementStart(0, "div", 62)(1, "label");
1544
1305
  i0.ɵɵtext(2, "Cache Key");
1545
1306
  i0.ɵɵelementEnd();
1546
- i0.ɵɵelementStart(3, "div", 163);
1547
- i0.ɵɵelement(4, "i", 178);
1307
+ i0.ɵɵelementStart(3, "div", 49);
1308
+ i0.ɵɵelement(4, "i", 175);
1548
1309
  i0.ɵɵelementStart(5, "code");
1549
1310
  i0.ɵɵtext(6);
1550
1311
  i0.ɵɵelementEnd()()();
1551
1312
  } if (rf & 2) {
1552
- const ctx_r1 = i0.ɵɵnextContext(3);
1313
+ const ctx_r1 = i0.ɵɵnextContext(2);
1553
1314
  i0.ɵɵadvance(6);
1554
1315
  i0.ɵɵtextInterpolate(ctx_r1.record.CacheKey);
1555
1316
  } }
1556
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template(rf, ctx) { if (rf & 1) {
1557
- const _r23 = i0.ɵɵgetCurrentView();
1558
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1317
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_182_Template(rf, ctx) { if (rf & 1) {
1318
+ const _r22 = i0.ɵɵgetCurrentView();
1319
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1559
1320
  i0.ɵɵtext(2, "Judge Prompt");
1560
1321
  i0.ɵɵelementEnd();
1561
- i0.ɵɵelementStart(3, "div", 179);
1562
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
1563
- i0.ɵɵelement(4, "i", 180);
1322
+ i0.ɵɵelementStart(3, "div", 176);
1323
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_182_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
1324
+ i0.ɵɵelement(4, "i", 177);
1564
1325
  i0.ɵɵtext(5);
1565
- i0.ɵɵelement(6, "i", 117);
1326
+ i0.ɵɵelement(6, "i", 129);
1566
1327
  i0.ɵɵelementEnd()();
1567
1328
  } if (rf & 2) {
1568
- const ctx_r1 = i0.ɵɵnextContext(3);
1329
+ const ctx_r1 = i0.ɵɵnextContext(2);
1569
1330
  i0.ɵɵadvance(5);
1570
1331
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Judge || "Unknown", " ");
1571
1332
  } }
1572
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_28_Template(rf, ctx) { if (rf & 1) {
1573
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1333
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_183_Template(rf, ctx) { if (rf & 1) {
1334
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1574
1335
  i0.ɵɵtext(2, "Judge Score");
1575
1336
  i0.ɵɵelementEnd();
1576
- i0.ɵɵelementStart(3, "div", 163);
1577
- i0.ɵɵelement(4, "i", 181);
1337
+ i0.ɵɵelementStart(3, "div", 49);
1338
+ i0.ɵɵelement(4, "i", 178);
1578
1339
  i0.ɵɵtext(5);
1579
1340
  i0.ɵɵelementEnd()();
1580
1341
  } if (rf & 2) {
1581
- const ctx_r1 = i0.ɵɵnextContext(3);
1342
+ const ctx_r1 = i0.ɵɵnextContext(2);
1582
1343
  i0.ɵɵadvance(5);
1583
1344
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.JudgeScore, " ");
1584
1345
  } }
1585
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_41_Template(rf, ctx) { if (rf & 1) {
1586
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1346
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_196_Template(rf, ctx) { if (rf & 1) {
1347
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1587
1348
  i0.ɵɵtext(2, "First Token Time");
1588
1349
  i0.ɵɵelementEnd();
1589
- i0.ɵɵelementStart(3, "div", 163);
1590
- i0.ɵɵelement(4, "i", 182);
1350
+ i0.ɵɵelementStart(3, "div", 49);
1351
+ i0.ɵɵelement(4, "i", 179);
1591
1352
  i0.ɵɵtext(5);
1592
1353
  i0.ɵɵelementEnd()();
1593
1354
  } if (rf & 2) {
1594
- const ctx_r1 = i0.ɵɵnextContext(3);
1355
+ const ctx_r1 = i0.ɵɵnextContext(2);
1595
1356
  i0.ɵɵadvance(5);
1596
1357
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FirstTokenTime, " ms ");
1597
1358
  } }
1598
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1599
- i0.ɵɵelementStart(0, "div", 175)(1, "label");
1359
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_197_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1360
+ i0.ɵɵelementStart(0, "div", 62)(1, "label");
1600
1361
  i0.ɵɵtext(2, "Cancellation Reason");
1601
1362
  i0.ɵɵelementEnd();
1602
- i0.ɵɵelementStart(3, "div", 163);
1603
- i0.ɵɵelement(4, "i", 185);
1363
+ i0.ɵɵelementStart(3, "div", 49);
1364
+ i0.ɵɵelement(4, "i", 182);
1604
1365
  i0.ɵɵtext(5);
1605
1366
  i0.ɵɵelementEnd()();
1606
1367
  } if (rf & 2) {
1607
- const ctx_r1 = i0.ɵɵnextContext(4);
1368
+ const ctx_r1 = i0.ɵɵnextContext(3);
1608
1369
  i0.ɵɵadvance(5);
1609
1370
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CancellationReason, " ");
1610
1371
  } }
1611
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Template(rf, ctx) { if (rf & 1) {
1612
- i0.ɵɵelementStart(0, "div", 162)(1, "label");
1372
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_197_Template(rf, ctx) { if (rf & 1) {
1373
+ i0.ɵɵelementStart(0, "div", 48)(1, "label");
1613
1374
  i0.ɵɵtext(2, "Cancelled");
1614
1375
  i0.ɵɵelementEnd();
1615
- i0.ɵɵelementStart(3, "div", 183);
1616
- i0.ɵɵelement(4, "i", 184);
1376
+ i0.ɵɵelementStart(3, "div", 180);
1377
+ i0.ɵɵelement(4, "i", 181);
1617
1378
  i0.ɵɵtext(5, " Yes ");
1618
1379
  i0.ɵɵelementEnd()();
1619
- i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Conditional_6_Template, 6, 1, "div", 175);
1380
+ i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_197_Conditional_6_Template, 6, 1, "div", 62);
1620
1381
  } if (rf & 2) {
1621
- const ctx_r1 = i0.ɵɵnextContext(3);
1382
+ const ctx_r1 = i0.ɵɵnextContext(2);
1622
1383
  i0.ɵɵadvance(6);
1623
1384
  i0.ɵɵconditional(ctx_r1.record.CancellationReason ? 6 : -1);
1624
1385
  } }
1625
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template(rf, ctx) { if (rf & 1) {
1626
- const _r24 = i0.ɵɵgetCurrentView();
1627
- i0.ɵɵelementStart(0, "div", 176)(1, "div", 76)(2, "h4", 100);
1386
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_198_Template(rf, ctx) { if (rf & 1) {
1387
+ const _r23 = i0.ɵɵgetCurrentView();
1388
+ i0.ɵɵelementStart(0, "div", 63)(1, "div", 99)(2, "h4", 122);
1628
1389
  i0.ɵɵtext(3, "Model Selection Details");
1629
1390
  i0.ɵɵelementEnd();
1630
- i0.ɵɵelementStart(4, "button", 79);
1631
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
1632
- i0.ɵɵelement(5, "i", 80);
1391
+ i0.ɵɵelementStart(4, "button", 102);
1392
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_198_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
1393
+ i0.ɵɵelement(5, "i", 103);
1633
1394
  i0.ɵɵelementEnd()();
1634
- i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 186);
1635
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
1395
+ i0.ɵɵelementStart(6, "div", 154)(7, "mj-code-editor", 183);
1396
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_198_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
1636
1397
  i0.ɵɵelementEnd()()();
1637
1398
  } if (rf & 2) {
1638
- const ctx_r1 = i0.ɵɵnextContext(3);
1399
+ const ctx_r1 = i0.ɵɵnextContext(2);
1639
1400
  i0.ɵɵadvance(7);
1640
1401
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSelection);
1641
1402
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1642
1403
  } }
1643
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template(rf, ctx) { if (rf & 1) {
1644
- const _r25 = i0.ɵɵgetCurrentView();
1645
- i0.ɵɵelementStart(0, "div", 177)(1, "div", 76)(2, "h4", 100);
1404
+ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_199_Template(rf, ctx) { if (rf & 1) {
1405
+ const _r24 = i0.ɵɵgetCurrentView();
1406
+ i0.ɵɵelementStart(0, "div", 64)(1, "div", 99)(2, "h4", 122);
1646
1407
  i0.ɵɵtext(3, "Error Details");
1647
1408
  i0.ɵɵelementEnd();
1648
- i0.ɵɵelementStart(4, "button", 79);
1649
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
1650
- i0.ɵɵelement(5, "i", 80);
1409
+ i0.ɵɵelementStart(4, "button", 102);
1410
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_199_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
1411
+ i0.ɵɵelement(5, "i", 103);
1651
1412
  i0.ɵɵelementEnd()();
1652
- i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 187);
1653
- i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
1413
+ i0.ɵɵelementStart(6, "div", 154)(7, "mj-code-editor", 184);
1414
+ i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_199_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
1654
1415
  i0.ɵɵelementEnd()()();
1655
1416
  } if (rf & 2) {
1656
- const ctx_r1 = i0.ɵɵnextContext(3);
1417
+ const ctx_r1 = i0.ɵɵnextContext(2);
1657
1418
  i0.ɵɵadvance(7);
1658
1419
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedErrorDetails);
1659
1420
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
1660
1421
  } }
1661
- function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Template(rf, ctx) { if (rf & 1) {
1662
- i0.ɵɵelementStart(0, "div", 67)(1, "div", 161)(2, "div", 162)(3, "label");
1663
- i0.ɵɵtext(4, "Status");
1664
- i0.ɵɵelementEnd();
1665
- i0.ɵɵelementStart(5, "div", 163);
1666
- i0.ɵɵelement(6, "i", 160);
1667
- i0.ɵɵtext(7);
1668
- i0.ɵɵelementEnd()();
1669
- i0.ɵɵelementStart(8, "div", 162)(9, "label");
1670
- i0.ɵɵtext(10, "Selection Strategy");
1671
- i0.ɵɵelementEnd();
1672
- i0.ɵɵelementStart(11, "div", 163);
1673
- i0.ɵɵelement(12, "i", 173);
1674
- i0.ɵɵtext(13);
1675
- i0.ɵɵelementEnd()();
1676
- i0.ɵɵelementStart(14, "div", 162)(15, "label");
1677
- i0.ɵɵtext(16, "Model Power Rank");
1678
- i0.ɵɵelementEnd();
1679
- i0.ɵɵelementStart(17, "div", 163);
1680
- i0.ɵɵelement(18, "i", 174);
1681
- i0.ɵɵtext(19);
1682
- i0.ɵɵelementEnd()();
1683
- i0.ɵɵelementStart(20, "div", 162)(21, "label");
1684
- i0.ɵɵtext(22, "Cache Hit");
1685
- i0.ɵɵelementEnd();
1686
- i0.ɵɵelementStart(23, "div", 163);
1687
- i0.ɵɵelement(24, "i");
1688
- i0.ɵɵtext(25);
1689
- i0.ɵɵelementEnd()();
1690
- i0.ɵɵconditionalCreate(26, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_26_Template, 7, 1, "div", 175);
1691
- i0.ɵɵconditionalCreate(27, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template, 7, 1, "div", 162);
1692
- i0.ɵɵconditionalCreate(28, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_28_Template, 6, 1, "div", 162);
1693
- i0.ɵɵelementStart(29, "div", 162)(30, "label");
1694
- i0.ɵɵtext(31, "Was Selected Result");
1695
- i0.ɵɵelementEnd();
1696
- i0.ɵɵelementStart(32, "div", 163);
1697
- i0.ɵɵelement(33, "i");
1698
- i0.ɵɵtext(34);
1699
- i0.ɵɵelementEnd()();
1700
- i0.ɵɵelementStart(35, "div", 162)(36, "label");
1701
- i0.ɵɵtext(37, "Streaming Enabled");
1702
- i0.ɵɵelementEnd();
1703
- i0.ɵɵelementStart(38, "div", 163);
1704
- i0.ɵɵelement(39, "i");
1705
- i0.ɵɵtext(40);
1706
- i0.ɵɵelementEnd()();
1707
- i0.ɵɵconditionalCreate(41, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_41_Template, 6, 1, "div", 162);
1708
- i0.ɵɵconditionalCreate(42, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Template, 7, 1);
1709
- i0.ɵɵelementEnd();
1710
- i0.ɵɵconditionalCreate(43, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template, 8, 4, "div", 176);
1711
- i0.ɵɵconditionalCreate(44, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template, 8, 4, "div", 177);
1712
- i0.ɵɵelementEnd();
1713
- } if (rf & 2) {
1714
- const ctx_r1 = i0.ɵɵnextContext(2);
1715
- i0.ɵɵadvance(7);
1716
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status || "Unknown", " ");
1717
- i0.ɵɵadvance(6);
1718
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.SelectionStrategy || "\u2014", " ");
1719
- i0.ɵɵadvance(4);
1720
- i0.ɵɵclassProp("null-value", ctx_r1.record.ModelPowerRank === null);
1721
- i0.ɵɵadvance(2);
1722
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ModelPowerRank !== null ? ctx_r1.record.ModelPowerRank : "\u2014", " ");
1723
- i0.ɵɵadvance(5);
1724
- i0.ɵɵclassMap(ctx_r1.record.CacheHit ? "fa-solid fa-check-circle" : "fa-solid fa-times-circle");
1725
- i0.ɵɵadvance();
1726
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CacheHit ? "Yes" : "No", " ");
1727
- i0.ɵɵadvance();
1728
- i0.ɵɵconditional(ctx_r1.record.CacheKey ? 26 : -1);
1729
- i0.ɵɵadvance();
1730
- i0.ɵɵconditional(ctx_r1.record.JudgeID ? 27 : -1);
1731
- i0.ɵɵadvance();
1732
- i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ? 28 : -1);
1733
- i0.ɵɵadvance(5);
1734
- i0.ɵɵclassMap(ctx_r1.record.WasSelectedResult ? "fa-solid fa-trophy" : "fa-solid fa-times");
1735
- i0.ɵɵadvance();
1736
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.WasSelectedResult ? "Yes" : "No", " ");
1737
- i0.ɵɵadvance(5);
1738
- i0.ɵɵclassMap(ctx_r1.record.StreamingEnabled ? "fa-solid fa-stream" : "fa-solid fa-ban");
1739
- i0.ɵɵadvance();
1740
- i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StreamingEnabled ? "Yes" : "No", " ");
1741
- i0.ɵɵadvance();
1742
- i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ? 41 : -1);
1743
- i0.ɵɵadvance();
1744
- i0.ɵɵconditional(ctx_r1.record.Cancelled ? 42 : -1);
1745
- i0.ɵɵadvance();
1746
- i0.ɵɵconditional(ctx_r1.record.ModelSelection ? 43 : -1);
1747
- i0.ɵɵadvance();
1748
- i0.ɵɵconditional(ctx_r1.record.ErrorDetails ? 44 : -1);
1749
- } }
1750
1422
  function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1751
1423
  const _r1 = i0.ɵɵgetCurrentView();
1752
1424
  i0.ɵɵelementStart(0, "form", 2, 0);
@@ -1781,27 +1453,199 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if
1781
1453
  i0.ɵɵelementEnd()()();
1782
1454
  i0.ɵɵconditionalCreate(30, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template, 37, 10)(31, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Template, 23, 4, "div", 25);
1783
1455
  i0.ɵɵelementEnd();
1784
- i0.ɵɵelementStart(32, "div", 26)(33, "kendo-panelbar", 27)(34, "kendo-panelbar-item", 28);
1785
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_34_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onInputPanelToggle($event)); });
1786
- i0.ɵɵtemplate(35, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Template, 4, 1, "ng-template", 29)(36, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Template, 3, 1, "ng-template", 30);
1456
+ i0.ɵɵelementStart(32, "div", 26)(33, "mj-accordion-panel", 27);
1457
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_33_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onInputPanelToggle($event)); });
1458
+ i0.ɵɵtemplate(34, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_34_Template, 4, 1, "ng-template", 28);
1459
+ i0.ɵɵelementStart(35, "div", 29);
1460
+ i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_36_Template, 23, 9, "div", 30)(37, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_37_Template, 4, 0, "div", 31);
1461
+ i0.ɵɵelementEnd()();
1462
+ i0.ɵɵelementStart(38, "mj-accordion-panel", 27);
1463
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_38_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResultPanelToggle($event)); });
1464
+ i0.ɵɵtemplate(39, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template, 5, 2, "ng-template", 28);
1465
+ i0.ɵɵelementStart(40, "div", 29);
1466
+ i0.ɵɵconditionalCreate(41, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_41_Template, 7, 1, "div", 32);
1467
+ i0.ɵɵconditionalCreate(42, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_42_Template, 8, 4, "div", 33)(43, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template, 5, 1, "div", 31);
1468
+ i0.ɵɵelementEnd()();
1469
+ i0.ɵɵelementStart(44, "mj-accordion-panel", 27);
1470
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMetricsPanelToggle($event)); });
1471
+ i0.ɵɵtemplate(45, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_45_Template, 3, 0, "ng-template", 28);
1472
+ i0.ɵɵelementStart(46, "div", 29)(47, "div", 34)(48, "div", 35)(49, "div", 36);
1473
+ i0.ɵɵelement(50, "i", 37);
1474
+ i0.ɵɵelementStart(51, "h4");
1475
+ i0.ɵɵtext(52, "Prompt Tokens");
1476
+ i0.ɵɵelementEnd()();
1477
+ i0.ɵɵelementStart(53, "div", 38);
1478
+ i0.ɵɵtext(54);
1479
+ i0.ɵɵelementEnd();
1480
+ i0.ɵɵconditionalCreate(55, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_55_Template, 3, 1, "div", 39);
1481
+ i0.ɵɵelementEnd();
1482
+ i0.ɵɵelementStart(56, "div", 35)(57, "div", 36);
1483
+ i0.ɵɵelement(58, "i", 40);
1484
+ i0.ɵɵelementStart(59, "h4");
1485
+ i0.ɵɵtext(60, "Completion Tokens");
1486
+ i0.ɵɵelementEnd()();
1487
+ i0.ɵɵelementStart(61, "div", 38);
1488
+ i0.ɵɵtext(62);
1489
+ i0.ɵɵelementEnd();
1490
+ i0.ɵɵconditionalCreate(63, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_63_Template, 3, 1, "div", 39);
1491
+ i0.ɵɵelementEnd();
1492
+ i0.ɵɵelementStart(64, "div", 35)(65, "div", 36);
1493
+ i0.ɵɵelement(66, "i", 41);
1494
+ i0.ɵɵelementStart(67, "h4");
1495
+ i0.ɵɵtext(68, "Total Tokens");
1496
+ i0.ɵɵelementEnd()();
1497
+ i0.ɵɵelementStart(69, "div", 38);
1498
+ i0.ɵɵtext(70);
1499
+ i0.ɵɵelementEnd();
1500
+ i0.ɵɵconditionalCreate(71, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_71_Template, 3, 1, "div", 39);
1501
+ i0.ɵɵelementEnd();
1502
+ i0.ɵɵelementStart(72, "div", 35)(73, "div", 36);
1503
+ i0.ɵɵelement(74, "i", 42);
1504
+ i0.ɵɵelementStart(75, "h4");
1505
+ i0.ɵɵtext(76, "Cost");
1506
+ i0.ɵɵelementEnd()();
1507
+ i0.ɵɵelementStart(77, "div", 38);
1508
+ i0.ɵɵtext(78);
1509
+ i0.ɵɵelementEnd();
1510
+ i0.ɵɵconditionalCreate(79, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_79_Template, 3, 1, "div", 39);
1511
+ i0.ɵɵconditionalCreate(80, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_80_Template, 2, 1, "div", 43);
1512
+ i0.ɵɵelementEnd();
1513
+ i0.ɵɵconditionalCreate(81, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_81_Template, 7, 1, "div", 35);
1514
+ i0.ɵɵconditionalCreate(82, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_82_Template, 7, 1, "div", 35);
1515
+ i0.ɵɵconditionalCreate(83, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_83_Template, 7, 1, "div", 35);
1516
+ i0.ɵɵelementEnd();
1517
+ i0.ɵɵelementStart(84, "div", 44);
1518
+ i0.ɵɵconditionalCreate(85, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_85_Template, 5, 1, "div", 45);
1519
+ i0.ɵɵconditionalCreate(86, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_86_Template, 6, 1, "div", 45);
1520
+ i0.ɵɵelementEnd()()();
1521
+ i0.ɵɵconditionalCreate(87, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_87_Template, 37, 18, "mj-accordion-panel", 46);
1522
+ i0.ɵɵconditionalCreate(88, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_88_Template, 5, 3, "mj-accordion-panel", 46);
1523
+ i0.ɵɵelementStart(89, "mj-accordion-panel", 46);
1524
+ i0.ɵɵtemplate(90, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_90_Template, 3, 0, "ng-template", 28);
1525
+ i0.ɵɵelementStart(91, "div", 29)(92, "div", 47);
1526
+ i0.ɵɵconditionalCreate(93, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_93_Template, 7, 1, "div", 48);
1527
+ i0.ɵɵconditionalCreate(94, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_94_Template, 6, 3, "div", 48);
1528
+ i0.ɵɵconditionalCreate(95, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_95_Template, 6, 1, "div", 48);
1529
+ i0.ɵɵelementStart(96, "div", 48)(97, "label");
1530
+ i0.ɵɵtext(98, "Temperature");
1531
+ i0.ɵɵelementEnd();
1532
+ i0.ɵɵelementStart(99, "div", 49);
1533
+ i0.ɵɵelement(100, "i", 50);
1534
+ i0.ɵɵtext(101);
1535
+ i0.ɵɵelementEnd()();
1536
+ i0.ɵɵelementStart(102, "div", 48)(103, "label");
1537
+ i0.ɵɵtext(104, "Top P");
1538
+ i0.ɵɵelementEnd();
1539
+ i0.ɵɵelementStart(105, "div", 49);
1540
+ i0.ɵɵelement(106, "i", 51);
1541
+ i0.ɵɵtext(107);
1542
+ i0.ɵɵelementEnd()();
1543
+ i0.ɵɵelementStart(108, "div", 48)(109, "label");
1544
+ i0.ɵɵtext(110, "Top K");
1545
+ i0.ɵɵelementEnd();
1546
+ i0.ɵɵelementStart(111, "div", 49);
1547
+ i0.ɵɵelement(112, "i", 52);
1548
+ i0.ɵɵtext(113);
1549
+ i0.ɵɵelementEnd()();
1550
+ i0.ɵɵelementStart(114, "div", 48)(115, "label");
1551
+ i0.ɵɵtext(116, "Min P");
1552
+ i0.ɵɵelementEnd();
1553
+ i0.ɵɵelementStart(117, "div", 49);
1554
+ i0.ɵɵelement(118, "i", 53);
1555
+ i0.ɵɵtext(119);
1556
+ i0.ɵɵelementEnd()();
1557
+ i0.ɵɵelementStart(120, "div", 48)(121, "label");
1558
+ i0.ɵɵtext(122, "Frequency Penalty");
1559
+ i0.ɵɵelementEnd();
1560
+ i0.ɵɵelementStart(123, "div", 49);
1561
+ i0.ɵɵelement(124, "i", 54);
1562
+ i0.ɵɵtext(125);
1563
+ i0.ɵɵelementEnd()();
1564
+ i0.ɵɵelementStart(126, "div", 48)(127, "label");
1565
+ i0.ɵɵtext(128, "Presence Penalty");
1566
+ i0.ɵɵelementEnd();
1567
+ i0.ɵɵelementStart(129, "div", 49);
1568
+ i0.ɵɵelement(130, "i", 55);
1569
+ i0.ɵɵtext(131);
1570
+ i0.ɵɵelementEnd()();
1571
+ i0.ɵɵelementStart(132, "div", 48)(133, "label");
1572
+ i0.ɵɵtext(134, "Seed");
1787
1573
  i0.ɵɵelementEnd();
1788
- i0.ɵɵelementStart(37, "kendo-panelbar-item", 28);
1789
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_37_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResultPanelToggle($event)); });
1790
- i0.ɵɵtemplate(38, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Template, 5, 2, "ng-template", 29)(39, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template, 4, 2, "ng-template", 30);
1574
+ i0.ɵɵelementStart(135, "div", 49);
1575
+ i0.ɵɵelement(136, "i", 56);
1576
+ i0.ɵɵtext(137);
1577
+ i0.ɵɵelementEnd()();
1578
+ i0.ɵɵelementStart(138, "div", 48)(139, "label");
1579
+ i0.ɵɵtext(140, "Stop Sequences");
1791
1580
  i0.ɵɵelementEnd();
1792
- i0.ɵɵelementStart(40, "kendo-panelbar-item", 28);
1793
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_40_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMetricsPanelToggle($event)); });
1794
- i0.ɵɵtemplate(41, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_41_Template, 3, 0, "ng-template", 29)(42, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Template, 41, 14, "ng-template", 30);
1581
+ i0.ɵɵelementStart(141, "div", 49);
1582
+ i0.ɵɵelement(142, "i", 57);
1583
+ i0.ɵɵtext(143);
1584
+ i0.ɵɵelementEnd()();
1585
+ i0.ɵɵelementStart(144, "div", 48)(145, "label");
1586
+ i0.ɵɵtext(146, "Assistant Prefill");
1795
1587
  i0.ɵɵelementEnd();
1796
- i0.ɵɵconditionalCreate(43, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template, 3, 1, "kendo-panelbar-item", 31);
1797
- i0.ɵɵconditionalCreate(44, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_Template, 3, 1, "kendo-panelbar-item", 31);
1798
- i0.ɵɵelementStart(45, "kendo-panelbar-item", 31);
1799
- i0.ɵɵtemplate(46, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_46_Template, 3, 0, "ng-template", 29)(47, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Template, 61, 32, "ng-template", 30);
1588
+ i0.ɵɵelementStart(147, "div", 49);
1589
+ i0.ɵɵelement(148, "i", 58);
1590
+ i0.ɵɵtext(149);
1591
+ i0.ɵɵelementEnd()();
1592
+ i0.ɵɵconditionalCreate(150, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_150_Template, 7, 4, "div", 48);
1593
+ i0.ɵɵconditionalCreate(151, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_151_Template, 7, 4, "div", 48);
1594
+ i0.ɵɵelementEnd()()();
1595
+ i0.ɵɵconditionalCreate(152, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_152_Template, 11, 5, "mj-accordion-panel", 46);
1596
+ i0.ɵɵelementStart(153, "mj-accordion-panel", 27);
1597
+ i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_153_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
1598
+ i0.ɵɵtemplate(154, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_154_Template, 5, 2, "ng-template", 28);
1599
+ i0.ɵɵelementStart(155, "div", 29)(156, "div", 47)(157, "div", 48)(158, "label");
1600
+ i0.ɵɵtext(159, "Status");
1800
1601
  i0.ɵɵelementEnd();
1801
- i0.ɵɵconditionalCreate(48, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template, 3, 1, "kendo-panelbar-item", 31);
1802
- i0.ɵɵelementStart(49, "kendo-panelbar-item", 28);
1803
- i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_49_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
1804
- i0.ɵɵtemplate(50, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Template, 5, 2, "ng-template", 29)(51, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Template, 45, 21, "ng-template", 30);
1602
+ i0.ɵɵelementStart(160, "div", 49);
1603
+ i0.ɵɵelement(161, "i", 59);
1604
+ i0.ɵɵtext(162);
1605
+ i0.ɵɵelementEnd()();
1606
+ i0.ɵɵelementStart(163, "div", 48)(164, "label");
1607
+ i0.ɵɵtext(165, "Selection Strategy");
1608
+ i0.ɵɵelementEnd();
1609
+ i0.ɵɵelementStart(166, "div", 49);
1610
+ i0.ɵɵelement(167, "i", 60);
1611
+ i0.ɵɵtext(168);
1612
+ i0.ɵɵelementEnd()();
1613
+ i0.ɵɵelementStart(169, "div", 48)(170, "label");
1614
+ i0.ɵɵtext(171, "Model Power Rank");
1615
+ i0.ɵɵelementEnd();
1616
+ i0.ɵɵelementStart(172, "div", 49);
1617
+ i0.ɵɵelement(173, "i", 61);
1618
+ i0.ɵɵtext(174);
1619
+ i0.ɵɵelementEnd()();
1620
+ i0.ɵɵelementStart(175, "div", 48)(176, "label");
1621
+ i0.ɵɵtext(177, "Cache Hit");
1622
+ i0.ɵɵelementEnd();
1623
+ i0.ɵɵelementStart(178, "div", 49);
1624
+ i0.ɵɵelement(179, "i");
1625
+ i0.ɵɵtext(180);
1626
+ i0.ɵɵelementEnd()();
1627
+ i0.ɵɵconditionalCreate(181, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_181_Template, 7, 1, "div", 62);
1628
+ i0.ɵɵconditionalCreate(182, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_182_Template, 7, 1, "div", 48);
1629
+ i0.ɵɵconditionalCreate(183, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_183_Template, 6, 1, "div", 48);
1630
+ i0.ɵɵelementStart(184, "div", 48)(185, "label");
1631
+ i0.ɵɵtext(186, "Was Selected Result");
1632
+ i0.ɵɵelementEnd();
1633
+ i0.ɵɵelementStart(187, "div", 49);
1634
+ i0.ɵɵelement(188, "i");
1635
+ i0.ɵɵtext(189);
1636
+ i0.ɵɵelementEnd()();
1637
+ i0.ɵɵelementStart(190, "div", 48)(191, "label");
1638
+ i0.ɵɵtext(192, "Streaming Enabled");
1639
+ i0.ɵɵelementEnd();
1640
+ i0.ɵɵelementStart(193, "div", 49);
1641
+ i0.ɵɵelement(194, "i");
1642
+ i0.ɵɵtext(195);
1643
+ i0.ɵɵelementEnd()();
1644
+ i0.ɵɵconditionalCreate(196, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_196_Template, 6, 1, "div", 48);
1645
+ i0.ɵɵconditionalCreate(197, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_197_Template, 7, 1);
1646
+ i0.ɵɵelementEnd();
1647
+ i0.ɵɵconditionalCreate(198, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_198_Template, 8, 4, "div", 63);
1648
+ i0.ɵɵconditionalCreate(199, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_199_Template, 8, 4, "div", 64);
1805
1649
  i0.ɵɵelementEnd()()()();
1806
1650
  } if (rf & 2) {
1807
1651
  const ctx_r1 = i0.ɵɵnextContext();
@@ -1832,46 +1676,158 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if
1832
1676
  i0.ɵɵadvance(7);
1833
1677
  i0.ɵɵconditional(ctx_r1.record.ConfigurationID ? 30 : 31);
1834
1678
  i0.ɵɵadvance(3);
1835
- i0.ɵɵproperty("keepItemContent", true);
1836
- i0.ɵɵadvance();
1837
- i0.ɵɵproperty("expanded", ctx_r1.inputExpanded);
1838
- i0.ɵɵadvance(3);
1839
- i0.ɵɵproperty("expanded", ctx_r1.resultExpanded);
1679
+ i0.ɵɵproperty("Expanded", ctx_r1.inputExpanded);
1840
1680
  i0.ɵɵadvance(3);
1841
- i0.ɵɵproperty("expanded", ctx_r1.metricsExpanded);
1681
+ i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 36 : 37);
1682
+ i0.ɵɵadvance(2);
1683
+ i0.ɵɵproperty("Expanded", ctx_r1.resultExpanded);
1842
1684
  i0.ɵɵadvance(3);
1843
- i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ? 43 : -1);
1685
+ i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 41 : -1);
1844
1686
  i0.ɵɵadvance();
1845
- i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ? 44 : -1);
1687
+ i0.ɵɵconditional(ctx_r1.record.Result && ctx_r1.record.Result.trim() !== "" ? 42 : !ctx_r1.record.ErrorMessage ? 43 : -1);
1688
+ i0.ɵɵadvance(2);
1689
+ i0.ɵɵproperty("Expanded", ctx_r1.metricsExpanded);
1690
+ i0.ɵɵadvance(10);
1691
+ i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensPrompt));
1846
1692
  i0.ɵɵadvance();
1847
- i0.ɵɵproperty("expanded", false);
1848
- i0.ɵɵadvance(3);
1849
- i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ? 48 : -1);
1693
+ i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ? 55 : -1);
1694
+ i0.ɵɵadvance(7);
1695
+ i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCompletion));
1850
1696
  i0.ɵɵadvance();
1851
- i0.ɵɵproperty("expanded", false);
1697
+ i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ? 63 : -1);
1698
+ i0.ɵɵadvance(7);
1699
+ i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensUsed));
1700
+ i0.ɵɵadvance();
1701
+ i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ? 71 : -1);
1702
+ i0.ɵɵadvance(7);
1703
+ i0.ɵɵtextInterpolate(ctx_r1.formatCost(ctx_r1.record.Cost));
1704
+ i0.ɵɵadvance();
1705
+ i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ? 79 : -1);
1706
+ i0.ɵɵadvance();
1707
+ i0.ɵɵconditional(ctx_r1.record.CostCurrency ? 80 : -1);
1708
+ i0.ɵɵadvance();
1709
+ i0.ɵɵconditional(ctx_r1.record.QueueTime != null ? 81 : -1);
1710
+ i0.ɵɵadvance();
1711
+ i0.ɵɵconditional(ctx_r1.record.PromptTime != null ? 82 : -1);
1712
+ i0.ɵɵadvance();
1713
+ i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ? 83 : -1);
1714
+ i0.ɵɵadvance(2);
1715
+ i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ? 85 : -1);
1716
+ i0.ɵɵadvance();
1717
+ i0.ɵɵconditional(ctx_r1.record.AgentID ? 86 : -1);
1718
+ i0.ɵɵadvance();
1719
+ i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ? 87 : -1);
1720
+ i0.ɵɵadvance();
1721
+ i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ? 88 : -1);
1722
+ i0.ɵɵadvance();
1723
+ i0.ɵɵproperty("Expanded", false);
1724
+ i0.ɵɵadvance(4);
1725
+ i0.ɵɵconditional(ctx_r1.record.AgentID ? 93 : -1);
1726
+ i0.ɵɵadvance();
1727
+ i0.ɵɵconditional(ctx_r1.record.RunType ? 94 : -1);
1728
+ i0.ɵɵadvance();
1729
+ i0.ɵɵconditional(ctx_r1.record.ResponseFormat ? 95 : -1);
1730
+ i0.ɵɵadvance(4);
1731
+ i0.ɵɵclassProp("null-value", ctx_r1.record.Temperature === null || ctx_r1.record.Temperature === undefined);
1732
+ i0.ɵɵadvance(2);
1733
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Temperature !== null && ctx_r1.record.Temperature !== undefined ? ctx_r1.record.Temperature : "\u2014", " ");
1734
+ i0.ɵɵadvance(4);
1735
+ i0.ɵɵclassProp("null-value", ctx_r1.record.TopP === null || ctx_r1.record.TopP === undefined);
1736
+ i0.ɵɵadvance(2);
1737
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.TopP !== null && ctx_r1.record.TopP !== undefined ? ctx_r1.record.TopP : "\u2014", " ");
1738
+ i0.ɵɵadvance(4);
1739
+ i0.ɵɵclassProp("null-value", ctx_r1.record.TopK === null || ctx_r1.record.TopK === undefined);
1740
+ i0.ɵɵadvance(2);
1741
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.TopK !== null && ctx_r1.record.TopK !== undefined ? ctx_r1.record.TopK : "\u2014", " ");
1742
+ i0.ɵɵadvance(4);
1743
+ i0.ɵɵclassProp("null-value", ctx_r1.record.MinP === null || ctx_r1.record.MinP === undefined);
1744
+ i0.ɵɵadvance(2);
1745
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.MinP !== null && ctx_r1.record.MinP !== undefined ? ctx_r1.record.MinP : "\u2014", " ");
1746
+ i0.ɵɵadvance(4);
1747
+ i0.ɵɵclassProp("null-value", ctx_r1.record.FrequencyPenalty === null || ctx_r1.record.FrequencyPenalty === undefined);
1748
+ i0.ɵɵadvance(2);
1749
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FrequencyPenalty !== null && ctx_r1.record.FrequencyPenalty !== undefined ? ctx_r1.record.FrequencyPenalty : "\u2014", " ");
1750
+ i0.ɵɵadvance(4);
1751
+ i0.ɵɵclassProp("null-value", ctx_r1.record.PresencePenalty === null || ctx_r1.record.PresencePenalty === undefined);
1752
+ i0.ɵɵadvance(2);
1753
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.PresencePenalty !== null && ctx_r1.record.PresencePenalty !== undefined ? ctx_r1.record.PresencePenalty : "\u2014", " ");
1754
+ i0.ɵɵadvance(4);
1755
+ i0.ɵɵclassProp("null-value", ctx_r1.record.Seed === null || ctx_r1.record.Seed === undefined);
1756
+ i0.ɵɵadvance(2);
1757
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Seed !== null && ctx_r1.record.Seed !== undefined ? ctx_r1.record.Seed : "\u2014", " ");
1758
+ i0.ɵɵadvance(4);
1759
+ i0.ɵɵclassProp("null-value", !ctx_r1.record.StopSequences);
1760
+ i0.ɵɵadvance(2);
1761
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StopSequences || "\u2014", " ");
1762
+ i0.ɵɵadvance(4);
1763
+ i0.ɵɵclassProp("null-value", !ctx_r1.record.AssistantPrefill);
1764
+ i0.ɵɵadvance(2);
1765
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.AssistantPrefill || "\u2014", " ");
1766
+ i0.ɵɵadvance();
1767
+ i0.ɵɵconditional(ctx_r1.record.RunAt ? 150 : -1);
1768
+ i0.ɵɵadvance();
1769
+ i0.ɵɵconditional(ctx_r1.record.CompletedAt ? 151 : -1);
1770
+ i0.ɵɵadvance();
1771
+ i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ? 152 : -1);
1772
+ i0.ɵɵadvance();
1773
+ i0.ɵɵproperty("Expanded", false);
1774
+ i0.ɵɵadvance(9);
1775
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status || "Unknown", " ");
1776
+ i0.ɵɵadvance(6);
1777
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.SelectionStrategy || "\u2014", " ");
1778
+ i0.ɵɵadvance(4);
1779
+ i0.ɵɵclassProp("null-value", ctx_r1.record.ModelPowerRank === null);
1780
+ i0.ɵɵadvance(2);
1781
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ModelPowerRank !== null ? ctx_r1.record.ModelPowerRank : "\u2014", " ");
1782
+ i0.ɵɵadvance(5);
1783
+ i0.ɵɵclassMap(ctx_r1.record.CacheHit ? "fa-solid fa-check-circle" : "fa-solid fa-times-circle");
1784
+ i0.ɵɵadvance();
1785
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CacheHit ? "Yes" : "No", " ");
1786
+ i0.ɵɵadvance();
1787
+ i0.ɵɵconditional(ctx_r1.record.CacheKey ? 181 : -1);
1788
+ i0.ɵɵadvance();
1789
+ i0.ɵɵconditional(ctx_r1.record.JudgeID ? 182 : -1);
1790
+ i0.ɵɵadvance();
1791
+ i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ? 183 : -1);
1792
+ i0.ɵɵadvance(5);
1793
+ i0.ɵɵclassMap(ctx_r1.record.WasSelectedResult ? "fa-solid fa-trophy" : "fa-solid fa-times");
1794
+ i0.ɵɵadvance();
1795
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.WasSelectedResult ? "Yes" : "No", " ");
1796
+ i0.ɵɵadvance(5);
1797
+ i0.ɵɵclassMap(ctx_r1.record.StreamingEnabled ? "fa-solid fa-stream" : "fa-solid fa-ban");
1798
+ i0.ɵɵadvance();
1799
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StreamingEnabled ? "Yes" : "No", " ");
1800
+ i0.ɵɵadvance();
1801
+ i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ? 196 : -1);
1802
+ i0.ɵɵadvance();
1803
+ i0.ɵɵconditional(ctx_r1.record.Cancelled ? 197 : -1);
1804
+ i0.ɵɵadvance();
1805
+ i0.ɵɵconditional(ctx_r1.record.ModelSelection ? 198 : -1);
1806
+ i0.ɵɵadvance();
1807
+ i0.ɵɵconditional(ctx_r1.record.ErrorDetails ? 199 : -1);
1852
1808
  } }
1853
1809
  function MJAIPromptRunFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1854
- const _r26 = i0.ɵɵgetCurrentView();
1855
- i0.ɵɵelementStart(0, "div", 188);
1856
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
1857
- i0.ɵɵelementStart(1, "div", 189);
1858
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r26); return i0.ɵɵresetView($event.stopPropagation()); });
1859
- i0.ɵɵelementStart(2, "div", 190)(3, "span", 191);
1860
- i0.ɵɵelement(4, "i", 80);
1810
+ const _r25 = i0.ɵɵgetCurrentView();
1811
+ i0.ɵɵelementStart(0, "div", 185);
1812
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
1813
+ i0.ɵɵelementStart(1, "div", 186);
1814
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); });
1815
+ i0.ɵɵelementStart(2, "div", 187)(3, "span", 188);
1816
+ i0.ɵɵelement(4, "i", 103);
1861
1817
  i0.ɵɵtext(5);
1862
1818
  i0.ɵɵelementEnd();
1863
- i0.ɵɵelementStart(6, "div", 192)(7, "button", 193);
1864
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
1865
- i0.ɵɵelement(8, "i", 78);
1819
+ i0.ɵɵelementStart(6, "div", 189)(7, "button", 190);
1820
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
1821
+ i0.ɵɵelement(8, "i", 101);
1866
1822
  i0.ɵɵtext(9, " Copy ");
1867
1823
  i0.ɵɵelementEnd();
1868
- i0.ɵɵelementStart(10, "button", 194);
1869
- i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
1870
- i0.ɵɵelement(11, "i", 195);
1824
+ i0.ɵɵelementStart(10, "button", 191);
1825
+ i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
1826
+ i0.ɵɵelement(11, "i", 192);
1871
1827
  i0.ɵɵtext(12, " Close ");
1872
1828
  i0.ɵɵelementEnd()()();
1873
- i0.ɵɵelementStart(13, "div", 196);
1874
- i0.ɵɵelement(14, "mj-code-editor", 197);
1829
+ i0.ɵɵelementStart(13, "div", 193);
1830
+ i0.ɵɵelement(14, "mj-code-editor", 194);
1875
1831
  i0.ɵɵelementEnd()()();
1876
1832
  } if (rf & 2) {
1877
1833
  const ctx_r1 = i0.ɵɵnextContext();
@@ -1926,7 +1882,7 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
1926
1882
  this.FullScreenLanguage = 'json';
1927
1883
  this.FullScreenTitle = '';
1928
1884
  // Field injections
1929
- this.testHarnessWindowService = inject(TestHarnessWindowService);
1885
+ this.testHarnessWindowService = inject(TestHarnessWindowManagerService);
1930
1886
  this.viewContainerRef = inject(ViewContainerRef);
1931
1887
  }
1932
1888
  async ngOnInit() {
@@ -2358,9 +2314,9 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
2358
2314
  // Don't auto-expand validation panel anymore - let user expand when needed
2359
2315
  }
2360
2316
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIPromptRunFormComponentExtended_BaseFactory; return function MJAIPromptRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIPromptRunFormComponentExtended_BaseFactory || (ɵMJAIPromptRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIPromptRunFormComponentExtended)))(__ngFactoryType__ || MJAIPromptRunFormComponentExtended); }; })(); }
2361
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [["form", "ngForm"], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "fullscreen-overlay"], [3, "Form"], [1, "prompt-run-header"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "run-meta"], [1, "meta-card", "status-card"], [1, "c3-card-label"], [1, "meta-card-body"], [1, "status-indicator"], [1, "meta-card", "execution-card"], [1, "model-card-c3"], ["title", "View Original Run", 1, "original-run"], [1, "run-actions"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "metrics-bar"], [1, "form-content", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [3, "keepItemContent"], [3, "stateChange", "expanded"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], [3, "expanded"], [1, "prompt-card-c3"], [1, "meta-card", "prompt-single-card"], ["title", "View Agent Prompt", 1, "c3-child-section", 3, "click"], [1, "fa-solid", "fa-comment", "prompt-icon"], [1, "c3-divider"], [1, "c3-line"], [1, "c3-divider-label"], ["title", "View System Prompt", 1, "c3-parent-section", 3, "click"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-arrow-up-right-from-square", "c3-link-icon"], ["title", "View Prompt", 1, "meta-card-body", "clickable", 3, "click"], [1, "fa-solid", "fa-comment-dots", 2, "color", "var(--mj-brand-primary)"], ["title", "View Model", 1, "c3-card-body", 3, "click"], [1, "c3-model-name"], [1, "fa-solid", "fa-microchip"], [1, "c3-vendor-name"], [1, "fa-solid", "fa-level-up-alt"], [1, "original-link", 3, "click"], [1, "metric-item"], [1, "metric-content"], [1, "metric-label"], [1, "metric-value"], ["href", "javascript:void(0)", 1, "config-link", 3, "click"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "fa-temperature-high"], [1, "fa-solid", "fa-percentage"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-tachometer-alt"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "fa-solid", "fa-comment-dots"], [1, "panel-badge"], [1, "panel-content"], [1, "nested-panels"], [1, "empty-state"], [1, "sub-expansion-panel", 3, "expanded", "animation"], ["kendoExpansionPanelTitleDirective", ""], [1, "sub-panel-content"], [1, "loading-state"], [3, "messages"], [1, "json-editor-container"], [1, "json-toolbar"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View full screen", 3, "click"], [1, "fa-solid", "fa-expand"], ["name", "formattedMessages", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "sub-panel-title"], [1, "fa-solid", "fa-comments"], [1, "panel-count"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-database"], ["name", "formattedData", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-square-check"], [1, "panel-badge", "error"], [1, "error-message"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["name", "formattedResult", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-inbox"], [1, "error-info"], [1, "finish-reason"], [1, "error-details"], [1, "error-hint"], [2, "margin", "0"], [2, "height", "200px", "width", "100%", 3, "ngModel", "disabled", "language", "lineWrapping"], [1, "fa-solid", "fa-chart-line"], [1, "metrics-grid"], [1, "metric-card"], [1, "metric-header"], [1, "fa-solid", "fa-message"], [1, "metric-value", "large"], [1, "metric-rollup"], [1, "fa-solid", "fa-reply"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [1, "fa-solid", "fa-hourglass-start"], [1, "fa-solid", "fa-brain"], [1, "fa-solid", "fa-flag-checkered"], [1, "metric-value", "link", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "fa-solid", "fa-shield-check"], [1, "panel-badge", "success"], [1, "validation-summary"], [1, "summary-header"], [1, "validation-status"], [1, "validation-metrics"], [1, "metric-card", "small"], [1, "validation-error"], [1, "common-error"], [1, "retry-timeline"], [1, "validation-attempts"], [1, "validation-json"], [1, "error-count"], [1, "fa-solid", "fa-repeat"], [1, "timeline-info"], [1, "timeline-stat"], [1, "fa-solid", "fa-stopwatch"], [1, "attempts-list"], [1, "attempt-item", 3, "success", "failed"], [1, "attempt-item"], [1, "attempt-number"], [1, "attempt-details"], [1, "attempt-time"], [1, "output-length"], [1, "attempt-error"], [1, "json-viewer-container"], ["name", "formattedValidationSummary", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedValidationAttempts", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-sitemap"], [1, "parent-run-section"], [1, "child-runs-section"], [1, "run-item", "parent", 3, "click"], [1, "run-item-icon"], [1, "run-item-content"], [1, "run-item-title"], [1, "run-item-type"], [1, "run-item-meta"], [1, "fa-solid", "fa-level-down-alt"], [1, "runs-list"], [1, "run-item", "child"], [1, "run-item", "child", 3, "click"], [1, "execution-order"], [1, "fa-solid", "fa-info-circle"], [1, "detail-fields-grid"], [1, "detail-field"], [1, "detail-value"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-plus-circle"], [1, "fa-solid", "fa-seedling"], [1, "fa-solid", "fa-stop-circle"], [1, "fa-solid", "fa-wand-magic-sparkles"], ["title", "View Agent", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-check-circle"], ["name", "formattedModelSpecificResponseDetails", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-strategy"], [1, "fa-solid", "fa-ranking-star"], [1, "detail-field", "full-width"], [1, "model-selection-json"], [1, "error-details-json"], [1, "fa-solid", "fa-key"], ["title", "View Judge Prompt", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-gavel"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-bolt"], [1, "detail-value", "error"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-exclamation-circle"], ["name", "formattedModelSelection", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedErrorDetails", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fullscreen-overlay", 3, "click"], [1, "fullscreen-container", 3, "click"], [1, "fullscreen-header"], [1, "fullscreen-title"], [1, "fullscreen-actions"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Copy content", 3, "click"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fullscreen-body"], [2, "height", "100%", "width", "100%", 3, "value", "readonly", "language"]], template: function MJAIPromptRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2317
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [["form", "ngForm"], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "fullscreen-overlay"], [3, "Form"], [1, "prompt-run-header"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "run-meta"], [1, "meta-card", "status-card"], [1, "c3-card-label"], [1, "meta-card-body"], [1, "status-indicator"], [1, "meta-card", "execution-card"], [1, "model-card-c3"], ["title", "View Original Run", 1, "original-run"], [1, "run-actions"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Refresh data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "metrics-bar"], [1, "form-content", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "nested-panels"], [1, "empty-state"], [1, "error-message"], [1, "json-editor-container"], [1, "metrics-grid"], [1, "metric-card"], [1, "metric-header"], [1, "fa-solid", "fa-message"], [1, "metric-value", "large"], [1, "metric-rollup"], [1, "fa-solid", "fa-reply"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-dollar-sign"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [2, "margin-bottom", "8px", 3, "Expanded"], [1, "detail-fields-grid"], [1, "detail-field"], [1, "detail-value"], [1, "fa-solid", "fa-temperature-high"], [1, "fa-solid", "fa-percentage"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-repeat"], [1, "fa-solid", "fa-plus-circle"], [1, "fa-solid", "fa-seedling"], [1, "fa-solid", "fa-stop-circle"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-strategy"], [1, "fa-solid", "fa-ranking-star"], [1, "detail-field", "full-width"], [1, "model-selection-json"], [1, "error-details-json"], [1, "prompt-card-c3"], [1, "meta-card", "prompt-single-card"], ["title", "View Agent Prompt", 1, "c3-child-section", 3, "click"], [1, "fa-solid", "fa-comment", "prompt-icon"], [1, "c3-divider"], [1, "c3-line"], [1, "c3-divider-label"], ["title", "View System Prompt", 1, "c3-parent-section", 3, "click"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-arrow-up-right-from-square", "c3-link-icon"], ["title", "View Prompt", 1, "meta-card-body", "clickable", 3, "click"], [1, "fa-solid", "fa-comment-dots", 2, "color", "var(--mj-brand-primary)"], ["title", "View Model", 1, "c3-card-body", 3, "click"], [1, "c3-model-name"], [1, "fa-solid", "fa-microchip"], [1, "c3-vendor-name"], [1, "fa-solid", "fa-level-up-alt"], [1, "original-link", 3, "click"], [1, "metric-item"], [1, "metric-content"], [1, "metric-label"], [1, "metric-value"], ["href", "javascript:void(0)", 1, "config-link", 3, "click"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-tachometer-alt"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "fa-solid", "fa-comment-dots"], [1, "panel-badge"], [1, "sub-expansion-panel", 2, "margin-bottom", "8px", 3, "Expanded"], [1, "sub-panel-content"], [1, "loading-state"], [3, "messages"], [1, "json-toolbar"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "View full screen", 3, "click"], [1, "fa-solid", "fa-expand"], ["name", "formattedMessages", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "sub-panel-title"], [1, "fa-solid", "fa-comments"], [1, "panel-count"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-database"], ["name", "formattedData", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-square-check"], [1, "panel-badge", "error"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["name", "formattedResult", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-inbox"], [1, "error-info"], [1, "finish-reason"], [1, "error-details"], [1, "error-hint"], [2, "margin", "0"], [2, "height", "200px", "width", "100%", 3, "ngModel", "disabled", "language", "lineWrapping"], [1, "fa-solid", "fa-chart-line"], [1, "fa-solid", "fa-hourglass-start"], [1, "fa-solid", "fa-brain"], [1, "fa-solid", "fa-flag-checkered"], [1, "metric-value", "link", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "validation-summary"], [1, "summary-header"], [1, "validation-status"], [1, "validation-metrics"], [1, "metric-card", "small"], [1, "validation-error"], [1, "common-error"], [1, "retry-timeline"], [1, "validation-attempts"], [1, "validation-json"], [1, "fa-solid", "fa-shield-check"], [1, "panel-badge", "success"], [1, "error-count"], [1, "timeline-info"], [1, "timeline-stat"], [1, "fa-solid", "fa-stopwatch"], [1, "attempts-list"], [1, "attempt-item", 3, "success", "failed"], [1, "attempt-item"], [1, "attempt-number"], [1, "attempt-details"], [1, "attempt-time"], [1, "output-length"], [1, "attempt-error"], [1, "json-viewer-container"], ["name", "formattedValidationSummary", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedValidationAttempts", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "parent-run-section"], [1, "child-runs-section"], [1, "fa-solid", "fa-sitemap"], [1, "run-item", "parent", 3, "click"], [1, "run-item-icon"], [1, "run-item-content"], [1, "run-item-title"], [1, "run-item-type"], [1, "run-item-meta"], [1, "fa-solid", "fa-level-down-alt"], [1, "runs-list"], [1, "run-item", "child"], [1, "run-item", "child", 3, "click"], [1, "execution-order"], ["title", "View Agent", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-check-circle"], ["name", "formattedModelSpecificResponseDetails", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-key"], ["title", "View Judge Prompt", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-gavel"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-bolt"], [1, "detail-value", "error"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-exclamation-circle"], ["name", "formattedModelSelection", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedErrorDetails", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fullscreen-overlay", 3, "click"], [1, "fullscreen-container", 3, "click"], [1, "fullscreen-header"], [1, "fullscreen-title"], [1, "fullscreen-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy content", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fullscreen-body"], [2, "height", "100%", "width", "100%", 3, "value", "readonly", "language"]], template: function MJAIPromptRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2362
2318
  i0.ɵɵelementStart(0, "div", 1);
2363
- i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 52, 29, "form", 2);
2319
+ i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 200, 98, "form", 2);
2364
2320
  i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_2_Template, 15, 4, "div", 3);
2365
2321
  i0.ɵɵelementEnd();
2366
2322
  } if (rf & 2) {
@@ -2368,7 +2324,7 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
2368
2324
  i0.ɵɵconditional(ctx.record ? 1 : -1);
2369
2325
  i0.ɵɵadvance();
2370
2326
  i0.ɵɵconditional(ctx.FullScreenContent ? 2 : -1);
2371
- } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i2.PanelBarComponent, i2.PanelBarItemComponent, i2.PanelBarContentDirective, i2.PanelBarItemTitleDirective, i3.ButtonComponent, i4.MjFormToolbarComponent, i5.CodeEditorComponent, i6.ChatMessageViewerComponent, i7.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-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.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-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-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item.k-expanded[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] .k-content[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nkendo-panelbar[_ngcontent-%COMP%] {\n border: none !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-content[_ngcontent-%COMP%] {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
2327
+ } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i3.MjFormToolbarComponent, i4.CodeEditorComponent, i5.ChatMessageViewerComponent, i6.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-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.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-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-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.nested-panels[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nmj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
2372
2328
  };
2373
2329
  MJAIPromptRunFormComponentExtended = __decorate([
2374
2330
  RegisterClass(BaseFormComponent, 'MJ: AI Prompt Runs')
@@ -2376,7 +2332,7 @@ MJAIPromptRunFormComponentExtended = __decorate([
2376
2332
  export { MJAIPromptRunFormComponentExtended };
2377
2333
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptRunFormComponentExtended, [{
2378
2334
  type: Component,
2379
- args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <!-- Status Card -->\n <div class=\"meta-card status-card\">\n <div class=\"c3-card-label\">Status</div>\n <div class=\"meta-card-body\">\n <span class=\"status-indicator\" [style.background-color]=\"getStatusColor()\"></span>\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n {{ getStatusText() }}\n </div>\n </div>\n\n <!-- Execution Card -->\n @if (record.RunType) {\n <div class=\"meta-card execution-card\">\n <div class=\"c3-card-label\">Execution</div>\n <div class=\"meta-card-body\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\" [style.color]=\"getRunTypeColor(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n\n <!-- Prompt Card -->\n @if (prompt) {\n @if (record.ChildPromptID) {\n <!-- C3 Stacked Connector: child prompt prominent, parent nested -->\n <div class=\"prompt-card-c3\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"c3-child-section\" (click)=\"navigateToEntity('MJ: AI Prompts', record.ChildPromptID)\" title=\"View Agent Prompt\">\n <i class=\"fa-solid fa-comment prompt-icon\"></i>\n {{ record.ChildPrompt }}\n </div>\n <div class=\"c3-divider\">\n <span class=\"c3-line\"></span>\n <span class=\"c3-divider-label\">wrapped by</span>\n <span class=\"c3-line\"></span>\n </div>\n <div class=\"c3-parent-section\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View System Prompt\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ prompt.Name }}\n <i class=\"fa-solid fa-arrow-up-right-from-square c3-link-icon\"></i>\n </div>\n </div>\n } @else {\n <!-- Single prompt (no child) \u2014 same card style -->\n <div class=\"meta-card prompt-single-card\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"meta-card-body clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\" style=\"color: var(--mj-brand-primary);\"></i>\n {{ prompt.Name }}\n </div>\n </div>\n }\n }\n\n <!-- Model Card -->\n @if (model) {\n <div class=\"model-card-c3\">\n <div class=\"c3-card-label\">Model</div>\n <div class=\"c3-card-body\" (click)=\"navigateToEntity('MJ: AI Models', model.ID)\" title=\"View Model\">\n <span class=\"c3-model-name\"><i class=\"fa-solid fa-microchip\"></i> {{ model.Name }}</span>\n @if (record.Vendor) {\n <span class=\"c3-vendor-name\">{{ record.Vendor }}</span>\n }\n </div>\n </div>\n }\n @if (record.RerunFromPromptRunID) {\n <span class=\"original-run\" title=\"View Original Run\">\n <i class=\"fa-solid fa-level-up-alt\"></i>\n <a (click)=\"navigateToOriginalRun()\" class=\"original-link\">Original Run</a>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n @if (record.ConfigurationID) {\n <!-- Configuration Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Configuration</div>\n <div class=\"metric-value\">\n <a href=\"javascript:void(0)\" class=\"config-link\" (click)=\"navigateToEntity('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n @if (record.Temperature !== null && record.Temperature !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Temperature</div>\n <div class=\"metric-value\">{{ record.Temperature }}</div>\n </div>\n </div>\n }\n @if (record.TopP !== null && record.TopP !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-percentage\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top P</div>\n <div class=\"metric-value\">{{ record.TopP }}</div>\n </div>\n </div>\n }\n @if (record.TopK !== null && record.TopK !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-list-ol\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top K</div>\n <div class=\"metric-value\">{{ record.TopK }}</div>\n </div>\n </div>\n }\n @if (record.EffortLevel !== null && record.EffortLevel !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Effort Level</div>\n <div class=\"metric-value\">{{ record.EffortLevel }}</div>\n </div>\n </div>\n }\n @if (record.ResponseFormat) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-code\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Response Format</div>\n <div class=\"metric-value\">{{ record.ResponseFormat }}</div>\n </div>\n </div>\n }\n </div>\n \n <!-- Execution Metrics Bar (always show when configuration exists) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <!-- Execution Metrics Bar (original behavior when no configuration) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n <kendo-panelbar [keepItemContent]=\"true\">\n \n <!-- Input Panel with nested sub-panels -->\n <kendo-panelbar-item [expanded]=\"inputExpanded\" (stateChange)=\"onInputPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <!-- Nested expansion panels for sub-sections -->\n <div class=\"nested-panels\">\n <!-- Messages Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"messagesExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Messages\n @if (chatMessages.length > 0) {\n <span class=\"panel-count\">({{ chatMessages.length }})</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (isParsingMessages || isLoadingRelatedData) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading messages...</p>\n </div>\n } @else if (chatMessages.length > 0) {\n <mj-chat-message-viewer \n [messages]=\"chatMessages\">\n </mj-chat-message-viewer>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No chat messages found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Data Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"dataExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data\n @if (inputData) {\n <span class=\"panel-badge\">Object</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedData, 'json', 'Data')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No data object found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Raw Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"rawExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Raw\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedMessages, 'json', 'Raw Messages')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </kendo-expansionpanel>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Result Panel -->\n <kendo-panelbar-item [expanded]=\"resultExpanded\" (stateChange)=\"onResultPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedResult, 'json', 'Result')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n @if (record.Status === 'Failed' || record.Success === false) {\n <div class=\"error-info\">\n @if (record.Status) {\n <p class=\"finish-reason\">\n <strong>Status:</strong> {{ record.Status }}\n </p>\n }\n @if (formattedErrorDetails) {\n <div class=\"error-details\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor\n [ngModel]=\"formattedErrorDetails\"\n [disabled]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (!formattedErrorDetails) {\n <p class=\"error-hint\">\n The prompt execution failed but no additional error information is available.\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Token Usage & Metrics Panel -->\n <kendo-panelbar-item [expanded]=\"metricsExpanded\" (stateChange)=\"onMetricsPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n \n <!-- Timing Metrics -->\n @if (record.QueueTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <h4>Queue Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.QueueTime) }}</div>\n </div>\n }\n \n @if (record.PromptTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>Prompt Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.PromptTime) }}</div>\n </div>\n }\n \n @if (record.CompletionTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <h4>Completion Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.CompletionTime) }}</div>\n </div>\n }\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <kendo-panelbar-item [expanded]=\"validationExpanded\" (stateChange)=\"onValidationPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Validation & Retries\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <span class=\"panel-count\">({{ record.ValidationAttemptCount }} attempts)</span>\n }\n @if (record.FinalValidationPassed) {\n <span class=\"panel-badge success\">Passed</span>\n } @else if (record.FinalValidationPassed === false) {\n <span class=\"panel-badge error\">Failed</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <!-- Validation Summary -->\n <div class=\"validation-summary\">\n <div class=\"summary-header\">\n <h4>Validation Summary</h4>\n <div class=\"validation-status\" [class.success]=\"record.FinalValidationPassed\" [class.failed]=\"!record.FinalValidationPassed\">\n <i [class]=\"record.FinalValidationPassed ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.FinalValidationPassed ? 'Validation Passed' : 'Validation Failed' }}\n </div>\n </div>\n \n <div class=\"validation-metrics\">\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Total Attempts</div>\n <div class=\"metric-value\">{{ record.ValidationAttemptCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Successful</div>\n <div class=\"metric-value\">{{ record.SuccessfulValidationCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Behavior</div>\n <div class=\"metric-value\">{{ record.ValidationBehavior || 'Not set' }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Retry Strategy</div>\n <div class=\"metric-value\">{{ record.RetryStrategy || 'Not set' }}</div>\n </div>\n </div>\n \n @if (record.FinalValidationError) {\n <div class=\"validation-error\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Final Validation Error</h5>\n <p>{{ record.FinalValidationError }}</p>\n @if (record && record.ValidationErrorCount && record.ValidationErrorCount > 0) {\n <span class=\"error-count\">{{ record.ValidationErrorCount }} validation errors</span>\n }\n </div>\n }\n \n @if (record.CommonValidationError && record.CommonValidationError !== record.FinalValidationError) {\n <div class=\"common-error\">\n <h5><i class=\"fa-solid fa-repeat\"></i> Most Common Error</h5>\n <p>{{ record.CommonValidationError }}</p>\n </div>\n }\n </div>\n \n <!-- Retry Timeline -->\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <div class=\"retry-timeline\">\n <h4>Retry Timeline</h4>\n <div class=\"timeline-info\">\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>First Attempt: {{ record.FirstAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <span>Last Attempt: {{ record.LastAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span>Total Retry Duration: {{ formatDuration(record.TotalRetryDurationMS) }}</span>\n </div>\n </div>\n </div>\n }\n \n <!-- Validation Attempts Details -->\n @if (validationAttempts && validationAttempts.length > 0) {\n <div class=\"validation-attempts\">\n <h4>Validation Attempts</h4>\n <div class=\"attempts-list\">\n @for (attempt of validationAttempts; track attempt.attemptNumber) {\n <div class=\"attempt-item\" [class.success]=\"attempt.success\" [class.failed]=\"!attempt.success\">\n <div class=\"attempt-number\">\n <i [class]=\"attempt.success ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n Attempt #{{ attempt.attemptNumber }}\n </div>\n <div class=\"attempt-details\">\n <span class=\"attempt-time\">{{ attempt.timestamp }}</span>\n @if (!attempt.success) {\n <span class=\"attempt-error\">{{ attempt.errorMessage || 'Unknown error' }}</span>\n @if (attempt.validationErrorCount > 0) {\n <span class=\"error-count\">({{ attempt.validationErrorCount }} errors)</span>\n }\n }\n @if (attempt.outputLength) {\n <span class=\"output-length\">Output: {{ attempt.outputLength }} chars</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Validation Summary JSON -->\n @if (validationSummary) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Summary Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedValidationSummary, 'json', 'Validation Summary')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationSummary\"\n name=\"formattedValidationSummary\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Validation Attempts JSON -->\n @if (record.ValidationAttempts) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Attempts (Raw JSON)</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedValidationAttempts, 'json', 'Validation Attempts')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationAttempts\"\n name=\"formattedValidationAttempts\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <kendo-panelbar-item [expanded]=\"hierarchyExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Additional Details Panel -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n \n @if (record.RunType) {\n <div class=\"detail-field\">\n <label>Run Type</label>\n <div class=\"detail-value\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n \n @if (record.ResponseFormat) {\n <div class=\"detail-field\">\n <label>Response Format</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-code\"></i>\n {{ record.ResponseFormat }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Temperature</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Temperature === null || record.Temperature === undefined\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n {{ record.Temperature !== null && record.Temperature !== undefined ? record.Temperature : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopP === null || record.TopP === undefined\">\n <i class=\"fa-solid fa-percentage\"></i>\n {{ record.TopP !== null && record.TopP !== undefined ? record.TopP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top K</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopK === null || record.TopK === undefined\">\n <i class=\"fa-solid fa-list-ol\"></i>\n {{ record.TopK !== null && record.TopK !== undefined ? record.TopK : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Min P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.MinP === null || record.MinP === undefined\">\n <i class=\"fa-solid fa-filter\"></i>\n {{ record.MinP !== null && record.MinP !== undefined ? record.MinP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Frequency Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.FrequencyPenalty === null || record.FrequencyPenalty === undefined\">\n <i class=\"fa-solid fa-repeat\"></i>\n {{ record.FrequencyPenalty !== null && record.FrequencyPenalty !== undefined ? record.FrequencyPenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Presence Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.PresencePenalty === null || record.PresencePenalty === undefined\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n {{ record.PresencePenalty !== null && record.PresencePenalty !== undefined ? record.PresencePenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Seed</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Seed === null || record.Seed === undefined\">\n <i class=\"fa-solid fa-seedling\"></i>\n {{ record.Seed !== null && record.Seed !== undefined ? record.Seed : '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Stop Sequences</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.StopSequences\">\n <i class=\"fa-solid fa-stop-circle\"></i>\n {{ record.StopSequences || '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Assistant Prefill</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.AssistantPrefill\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ record.AssistantPrefill || '\u2014' }}\n </div>\n </div>\n\n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <kendo-panelbar-item [expanded]=\"modelSpecificExpanded\" (stateChange)=\"onModelSpecificPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Specific Response Details\n <span class=\"panel-badge\">JSON</span>\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedModelSpecificResponseDetails, 'Model Specific Response Details')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedModelSpecificResponseDetails, 'json', 'Model Specific Response Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedModelSpecificResponseDetails\"\n name=\"formattedModelSpecificResponseDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <kendo-panelbar-item [expanded]=\"false\" (stateChange)=\"onModelSelectionPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Selection & Performance\n @if (record.CacheHit) {\n <span class=\"panel-badge success\">Cached</span>\n }\n @if (record.WasSelectedResult) {\n <span class=\"panel-badge success\">Selected</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n <!-- Model Selection Details -->\n <div class=\"detail-field\">\n <label>Status</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ record.Status || 'Unknown' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Selection Strategy</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-strategy\"></i>\n {{ record.SelectionStrategy || '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Model Power Rank</label>\n <div class=\"detail-value\" [class.null-value]=\"record.ModelPowerRank === null\">\n <i class=\"fa-solid fa-ranking-star\"></i>\n {{ record.ModelPowerRank !== null ? record.ModelPowerRank : '\u2014' }}\n </div>\n </div>\n \n <!-- Cache Information -->\n <div class=\"detail-field\">\n <label>Cache Hit</label>\n <div class=\"detail-value\">\n <i [class]=\"record.CacheHit ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.CacheHit ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.CacheKey) {\n <div class=\"detail-field full-width\">\n <label>Cache Key</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-key\"></i>\n <code>{{ record.CacheKey }}</code>\n </div>\n </div>\n }\n \n <!-- Judge Information -->\n @if (record.JudgeID) {\n <div class=\"detail-field\">\n <label>Judge Prompt</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', record.JudgeID)\" title=\"View Judge Prompt\">\n <i class=\"fa-solid fa-gavel\"></i>\n {{ record.Judge || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.JudgeScore !== null) {\n <div class=\"detail-field\">\n <label>Judge Score</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-star\"></i>\n {{ record.JudgeScore }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Was Selected Result</label>\n <div class=\"detail-value\">\n <i [class]=\"record.WasSelectedResult ? 'fa-solid fa-trophy' : 'fa-solid fa-times'\"></i>\n {{ record.WasSelectedResult ? 'Yes' : 'No' }}\n </div>\n </div>\n \n <!-- Performance Metrics -->\n <div class=\"detail-field\">\n <label>Streaming Enabled</label>\n <div class=\"detail-value\">\n <i [class]=\"record.StreamingEnabled ? 'fa-solid fa-stream' : 'fa-solid fa-ban'\"></i>\n {{ record.StreamingEnabled ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.FirstTokenTime !== null) {\n <div class=\"detail-field\">\n <label>First Token Time</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ record.FirstTokenTime }} ms\n </div>\n </div>\n }\n \n @if (record.Cancelled) {\n <div class=\"detail-field\">\n <label>Cancelled</label>\n <div class=\"detail-value error\">\n <i class=\"fa-solid fa-ban\"></i>\n Yes\n </div>\n </div>\n \n @if (record.CancellationReason) {\n <div class=\"detail-field full-width\">\n <label>Cancellation Reason</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ record.CancellationReason }}\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Model Selection JSON -->\n @if (record.ModelSelection) {\n <div class=\"model-selection-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Model Selection Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedModelSelection, 'json', 'Model Selection')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedModelSelection\"\n name=\"formattedModelSelection\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Error Details JSON -->\n @if (record.ErrorDetails) {\n <div class=\"error-details-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedErrorDetails\"\n name=\"formattedErrorDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n </kendo-panelbar>\n </div>\n </form>\n }\n\n <!-- Full-screen overlay -->\n @if (FullScreenContent) {\n <div class=\"fullscreen-overlay\" (click)=\"closeFullScreen()\">\n <div class=\"fullscreen-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"fullscreen-header\">\n <span class=\"fullscreen-title\">\n <i class=\"fa-solid fa-expand\"></i>\n {{ FullScreenTitle }}\n </span>\n <div class=\"fullscreen-actions\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"closeFullScreen()\"\n title=\"Close\">\n <i class=\"fa-solid fa-times\"></i> Close\n </button>\n </div>\n </div>\n <div class=\"fullscreen-body\">\n <mj-code-editor\n [value]=\"FullScreenContent\"\n [readonly]=\"true\"\n [language]=\"FullScreenLanguage\"\n style=\"height: 100%; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n</div>", styles: ["/* Host and Container Layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n/* Error Info Styles */\n.error-info {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details {\n margin-top: 12px;\n}\n\n.error-details h4 {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n/* Header Section */\n.prompt-run-header {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n/* Shared meta-card style (Status, Execution, single Prompt) */\n.meta-card {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Status indicator dot */\n.status-indicator {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* C3 Stacked Connector \u2014 Prompt Card */\n.prompt-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section i.prompt-icon {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section i {\n font-size: 0.75rem;\n}\n\n.c3-link-icon {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section:hover .c3-link-icon {\n opacity: 0.8;\n}\n\n/* C3 Model Card */\n.model-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name i {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n/* Nested Sub-Panel Styles */\n.sub-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content {\n padding: 0;\n}\n\n/* Nested kendo-panelbar styles */\n.k-panelbar .k-panelbar {\n border: none;\n background: transparent;\n}\n\n.k-panelbar .k-panelbar > .k-item {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar .k-panelbar > .k-item > .k-link {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar .k-panelbar > .k-item.k-expanded > .k-link {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar .k-panelbar .k-content {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n/* Ensure chat message viewer takes appropriate height */\n.sub-panel-content mj-chat-message-viewer {\n display: block;\n min-height: 200px;\n max-height: 750px; /* Increased by 50% from 500px */\n height: auto;\n overflow: hidden;\n}\n\n/* Different colors for sub-expansion panels */\n.sub-expansion-panel {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel::ng-deep .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel::ng-deep .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Kendo Overrides */\nkendo-panelbar {\n border: none !important;\n}\n\nkendo-panelbar-item {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item .k-panelbar-header {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item .k-panelbar-header:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item .k-panelbar-content {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Full-screen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title i {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body mj-code-editor {\n display: block;\n height: 100%;\n}\n"] }]
2335
+ args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <!-- Status Card -->\n <div class=\"meta-card status-card\">\n <div class=\"c3-card-label\">Status</div>\n <div class=\"meta-card-body\">\n <span class=\"status-indicator\" [style.background-color]=\"getStatusColor()\"></span>\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n {{ getStatusText() }}\n </div>\n </div>\n\n <!-- Execution Card -->\n @if (record.RunType) {\n <div class=\"meta-card execution-card\">\n <div class=\"c3-card-label\">Execution</div>\n <div class=\"meta-card-body\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\" [style.color]=\"getRunTypeColor(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n\n <!-- Prompt Card -->\n @if (prompt) {\n @if (record.ChildPromptID) {\n <!-- C3 Stacked Connector: child prompt prominent, parent nested -->\n <div class=\"prompt-card-c3\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"c3-child-section\" (click)=\"navigateToEntity('MJ: AI Prompts', record.ChildPromptID)\" title=\"View Agent Prompt\">\n <i class=\"fa-solid fa-comment prompt-icon\"></i>\n {{ record.ChildPrompt }}\n </div>\n <div class=\"c3-divider\">\n <span class=\"c3-line\"></span>\n <span class=\"c3-divider-label\">wrapped by</span>\n <span class=\"c3-line\"></span>\n </div>\n <div class=\"c3-parent-section\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View System Prompt\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ prompt.Name }}\n <i class=\"fa-solid fa-arrow-up-right-from-square c3-link-icon\"></i>\n </div>\n </div>\n } @else {\n <!-- Single prompt (no child) \u2014 same card style -->\n <div class=\"meta-card prompt-single-card\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"meta-card-body clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\" style=\"color: var(--mj-brand-primary);\"></i>\n {{ prompt.Name }}\n </div>\n </div>\n }\n }\n\n <!-- Model Card -->\n @if (model) {\n <div class=\"model-card-c3\">\n <div class=\"c3-card-label\">Model</div>\n <div class=\"c3-card-body\" (click)=\"navigateToEntity('MJ: AI Models', model.ID)\" title=\"View Model\">\n <span class=\"c3-model-name\"><i class=\"fa-solid fa-microchip\"></i> {{ model.Name }}</span>\n @if (record.Vendor) {\n <span class=\"c3-vendor-name\">{{ record.Vendor }}</span>\n }\n </div>\n </div>\n }\n @if (record.RerunFromPromptRunID) {\n <span class=\"original-run\" title=\"View Original Run\">\n <i class=\"fa-solid fa-level-up-alt\"></i>\n <a (click)=\"navigateToOriginalRun()\" class=\"original-link\">Original Run</a>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n @if (record.ConfigurationID) {\n <!-- Configuration Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Configuration</div>\n <div class=\"metric-value\">\n <a href=\"javascript:void(0)\" class=\"config-link\" (click)=\"navigateToEntity('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n @if (record.Temperature !== null && record.Temperature !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Temperature</div>\n <div class=\"metric-value\">{{ record.Temperature }}</div>\n </div>\n </div>\n }\n @if (record.TopP !== null && record.TopP !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-percentage\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top P</div>\n <div class=\"metric-value\">{{ record.TopP }}</div>\n </div>\n </div>\n }\n @if (record.TopK !== null && record.TopK !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-list-ol\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top K</div>\n <div class=\"metric-value\">{{ record.TopK }}</div>\n </div>\n </div>\n }\n @if (record.EffortLevel !== null && record.EffortLevel !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Effort Level</div>\n <div class=\"metric-value\">{{ record.EffortLevel }}</div>\n </div>\n </div>\n }\n @if (record.ResponseFormat) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-code\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Response Format</div>\n <div class=\"metric-value\">{{ record.ResponseFormat }}</div>\n </div>\n </div>\n }\n </div>\n \n <!-- Execution Metrics Bar (always show when configuration exists) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <!-- Execution Metrics Bar (original behavior when no configuration) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Input Panel with nested sub-panels -->\n <mj-accordion-panel [Expanded]=\"inputExpanded\" (ExpandedChange)=\"onInputPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <!-- Nested expansion panels for sub-sections -->\n <div class=\"nested-panels\">\n <!-- Messages Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"messagesExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Messages\n @if (chatMessages.length > 0) {\n <span class=\"panel-count\">({{ chatMessages.length }})</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (isParsingMessages || isLoadingRelatedData) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading messages...</p>\n </div>\n } @else if (chatMessages.length > 0) {\n <mj-chat-message-viewer \n [messages]=\"chatMessages\">\n </mj-chat-message-viewer>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No chat messages found</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Data Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"dataExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data\n @if (inputData) {\n <span class=\"panel-badge\">Object</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedData, 'json', 'Data')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No data object found</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Raw Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"rawExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Raw\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedMessages, 'json', 'Raw Messages')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </mj-accordion-panel>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n \n <!-- Result Panel -->\n <mj-accordion-panel [Expanded]=\"resultExpanded\" (ExpandedChange)=\"onResultPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedResult, 'json', 'Result')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n @if (record.Status === 'Failed' || record.Success === false) {\n <div class=\"error-info\">\n @if (record.Status) {\n <p class=\"finish-reason\">\n <strong>Status:</strong> {{ record.Status }}\n </p>\n }\n @if (formattedErrorDetails) {\n <div class=\"error-details\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor\n [ngModel]=\"formattedErrorDetails\"\n [disabled]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (!formattedErrorDetails) {\n <p class=\"error-hint\">\n The prompt execution failed but no additional error information is available.\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Token Usage & Metrics Panel -->\n <mj-accordion-panel [Expanded]=\"metricsExpanded\" (ExpandedChange)=\"onMetricsPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage &amp; Metrics\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n \n <!-- Timing Metrics -->\n @if (record.QueueTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <h4>Queue Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.QueueTime) }}</div>\n </div>\n }\n \n @if (record.PromptTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>Prompt Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.PromptTime) }}</div>\n </div>\n }\n \n @if (record.CompletionTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <h4>Completion Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.CompletionTime) }}</div>\n </div>\n }\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <mj-accordion-panel [Expanded]=\"validationExpanded\" (ExpandedChange)=\"onValidationPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Validation &amp; Retries\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <span class=\"panel-count\">({{ record.ValidationAttemptCount }} attempts)</span>\n }\n @if (record.FinalValidationPassed) {\n <span class=\"panel-badge success\">Passed</span>\n } @else if (record.FinalValidationPassed === false) {\n <span class=\"panel-badge error\">Failed</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <!-- Validation Summary -->\n <div class=\"validation-summary\">\n <div class=\"summary-header\">\n <h4>Validation Summary</h4>\n <div class=\"validation-status\" [class.success]=\"record.FinalValidationPassed\" [class.failed]=\"!record.FinalValidationPassed\">\n <i [class]=\"record.FinalValidationPassed ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.FinalValidationPassed ? 'Validation Passed' : 'Validation Failed' }}\n </div>\n </div>\n \n <div class=\"validation-metrics\">\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Total Attempts</div>\n <div class=\"metric-value\">{{ record.ValidationAttemptCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Successful</div>\n <div class=\"metric-value\">{{ record.SuccessfulValidationCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Behavior</div>\n <div class=\"metric-value\">{{ record.ValidationBehavior || 'Not set' }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Retry Strategy</div>\n <div class=\"metric-value\">{{ record.RetryStrategy || 'Not set' }}</div>\n </div>\n </div>\n \n @if (record.FinalValidationError) {\n <div class=\"validation-error\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Final Validation Error</h5>\n <p>{{ record.FinalValidationError }}</p>\n @if (record && record.ValidationErrorCount && record.ValidationErrorCount > 0) {\n <span class=\"error-count\">{{ record.ValidationErrorCount }} validation errors</span>\n }\n </div>\n }\n \n @if (record.CommonValidationError && record.CommonValidationError !== record.FinalValidationError) {\n <div class=\"common-error\">\n <h5><i class=\"fa-solid fa-repeat\"></i> Most Common Error</h5>\n <p>{{ record.CommonValidationError }}</p>\n </div>\n }\n </div>\n \n <!-- Retry Timeline -->\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <div class=\"retry-timeline\">\n <h4>Retry Timeline</h4>\n <div class=\"timeline-info\">\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>First Attempt: {{ record.FirstAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <span>Last Attempt: {{ record.LastAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span>Total Retry Duration: {{ formatDuration(record.TotalRetryDurationMS) }}</span>\n </div>\n </div>\n </div>\n }\n \n <!-- Validation Attempts Details -->\n @if (validationAttempts && validationAttempts.length > 0) {\n <div class=\"validation-attempts\">\n <h4>Validation Attempts</h4>\n <div class=\"attempts-list\">\n @for (attempt of validationAttempts; track attempt.attemptNumber) {\n <div class=\"attempt-item\" [class.success]=\"attempt.success\" [class.failed]=\"!attempt.success\">\n <div class=\"attempt-number\">\n <i [class]=\"attempt.success ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n Attempt #{{ attempt.attemptNumber }}\n </div>\n <div class=\"attempt-details\">\n <span class=\"attempt-time\">{{ attempt.timestamp }}</span>\n @if (!attempt.success) {\n <span class=\"attempt-error\">{{ attempt.errorMessage || 'Unknown error' }}</span>\n @if (attempt.validationErrorCount > 0) {\n <span class=\"error-count\">({{ attempt.validationErrorCount }} errors)</span>\n }\n }\n @if (attempt.outputLength) {\n <span class=\"output-length\">Output: {{ attempt.outputLength }} chars</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Validation Summary JSON -->\n @if (validationSummary) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Summary Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedValidationSummary, 'json', 'Validation Summary')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationSummary\"\n name=\"formattedValidationSummary\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Validation Attempts JSON -->\n @if (record.ValidationAttempts) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Attempts (Raw JSON)</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedValidationAttempts, 'json', 'Validation Attempts')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationAttempts\"\n name=\"formattedValidationAttempts\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <mj-accordion-panel [Expanded]=\"hierarchyExpanded\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Additional Details Panel -->\n <mj-accordion-panel [Expanded]=\"false\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n \n @if (record.RunType) {\n <div class=\"detail-field\">\n <label>Run Type</label>\n <div class=\"detail-value\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n \n @if (record.ResponseFormat) {\n <div class=\"detail-field\">\n <label>Response Format</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-code\"></i>\n {{ record.ResponseFormat }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Temperature</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Temperature === null || record.Temperature === undefined\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n {{ record.Temperature !== null && record.Temperature !== undefined ? record.Temperature : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopP === null || record.TopP === undefined\">\n <i class=\"fa-solid fa-percentage\"></i>\n {{ record.TopP !== null && record.TopP !== undefined ? record.TopP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top K</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopK === null || record.TopK === undefined\">\n <i class=\"fa-solid fa-list-ol\"></i>\n {{ record.TopK !== null && record.TopK !== undefined ? record.TopK : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Min P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.MinP === null || record.MinP === undefined\">\n <i class=\"fa-solid fa-filter\"></i>\n {{ record.MinP !== null && record.MinP !== undefined ? record.MinP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Frequency Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.FrequencyPenalty === null || record.FrequencyPenalty === undefined\">\n <i class=\"fa-solid fa-repeat\"></i>\n {{ record.FrequencyPenalty !== null && record.FrequencyPenalty !== undefined ? record.FrequencyPenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Presence Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.PresencePenalty === null || record.PresencePenalty === undefined\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n {{ record.PresencePenalty !== null && record.PresencePenalty !== undefined ? record.PresencePenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Seed</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Seed === null || record.Seed === undefined\">\n <i class=\"fa-solid fa-seedling\"></i>\n {{ record.Seed !== null && record.Seed !== undefined ? record.Seed : '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Stop Sequences</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.StopSequences\">\n <i class=\"fa-solid fa-stop-circle\"></i>\n {{ record.StopSequences || '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Assistant Prefill</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.AssistantPrefill\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ record.AssistantPrefill || '\u2014' }}\n </div>\n </div>\n\n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <mj-accordion-panel [Expanded]=\"modelSpecificExpanded\" (ExpandedChange)=\"onModelSpecificPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Specific Response Details\n <span class=\"panel-badge\">JSON</span>\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedModelSpecificResponseDetails, 'Model Specific Response Details')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedModelSpecificResponseDetails, 'json', 'Model Specific Response Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedModelSpecificResponseDetails\"\n name=\"formattedModelSpecificResponseDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <mj-accordion-panel [Expanded]=\"false\" (ExpandedChange)=\"onModelSelectionPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Selection &amp; Performance\n @if (record.CacheHit) {\n <span class=\"panel-badge success\">Cached</span>\n }\n @if (record.WasSelectedResult) {\n <span class=\"panel-badge success\">Selected</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n <!-- Model Selection Details -->\n <div class=\"detail-field\">\n <label>Status</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ record.Status || 'Unknown' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Selection Strategy</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-strategy\"></i>\n {{ record.SelectionStrategy || '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Model Power Rank</label>\n <div class=\"detail-value\" [class.null-value]=\"record.ModelPowerRank === null\">\n <i class=\"fa-solid fa-ranking-star\"></i>\n {{ record.ModelPowerRank !== null ? record.ModelPowerRank : '\u2014' }}\n </div>\n </div>\n \n <!-- Cache Information -->\n <div class=\"detail-field\">\n <label>Cache Hit</label>\n <div class=\"detail-value\">\n <i [class]=\"record.CacheHit ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.CacheHit ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.CacheKey) {\n <div class=\"detail-field full-width\">\n <label>Cache Key</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-key\"></i>\n <code>{{ record.CacheKey }}</code>\n </div>\n </div>\n }\n \n <!-- Judge Information -->\n @if (record.JudgeID) {\n <div class=\"detail-field\">\n <label>Judge Prompt</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', record.JudgeID)\" title=\"View Judge Prompt\">\n <i class=\"fa-solid fa-gavel\"></i>\n {{ record.Judge || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.JudgeScore !== null) {\n <div class=\"detail-field\">\n <label>Judge Score</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-star\"></i>\n {{ record.JudgeScore }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Was Selected Result</label>\n <div class=\"detail-value\">\n <i [class]=\"record.WasSelectedResult ? 'fa-solid fa-trophy' : 'fa-solid fa-times'\"></i>\n {{ record.WasSelectedResult ? 'Yes' : 'No' }}\n </div>\n </div>\n \n <!-- Performance Metrics -->\n <div class=\"detail-field\">\n <label>Streaming Enabled</label>\n <div class=\"detail-value\">\n <i [class]=\"record.StreamingEnabled ? 'fa-solid fa-stream' : 'fa-solid fa-ban'\"></i>\n {{ record.StreamingEnabled ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.FirstTokenTime !== null) {\n <div class=\"detail-field\">\n <label>First Token Time</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ record.FirstTokenTime }} ms\n </div>\n </div>\n }\n \n @if (record.Cancelled) {\n <div class=\"detail-field\">\n <label>Cancelled</label>\n <div class=\"detail-value error\">\n <i class=\"fa-solid fa-ban\"></i>\n Yes\n </div>\n </div>\n \n @if (record.CancellationReason) {\n <div class=\"detail-field full-width\">\n <label>Cancellation Reason</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ record.CancellationReason }}\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Model Selection JSON -->\n @if (record.ModelSelection) {\n <div class=\"model-selection-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Model Selection Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedModelSelection, 'json', 'Model Selection')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedModelSelection\"\n name=\"formattedModelSelection\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Error Details JSON -->\n @if (record.ErrorDetails) {\n <div class=\"error-details-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedErrorDetails\"\n name=\"formattedErrorDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n </div>\n </form>\n }\n\n <!-- Full-screen overlay -->\n @if (FullScreenContent) {\n <div class=\"fullscreen-overlay\" (click)=\"closeFullScreen()\">\n <div class=\"fullscreen-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"fullscreen-header\">\n <span class=\"fullscreen-title\">\n <i class=\"fa-solid fa-expand\"></i>\n {{ FullScreenTitle }}\n </span>\n <div class=\"fullscreen-actions\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"closeFullScreen()\"\n title=\"Close\">\n <i class=\"fa-solid fa-times\"></i> Close\n </button>\n </div>\n </div>\n <div class=\"fullscreen-body\">\n <mj-code-editor\n [value]=\"FullScreenContent\"\n [readonly]=\"true\"\n [language]=\"FullScreenLanguage\"\n style=\"height: 100%; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n</div>", styles: ["/* Host and Container Layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n/* Error Info Styles */\n.error-info {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details {\n margin-top: 12px;\n}\n\n.error-details h4 {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n/* Header Section */\n.prompt-run-header {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n/* Shared meta-card style (Status, Execution, single Prompt) */\n.meta-card {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Status indicator dot */\n.status-indicator {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* C3 Stacked Connector \u2014 Prompt Card */\n.prompt-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section i.prompt-icon {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section i {\n font-size: 0.75rem;\n}\n\n.c3-link-icon {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section:hover .c3-link-icon {\n opacity: 0.8;\n}\n\n/* C3 Model Card */\n.model-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name i {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n/* Nested Sub-Panel Styles */\n.sub-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content {\n padding: 0;\n}\n\n/* Nested accordion panel styles */\n.nested-panels mj-accordion-panel {\n margin-bottom: 8px;\n}\n\n/* Ensure chat message viewer takes appropriate height */\n.sub-panel-content mj-chat-message-viewer {\n display: block;\n min-height: 200px;\n max-height: 750px; /* Increased by 50% from 500px */\n height: auto;\n overflow: hidden;\n}\n\n/* Different colors for sub-expansion panels */\n.sub-expansion-panel {\n margin-bottom: 8px;\n}\n\n/* Sub-expansion panel styles */\n.sub-expansion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Accordion Panel Overrides */\nmj-accordion-panel {\n display: block;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Full-screen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title i {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body mj-code-editor {\n display: block;\n height: 100%;\n}\n"] }]
2380
2336
  }], null, null); })();
2381
2337
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 21 }); })();
2382
2338
  //# sourceMappingURL=ai-prompt-run-form.component.js.map