@memberjunction/ng-core-entity-forms 2.104.0 → 2.106.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 (136) hide show
  1. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts +60 -0
  2. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts.map +1 -0
  3. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +790 -0
  4. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +1 -0
  5. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
  6. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +457 -433
  8. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  9. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +218 -190
  10. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  11. package/dist/lib/custom/custom-forms.module.d.ts +45 -44
  12. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  13. package/dist/lib/custom/custom-forms.module.js +3 -0
  14. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  15. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +41 -21
  16. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  17. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
  18. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +53 -4
  19. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
  20. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts +10 -0
  21. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -0
  22. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +59 -0
  23. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -0
  24. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts +11 -0
  25. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts.map +1 -0
  26. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js +120 -0
  27. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js.map +1 -0
  28. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts +10 -0
  29. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -0
  30. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +59 -0
  31. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -0
  32. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts +11 -0
  33. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts.map +1 -0
  34. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js +176 -0
  35. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js.map +1 -0
  36. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -1
  37. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +22 -4
  38. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +14 -5
  41. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -1
  43. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +16 -7
  44. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -1
  45. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts.map +1 -1
  46. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +13 -4
  47. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +22 -4
  50. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
  52. package/dist/lib/generated/Entities/Action/sections/details.component.js +13 -4
  53. package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -1
  54. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts.map +1 -1
  55. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +13 -4
  56. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js.map +1 -1
  57. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +34 -4
  58. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  59. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts.map +1 -1
  60. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +51 -4
  61. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js.map +1 -1
  62. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +14 -4
  63. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  64. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts.map +1 -1
  65. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js +22 -4
  66. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js.map +1 -1
  67. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts +10 -0
  68. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -0
  69. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +59 -0
  70. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -0
  71. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts +11 -0
  72. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts.map +1 -0
  73. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js +127 -0
  74. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js.map +1 -0
  75. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts.map +1 -1
  76. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +13 -4
  77. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts.map +1 -1
  79. package/dist/lib/generated/Entities/Authorization/sections/details.component.js +13 -4
  80. package/dist/lib/generated/Entities/Authorization/sections/details.component.js.map +1 -1
  81. package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -1
  82. package/dist/lib/generated/Entities/Collection/sections/details.component.js +13 -4
  83. package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -1
  84. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +6 -6
  85. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  86. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -1
  87. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +13 -4
  88. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -1
  89. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts.map +1 -1
  90. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js +13 -4
  91. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js.map +1 -1
  92. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts.map +1 -1
  93. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +13 -4
  94. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js.map +1 -1
  95. package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts.map +1 -1
  96. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +13 -4
  97. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js.map +1 -1
  98. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts.map +1 -1
  99. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +13 -4
  100. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js.map +1 -1
  101. package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts.map +1 -1
  102. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +13 -4
  103. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js.map +1 -1
  104. package/dist/lib/generated/Entities/Project/sections/details.component.d.ts.map +1 -1
  105. package/dist/lib/generated/Entities/Project/sections/details.component.js +13 -4
  106. package/dist/lib/generated/Entities/Project/sections/details.component.js.map +1 -1
  107. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -1
  108. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +13 -4
  109. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts.map +1 -1
  111. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +13 -4
  112. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js.map +1 -1
  113. package/dist/lib/generated/Entities/Role/role.form.component.js +13 -3
  114. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  115. package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts.map +1 -1
  116. package/dist/lib/generated/Entities/Skill/sections/details.component.js +13 -4
  117. package/dist/lib/generated/Entities/Skill/sections/details.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts.map +1 -1
  119. package/dist/lib/generated/Entities/Tag/sections/details.component.js +13 -4
  120. package/dist/lib/generated/Entities/Tag/sections/details.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/Task/sections/details.component.d.ts.map +1 -1
  122. package/dist/lib/generated/Entities/Task/sections/details.component.js +13 -4
  123. package/dist/lib/generated/Entities/Task/sections/details.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts.map +1 -1
  125. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +13 -4
  126. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js.map +1 -1
  127. package/dist/lib/generated/Entities/User/user.form.component.js +32 -12
  128. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  129. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts.map +1 -1
  130. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +13 -4
  131. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js.map +1 -1
  132. package/dist/lib/generated/generated-forms.module.d.ts +342 -331
  133. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  134. package/dist/lib/generated/generated-forms.module.js +247 -166
  135. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  136. package/package.json +15 -15
@@ -30,20 +30,22 @@ import * as i10 from "./ai-agent-run-analytics.component";
30
30
  import * as i11 from "./ai-agent-run-visualization.component";
31
31
  import * as i12 from "./ai-agent-run-step-detail.component";
32
32
  function AIAgentRunFormComponentExtended_span_11_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 35);
34
- i0.ɵɵtext(1);
35
- i0.ɵɵelementEnd();
33
+ const _r1 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "span", 35)(1, "a", 36);
35
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_11_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
36
+ i0.ɵɵtext(2);
37
+ i0.ɵɵelementEnd()();
36
38
  } if (rf & 2) {
37
- const ctx_r0 = i0.ɵɵnextContext();
38
- i0.ɵɵadvance();
39
- i0.ɵɵtextInterpolate(ctx_r0.agent.Name);
39
+ const ctx_r1 = i0.ɵɵnextContext();
40
+ i0.ɵɵadvance(2);
41
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.agent.Name, " ");
40
42
  } }
41
43
  function AIAgentRunFormComponentExtended_span_14_Template(rf, ctx) { if (rf & 1) {
42
- const _r2 = i0.ɵɵgetCurrentView();
43
- i0.ɵɵelementStart(0, "span", 36);
44
- i0.ɵɵelement(1, "i", 37);
45
- i0.ɵɵelementStart(2, "a", 38);
46
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_14_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToParentRun()); });
44
+ const _r3 = i0.ɵɵgetCurrentView();
45
+ i0.ɵɵelementStart(0, "span", 37);
46
+ i0.ɵɵelement(1, "i", 38);
47
+ i0.ɵɵelementStart(2, "a", 39);
48
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_span_14_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToParentRun()); });
47
49
  i0.ɵɵtext(3, "Parent Run");
48
50
  i0.ɵɵelementEnd()();
49
51
  } }
@@ -56,9 +58,9 @@ function AIAgentRunFormComponentExtended_div_29_Template(rf, ctx) { if (rf & 1)
56
58
  i0.ɵɵpipe(5, "date");
57
59
  i0.ɵɵelementEnd()();
58
60
  } if (rf & 2) {
59
- const ctx_r0 = i0.ɵɵnextContext();
61
+ const ctx_r1 = i0.ɵɵnextContext();
60
62
  i0.ɵɵadvance(4);
61
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r0.record.CompletedAt, "medium"));
63
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.record.CompletedAt, "medium"));
62
64
  } }
63
65
  function AIAgentRunFormComponentExtended_div_30_Template(rf, ctx) { if (rf & 1) {
64
66
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
@@ -68,9 +70,9 @@ function AIAgentRunFormComponentExtended_div_30_Template(rf, ctx) { if (rf & 1)
68
70
  i0.ɵɵtext(4);
69
71
  i0.ɵɵelementEnd()();
70
72
  } if (rf & 2) {
71
- const ctx_r0 = i0.ɵɵnextContext();
73
+ const ctx_r1 = i0.ɵɵnextContext();
72
74
  i0.ɵɵadvance(4);
73
- i0.ɵɵtextInterpolate(ctx_r0.calculateDuration(ctx_r0.record.StartedAt, ctx_r0.record.CompletedAt));
75
+ i0.ɵɵtextInterpolate(ctx_r1.calculateDuration(ctx_r1.record.StartedAt, ctx_r1.record.CompletedAt));
74
76
  } }
75
77
  function AIAgentRunFormComponentExtended_div_31_Template(rf, ctx) { if (rf & 1) {
76
78
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
@@ -80,11 +82,11 @@ function AIAgentRunFormComponentExtended_div_31_Template(rf, ctx) { if (rf & 1)
80
82
  i0.ɵɵtext(4);
81
83
  i0.ɵɵelementEnd()();
82
84
  } if (rf & 2) {
83
- const ctx_r0 = i0.ɵɵnextContext();
85
+ const ctx_r1 = i0.ɵɵnextContext();
84
86
  i0.ɵɵadvance(3);
85
- i0.ɵɵclassProp("success", ctx_r0.record.Success)("error", !ctx_r0.record.Success);
87
+ i0.ɵɵclassProp("success", ctx_r1.record.Success)("error", !ctx_r1.record.Success);
86
88
  i0.ɵɵadvance();
87
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Success ? "Success" : "Failed", " ");
89
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Success ? "Success" : "Failed", " ");
88
90
  } }
89
91
  function AIAgentRunFormComponentExtended_div_32_span_3_Template(rf, ctx) { if (rf & 1) {
90
92
  i0.ɵɵelementStart(0, "span", 23);
@@ -92,27 +94,27 @@ function AIAgentRunFormComponentExtended_div_32_span_3_Template(rf, ctx) { if (r
92
94
  i0.ɵɵpipe(2, "number");
93
95
  i0.ɵɵelementEnd();
94
96
  } if (rf & 2) {
95
- const ctx_r0 = i0.ɵɵnextContext(2);
97
+ const ctx_r1 = i0.ɵɵnextContext(2);
96
98
  i0.ɵɵadvance();
97
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalTokensInput + ctx_r0.costMetrics.totalTokensOutput, "1.0-0"));
99
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r1.costMetrics.totalTokensInput + ctx_r1.costMetrics.totalTokensOutput, "1.0-0"));
98
100
  } }
99
101
  function AIAgentRunFormComponentExtended_div_32_span_4_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "span", 41);
101
- i0.ɵɵelement(1, "i", 42);
102
+ i0.ɵɵelementStart(0, "span", 42);
103
+ i0.ɵɵelement(1, "i", 43);
102
104
  i0.ɵɵelementEnd();
103
105
  } }
104
106
  function AIAgentRunFormComponentExtended_div_32_Template(rf, ctx) { if (rf & 1) {
105
107
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
106
108
  i0.ɵɵtext(2, "Tokens");
107
109
  i0.ɵɵelementEnd();
108
- i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_32_span_3_Template, 3, 4, "span", 39)(4, AIAgentRunFormComponentExtended_div_32_span_4_Template, 2, 0, "span", 40);
110
+ i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_32_span_3_Template, 3, 4, "span", 40)(4, AIAgentRunFormComponentExtended_div_32_span_4_Template, 2, 0, "span", 41);
109
111
  i0.ɵɵelementEnd();
110
112
  } if (rf & 2) {
111
- const ctx_r0 = i0.ɵɵnextContext();
113
+ const ctx_r1 = i0.ɵɵnextContext();
112
114
  i0.ɵɵadvance(3);
113
- i0.ɵɵproperty("ngIf", !ctx_r0.costMetrics.isLoading);
115
+ i0.ɵɵproperty("ngIf", !ctx_r1.costMetrics.isLoading);
114
116
  i0.ɵɵadvance();
115
- i0.ɵɵproperty("ngIf", ctx_r0.costMetrics.isLoading);
117
+ i0.ɵɵproperty("ngIf", ctx_r1.costMetrics.isLoading);
116
118
  } }
117
119
  function AIAgentRunFormComponentExtended_div_33_span_3_Template(rf, ctx) { if (rf & 1) {
118
120
  i0.ɵɵelementStart(0, "span", 23);
@@ -120,27 +122,27 @@ function AIAgentRunFormComponentExtended_div_33_span_3_Template(rf, ctx) { if (r
120
122
  i0.ɵɵpipe(2, "number");
121
123
  i0.ɵɵelementEnd();
122
124
  } if (rf & 2) {
123
- const ctx_r0 = i0.ɵɵnextContext(2);
125
+ const ctx_r1 = i0.ɵɵnextContext(2);
124
126
  i0.ɵɵadvance();
125
- i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalCost, "1.2-4"), "");
127
+ i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1, ctx_r1.costMetrics.totalCost, "1.2-4"), "");
126
128
  } }
127
129
  function AIAgentRunFormComponentExtended_div_33_span_4_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelementStart(0, "span", 41);
129
- i0.ɵɵelement(1, "i", 42);
130
+ i0.ɵɵelementStart(0, "span", 42);
131
+ i0.ɵɵelement(1, "i", 43);
130
132
  i0.ɵɵelementEnd();
131
133
  } }
132
134
  function AIAgentRunFormComponentExtended_div_33_Template(rf, ctx) { if (rf & 1) {
133
135
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
134
136
  i0.ɵɵtext(2, "Cost");
135
137
  i0.ɵɵelementEnd();
136
- i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_33_span_3_Template, 3, 4, "span", 39)(4, AIAgentRunFormComponentExtended_div_33_span_4_Template, 2, 0, "span", 40);
138
+ i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_33_span_3_Template, 3, 4, "span", 40)(4, AIAgentRunFormComponentExtended_div_33_span_4_Template, 2, 0, "span", 41);
137
139
  i0.ɵɵelementEnd();
138
140
  } if (rf & 2) {
139
- const ctx_r0 = i0.ɵɵnextContext();
141
+ const ctx_r1 = i0.ɵɵnextContext();
140
142
  i0.ɵɵadvance(3);
141
- i0.ɵɵproperty("ngIf", !ctx_r0.costMetrics.isLoading);
143
+ i0.ɵɵproperty("ngIf", !ctx_r1.costMetrics.isLoading);
142
144
  i0.ɵɵadvance();
143
- i0.ɵɵproperty("ngIf", ctx_r0.costMetrics.isLoading);
145
+ i0.ɵɵproperty("ngIf", ctx_r1.costMetrics.isLoading);
144
146
  } }
145
147
  function AIAgentRunFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1) {
146
148
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
@@ -150,85 +152,85 @@ function AIAgentRunFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1)
150
152
  i0.ɵɵtext(4);
151
153
  i0.ɵɵelementEnd()();
152
154
  } if (rf & 2) {
153
- const ctx_r0 = i0.ɵɵnextContext();
155
+ const ctx_r1 = i0.ɵɵnextContext();
154
156
  i0.ɵɵadvance(4);
155
- i0.ɵɵtextInterpolate(ctx_r0.record.EffortLevel);
157
+ i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
156
158
  } }
157
159
  function AIAgentRunFormComponentExtended_div_35_Template(rf, ctx) { if (rf & 1) {
158
- const _r3 = i0.ɵɵgetCurrentView();
159
- i0.ɵɵelementStart(0, "div", 43)(1, "div", 44);
160
- i0.ɵɵelement(2, "i", 45);
161
- i0.ɵɵelementStart(3, "div", 46)(4, "div", 47);
160
+ const _r4 = i0.ɵɵgetCurrentView();
161
+ i0.ɵɵelementStart(0, "div", 44)(1, "div", 45);
162
+ i0.ɵɵelement(2, "i", 46);
163
+ i0.ɵɵelementStart(3, "div", 47)(4, "div", 48);
162
164
  i0.ɵɵtext(5, "Configuration");
163
165
  i0.ɵɵelementEnd();
164
- i0.ɵɵelementStart(6, "div", 48)(7, "a", 49);
165
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_35_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Configurations", ctx_r0.record.ConfigurationID)); });
166
+ i0.ɵɵelementStart(6, "div", 49)(7, "a", 36);
167
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_35_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Configurations", ctx_r1.record.ConfigurationID)); });
166
168
  i0.ɵɵtext(8);
167
169
  i0.ɵɵelementEnd()()()()();
168
170
  } if (rf & 2) {
169
- const ctx_r0 = i0.ɵɵnextContext();
171
+ const ctx_r1 = i0.ɵɵnextContext();
170
172
  i0.ɵɵadvance(8);
171
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Configuration || "Unknown", " ");
173
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Configuration || "Unknown", " ");
172
174
  } }
173
175
  function AIAgentRunFormComponentExtended_div_50_Template(rf, ctx) { if (rf & 1) {
174
- const _r4 = i0.ɵɵgetCurrentView();
176
+ const _r5 = i0.ɵɵgetCurrentView();
175
177
  i0.ɵɵelementStart(0, "div", 50)(1, "kendo-splitter", 51)(2, "kendo-splitter-pane", 52)(3, "mj-ai-agent-run-timeline", 53);
176
- i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.selectTimelineItem($event)); })("navigateToEntity", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToEntityRecord($event)); })("agentRunCompleted", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_agentRunCompleted_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onAgentRunCompleted($event)); });
178
+ i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectTimelineItem($event)); })("navigateToEntity", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToEntityRecord($event)); })("agentRunCompleted", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_timeline_agentRunCompleted_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAgentRunCompleted($event)); });
177
179
  i0.ɵɵelementEnd()();
178
180
  i0.ɵɵelementStart(4, "kendo-splitter-pane", 54)(5, "mj-ai-agent-run-step-detail", 55);
179
- i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeJsonPanel()); })("navigateToActionLog", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_navigateToActionLog_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToActionLog($event)); })("copyToClipboard", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_copyToClipboard_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard($event)); });
181
+ i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeJsonPanel()); })("navigateToActionLog", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_navigateToActionLog_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToActionLog($event)); })("copyToClipboard", function AIAgentRunFormComponentExtended_div_50_Template_mj_ai_agent_run_step_detail_copyToClipboard_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard($event)); });
180
182
  i0.ɵɵelementEnd()()()();
181
183
  } if (rf & 2) {
182
- const ctx_r0 = i0.ɵɵnextContext();
184
+ const ctx_r1 = i0.ɵɵnextContext();
183
185
  i0.ɵɵadvance(2);
184
186
  i0.ɵɵproperty("min", "400px");
185
187
  i0.ɵɵadvance();
186
- i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper)("autoRefresh", ctx_r0.record.Status === "Running")("refreshInterval", 30000);
188
+ i0.ɵɵproperty("aiAgentRunId", ctx_r1.record.ID)("dataHelper", ctx_r1.dataHelper)("autoRefresh", ctx_r1.record.Status === "Running")("refreshInterval", 30000);
187
189
  i0.ɵɵadvance();
188
- i0.ɵɵproperty("size", "45%")("min", "300px")("collapsed", !ctx_r0.selectedTimelineItem);
190
+ i0.ɵɵproperty("size", "45%")("min", "300px")("collapsed", !ctx_r1.selectedTimelineItem);
189
191
  i0.ɵɵadvance();
190
- i0.ɵɵproperty("selectedTimelineItem", ctx_r0.selectedTimelineItem);
192
+ i0.ɵɵproperty("selectedTimelineItem", ctx_r1.selectedTimelineItem);
191
193
  } }
192
194
  function AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_visualization_1_Template(rf, ctx) { if (rf & 1) {
193
195
  i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 57, 0);
194
196
  } if (rf & 2) {
195
- const ctx_r0 = i0.ɵɵnextContext(2);
196
- i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper);
197
+ const ctx_r1 = i0.ɵɵnextContext(2);
198
+ i0.ɵɵproperty("aiAgentRunId", ctx_r1.record.ID)("dataHelper", ctx_r1.dataHelper);
197
199
  } }
198
200
  function AIAgentRunFormComponentExtended_div_51_Template(rf, ctx) { if (rf & 1) {
199
201
  i0.ɵɵelementStart(0, "div", 50);
200
202
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_visualization_1_Template, 2, 2, "mj-ai-agent-run-visualization", 56);
201
203
  i0.ɵɵelementEnd();
202
204
  } if (rf & 2) {
203
- const ctx_r0 = i0.ɵɵnextContext();
205
+ const ctx_r1 = i0.ɵɵnextContext();
204
206
  i0.ɵɵadvance();
205
- i0.ɵɵproperty("ngIf", ctx_r0.visualizationLoaded);
207
+ i0.ɵɵproperty("ngIf", ctx_r1.visualizationLoaded);
206
208
  } }
207
209
  function AIAgentRunFormComponentExtended_div_52_mj_ai_agent_run_analytics_1_Template(rf, ctx) { if (rf & 1) {
208
210
  i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 59, 1);
209
211
  } if (rf & 2) {
210
- const ctx_r0 = i0.ɵɵnextContext(2);
211
- i0.ɵɵproperty("agentRunId", ctx_r0.record.ID);
212
+ const ctx_r1 = i0.ɵɵnextContext(2);
213
+ i0.ɵɵproperty("agentRunId", ctx_r1.record.ID);
212
214
  } }
213
215
  function AIAgentRunFormComponentExtended_div_52_Template(rf, ctx) { if (rf & 1) {
214
216
  i0.ɵɵelementStart(0, "div", 50);
215
217
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_mj_ai_agent_run_analytics_1_Template, 2, 1, "mj-ai-agent-run-analytics", 58);
216
218
  i0.ɵɵelementEnd();
217
219
  } if (rf & 2) {
218
- const ctx_r0 = i0.ɵɵnextContext();
220
+ const ctx_r1 = i0.ɵɵnextContext();
219
221
  i0.ɵɵadvance();
220
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsLoaded);
222
+ i0.ɵɵproperty("ngIf", ctx_r1.analyticsLoaded);
221
223
  } }
222
224
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template(rf, ctx) { if (rf & 1) {
223
- const _r6 = i0.ɵɵgetCurrentView();
224
- i0.ɵɵelementStart(0, "a", 49);
225
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.ParentRunID)); });
225
+ const _r7 = i0.ɵɵgetCurrentView();
226
+ i0.ɵɵelementStart(0, "a", 36);
227
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Agent Runs", ctx_r1.record.ParentRunID)); });
226
228
  i0.ɵɵtext(1);
227
229
  i0.ɵɵelementEnd();
228
230
  } if (rf & 2) {
229
- const ctx_r0 = i0.ɵɵnextContext(3);
231
+ const ctx_r1 = i0.ɵɵnextContext(3);
230
232
  i0.ɵɵadvance();
231
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ParentRunID, " ");
233
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ParentRunID, " ");
232
234
  } }
233
235
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_12_Template(rf, ctx) { if (rf & 1) {
234
236
  i0.ɵɵelementStart(0, "span");
@@ -236,15 +238,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_12_Template(r
236
238
  i0.ɵɵelementEnd();
237
239
  } }
238
240
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template(rf, ctx) { if (rf & 1) {
239
- const _r7 = i0.ɵɵgetCurrentView();
240
- i0.ɵɵelementStart(0, "a", 49);
241
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.LastRunID)); });
241
+ const _r8 = i0.ɵɵgetCurrentView();
242
+ i0.ɵɵelementStart(0, "a", 36);
243
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_17_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("MJ: AI Agent Runs", ctx_r1.record.LastRunID)); });
242
244
  i0.ɵɵtext(1);
243
245
  i0.ɵɵelementEnd();
244
246
  } if (rf & 2) {
245
- const ctx_r0 = i0.ɵɵnextContext(3);
247
+ const ctx_r1 = i0.ɵɵnextContext(3);
246
248
  i0.ɵɵadvance();
247
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.LastRunID, " ");
249
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.LastRunID, " ");
248
250
  } }
249
251
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_18_Template(rf, ctx) { if (rf & 1) {
250
252
  i0.ɵɵelementStart(0, "span");
@@ -252,15 +254,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_18_Template(r
252
254
  i0.ɵɵelementEnd();
253
255
  } }
254
256
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template(rf, ctx) { if (rf & 1) {
255
- const _r8 = i0.ɵɵgetCurrentView();
256
- i0.ɵɵelementStart(0, "a", 49);
257
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("Conversations", ctx_r0.record.ConversationID)); });
257
+ const _r9 = i0.ɵɵgetCurrentView();
258
+ i0.ɵɵelementStart(0, "a", 36);
259
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("Conversations", ctx_r1.record.ConversationID)); });
258
260
  i0.ɵɵtext(1);
259
261
  i0.ɵɵelementEnd();
260
262
  } if (rf & 2) {
261
- const ctx_r0 = i0.ɵɵnextContext(3);
263
+ const ctx_r1 = i0.ɵɵnextContext(3);
262
264
  i0.ɵɵadvance();
263
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ConversationID, " ");
265
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ConversationID, " ");
264
266
  } }
265
267
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_24_Template(rf, ctx) { if (rf & 1) {
266
268
  i0.ɵɵelementStart(0, "span");
@@ -268,15 +270,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_24_Template(r
268
270
  i0.ɵɵelementEnd();
269
271
  } }
270
272
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template(rf, ctx) { if (rf & 1) {
271
- const _r9 = i0.ɵɵgetCurrentView();
272
- i0.ɵɵelementStart(0, "a", 49);
273
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("Users", ctx_r0.record.UserID)); });
273
+ const _r10 = i0.ɵɵgetCurrentView();
274
+ i0.ɵɵelementStart(0, "a", 36);
275
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("Users", ctx_r1.record.UserID)); });
274
276
  i0.ɵɵtext(1);
275
277
  i0.ɵɵelementEnd();
276
278
  } if (rf & 2) {
277
- const ctx_r0 = i0.ɵɵnextContext(3);
279
+ const ctx_r1 = i0.ɵɵnextContext(3);
278
280
  i0.ɵɵadvance();
279
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.User || "N/A", " ");
281
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.User || "N/A", " ");
280
282
  } }
281
283
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template(rf, ctx) { if (rf & 1) {
282
284
  i0.ɵɵelementStart(0, "span");
@@ -284,12 +286,12 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template(r
284
286
  i0.ɵɵelementEnd();
285
287
  } }
286
288
  function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template(rf, ctx) { if (rf & 1) {
287
- const _r5 = i0.ɵɵgetCurrentView();
289
+ const _r6 = i0.ɵɵgetCurrentView();
288
290
  i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
289
291
  i0.ɵɵtext(3, "Agent");
290
292
  i0.ɵɵelementEnd();
291
- i0.ɵɵelementStart(4, "span")(5, "a", 49);
292
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("AI Agents", ctx_r0.record.AgentID)); });
293
+ i0.ɵɵelementStart(4, "span")(5, "a", 36);
294
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Agents", ctx_r1.record.AgentID)); });
293
295
  i0.ɵɵtext(6);
294
296
  i0.ɵɵelementEnd()()();
295
297
  i0.ɵɵelementStart(7, "div", 73)(8, "label");
@@ -317,36 +319,36 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_3_Template(rf, ctx)
317
319
  i0.ɵɵtemplate(29, AIAgentRunFormComponentExtended_div_53_ng_template_3_a_29_Template, 2, 1, "a", 74)(30, AIAgentRunFormComponentExtended_div_53_ng_template_3_span_30_Template, 2, 0, "span", 75);
318
320
  i0.ɵɵelementEnd()()();
319
321
  } if (rf & 2) {
320
- const ctx_r0 = i0.ɵɵnextContext(2);
322
+ const ctx_r1 = i0.ɵɵnextContext(2);
321
323
  i0.ɵɵadvance(6);
322
- i0.ɵɵtextInterpolate1(" ", (ctx_r0.agent == null ? null : ctx_r0.agent.Name) || "N/A", " ");
324
+ i0.ɵɵtextInterpolate1(" ", (ctx_r1.agent == null ? null : ctx_r1.agent.Name) || "N/A", " ");
323
325
  i0.ɵɵadvance(5);
324
- i0.ɵɵproperty("ngIf", ctx_r0.record.ParentRunID);
326
+ i0.ɵɵproperty("ngIf", ctx_r1.record.ParentRunID);
325
327
  i0.ɵɵadvance();
326
- i0.ɵɵproperty("ngIf", !ctx_r0.record.ParentRunID);
328
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.ParentRunID);
327
329
  i0.ɵɵadvance(5);
328
- i0.ɵɵproperty("ngIf", ctx_r0.record.LastRunID);
330
+ i0.ɵɵproperty("ngIf", ctx_r1.record.LastRunID);
329
331
  i0.ɵɵadvance();
330
- i0.ɵɵproperty("ngIf", !ctx_r0.record.LastRunID);
332
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.LastRunID);
331
333
  i0.ɵɵadvance(5);
332
- i0.ɵɵproperty("ngIf", ctx_r0.record.ConversationID);
334
+ i0.ɵɵproperty("ngIf", ctx_r1.record.ConversationID);
333
335
  i0.ɵɵadvance();
334
- i0.ɵɵproperty("ngIf", !ctx_r0.record.ConversationID);
336
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.ConversationID);
335
337
  i0.ɵɵadvance(5);
336
- i0.ɵɵproperty("ngIf", ctx_r0.record.UserID);
338
+ i0.ɵɵproperty("ngIf", ctx_r1.record.UserID);
337
339
  i0.ɵɵadvance();
338
- i0.ɵɵproperty("ngIf", !ctx_r0.record.UserID);
340
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.UserID);
339
341
  } }
340
342
  function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template(rf, ctx) { if (rf & 1) {
341
- const _r10 = i0.ɵɵgetCurrentView();
342
- i0.ɵɵelementStart(0, "a", 49);
343
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("AI Models", ctx_r0.record.OverrideModelID)); });
343
+ const _r11 = i0.ɵɵgetCurrentView();
344
+ i0.ɵɵelementStart(0, "a", 36);
345
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Models", ctx_r1.record.OverrideModelID)); });
344
346
  i0.ɵɵtext(1);
345
347
  i0.ɵɵelementEnd();
346
348
  } if (rf & 2) {
347
- const ctx_r0 = i0.ɵɵnextContext(3);
349
+ const ctx_r1 = i0.ɵɵnextContext(3);
348
350
  i0.ɵɵadvance();
349
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideModel || "N/A", " ");
351
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.OverrideModel || "N/A", " ");
350
352
  } }
351
353
  function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_6_Template(rf, ctx) { if (rf & 1) {
352
354
  i0.ɵɵelementStart(0, "span");
@@ -354,15 +356,15 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_6_Template(rf
354
356
  i0.ɵɵelementEnd();
355
357
  } }
356
358
  function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template(rf, ctx) { if (rf & 1) {
357
- const _r11 = i0.ɵɵgetCurrentView();
358
- i0.ɵɵelementStart(0, "a", 49);
359
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("AI Vendors", ctx_r0.record.OverrideVendorID)); });
359
+ const _r12 = i0.ɵɵgetCurrentView();
360
+ i0.ɵɵelementStart(0, "a", 36);
361
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_53_ng_template_5_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openEntityRecord("AI Vendors", ctx_r1.record.OverrideVendorID)); });
360
362
  i0.ɵɵtext(1);
361
363
  i0.ɵɵelementEnd();
362
364
  } if (rf & 2) {
363
- const ctx_r0 = i0.ɵɵnextContext(3);
365
+ const ctx_r1 = i0.ɵɵnextContext(3);
364
366
  i0.ɵɵadvance();
365
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideVendor || "N/A", " ");
367
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.OverrideVendor || "N/A", " ");
366
368
  } }
367
369
  function AIAgentRunFormComponentExtended_div_53_ng_template_5_span_12_Template(rf, ctx) { if (rf & 1) {
368
370
  i0.ɵɵelementStart(0, "span");
@@ -389,29 +391,56 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_5_Template(rf, ctx)
389
391
  i0.ɵɵtext(17);
390
392
  i0.ɵɵelementEnd()()();
391
393
  } if (rf & 2) {
392
- const ctx_r0 = i0.ɵɵnextContext(2);
394
+ const ctx_r1 = i0.ɵɵnextContext(2);
393
395
  i0.ɵɵadvance(5);
394
- i0.ɵɵproperty("ngIf", ctx_r0.record.OverrideModelID);
396
+ i0.ɵɵproperty("ngIf", ctx_r1.record.OverrideModelID);
395
397
  i0.ɵɵadvance();
396
- i0.ɵɵproperty("ngIf", !ctx_r0.record.OverrideModelID);
398
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.OverrideModelID);
397
399
  i0.ɵɵadvance(5);
398
- i0.ɵɵproperty("ngIf", ctx_r0.record.OverrideVendorID);
400
+ i0.ɵɵproperty("ngIf", ctx_r1.record.OverrideVendorID);
399
401
  i0.ɵɵadvance();
400
- i0.ɵɵproperty("ngIf", !ctx_r0.record.OverrideVendorID);
402
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.OverrideVendorID);
401
403
  i0.ɵɵadvance(5);
402
- i0.ɵɵtextInterpolate(ctx_r0.record.Verbose ? "Yes" : "No");
404
+ i0.ɵɵtextInterpolate(ctx_r1.record.Verbose ? "Yes" : "No");
405
+ } }
406
+ function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
407
+ i0.ɵɵelementStart(0, "span");
408
+ i0.ɵɵtext(1, "In Progress");
409
+ i0.ɵɵelementEnd();
403
410
  } }
404
- function AIAgentRunFormComponentExtended_div_53_ng_template_7_div_11_Template(rf, ctx) { if (rf & 1) {
405
- i0.ɵɵelementStart(0, "div", 77)(1, "label");
411
+ function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
412
+ i0.ɵɵelementStart(0, "span", 76);
413
+ i0.ɵɵtext(1, "Yes");
414
+ i0.ɵɵelementEnd();
415
+ } }
416
+ function AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
417
+ i0.ɵɵelementStart(0, "span", 77);
418
+ i0.ɵɵtext(1, "No");
419
+ i0.ɵɵelementEnd();
420
+ } }
421
+ function AIAgentRunFormComponentExtended_div_53_ng_template_7_div_12_Template(rf, ctx) { if (rf & 1) {
422
+ i0.ɵɵelementStart(0, "div", 79)(1, "label");
423
+ i0.ɵɵtext(2, "Message");
424
+ i0.ɵɵelementEnd();
425
+ i0.ɵɵelementStart(3, "div", 80);
426
+ i0.ɵɵtext(4);
427
+ i0.ɵɵelementEnd()();
428
+ } if (rf & 2) {
429
+ const ctx_r1 = i0.ɵɵnextContext(3);
430
+ i0.ɵɵadvance(4);
431
+ i0.ɵɵtextInterpolate(ctx_r1.record.Message);
432
+ } }
433
+ function AIAgentRunFormComponentExtended_div_53_ng_template_7_div_13_Template(rf, ctx) { if (rf & 1) {
434
+ i0.ɵɵelementStart(0, "div", 79)(1, "label");
406
435
  i0.ɵɵtext(2, "Error Message");
407
436
  i0.ɵɵelementEnd();
408
- i0.ɵɵelementStart(3, "div", 78);
437
+ i0.ɵɵelementStart(3, "div", 77);
409
438
  i0.ɵɵtext(4);
410
439
  i0.ɵɵelementEnd()();
411
440
  } if (rf & 2) {
412
- const ctx_r0 = i0.ɵɵnextContext(3);
441
+ const ctx_r1 = i0.ɵɵnextContext(3);
413
442
  i0.ɵɵadvance(4);
414
- i0.ɵɵtextInterpolate(ctx_r0.record.ErrorMessage);
443
+ i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
415
444
  } }
416
445
  function AIAgentRunFormComponentExtended_div_53_ng_template_7_Template(rf, ctx) { if (rf & 1) {
417
446
  i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
@@ -423,23 +452,22 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_7_Template(rf, ctx)
423
452
  i0.ɵɵelementStart(6, "div", 73)(7, "label");
424
453
  i0.ɵɵtext(8, "Success");
425
454
  i0.ɵɵelementEnd();
426
- i0.ɵɵelementStart(9, "span");
427
- i0.ɵɵtext(10);
428
- i0.ɵɵelementEnd()();
429
- i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_11_Template, 5, 1, "div", 76);
455
+ i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_9_Template, 2, 0, "span")(10, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_10_Template, 2, 0, "span", 76)(11, AIAgentRunFormComponentExtended_div_53_ng_template_7_Conditional_11_Template, 2, 0, "span", 77);
456
+ i0.ɵɵelementEnd();
457
+ i0.ɵɵtemplate(12, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_12_Template, 5, 1, "div", 78)(13, AIAgentRunFormComponentExtended_div_53_ng_template_7_div_13_Template, 5, 1, "div", 78);
430
458
  i0.ɵɵelementEnd();
431
459
  } if (rf & 2) {
432
- const ctx_r0 = i0.ɵɵnextContext(2);
460
+ const ctx_r1 = i0.ɵɵnextContext(2);
433
461
  i0.ɵɵadvance(4);
434
- i0.ɵɵattribute("data-status", ctx_r0.record.Status);
462
+ i0.ɵɵattribute("data-status", ctx_r1.record.Status);
435
463
  i0.ɵɵadvance();
436
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Status, " ");
464
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
437
465
  i0.ɵɵadvance(4);
438
- i0.ɵɵclassProp("success", ctx_r0.record.Success)("error", ctx_r0.record.Success === false);
439
- i0.ɵɵadvance();
440
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Success === null ? "In Progress" : ctx_r0.record.Success ? "Yes" : "No", " ");
466
+ i0.ɵɵconditional(ctx_r1.record.Success === null ? 9 : ctx_r1.record.Success ? 10 : 11);
467
+ i0.ɵɵadvance(3);
468
+ i0.ɵɵproperty("ngIf", ctx_r1.record.Message);
441
469
  i0.ɵɵadvance();
442
- i0.ɵɵproperty("ngIf", ctx_r0.record.ErrorMessage);
470
+ i0.ɵɵproperty("ngIf", ctx_r1.record.ErrorMessage);
443
471
  } }
444
472
  function AIAgentRunFormComponentExtended_div_53_ng_template_9_Template(rf, ctx) { if (rf & 1) {
445
473
  i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
@@ -478,145 +506,145 @@ function AIAgentRunFormComponentExtended_div_53_ng_template_9_Template(rf, ctx)
478
506
  i0.ɵɵpipe(30, "number");
479
507
  i0.ɵɵelementEnd()()();
480
508
  } if (rf & 2) {
481
- const ctx_r0 = i0.ɵɵnextContext(2);
509
+ const ctx_r1 = i0.ɵɵnextContext(2);
482
510
  i0.ɵɵadvance(5);
483
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalTokensUsed ? i0.ɵɵpipeBind2(6, 5, ctx_r0.record.TotalTokensUsed, "1.0-0") : "N/A");
511
+ i0.ɵɵtextInterpolate(ctx_r1.record.TotalTokensUsed ? i0.ɵɵpipeBind2(6, 5, ctx_r1.record.TotalTokensUsed, "1.0-0") : "N/A");
484
512
  i0.ɵɵadvance(6);
485
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptTokensUsed ? i0.ɵɵpipeBind2(12, 8, ctx_r0.record.TotalPromptTokensUsed, "1.0-0") : "N/A");
513
+ i0.ɵɵtextInterpolate(ctx_r1.record.TotalPromptTokensUsed ? i0.ɵɵpipeBind2(12, 8, ctx_r1.record.TotalPromptTokensUsed, "1.0-0") : "N/A");
486
514
  i0.ɵɵadvance(6);
487
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalCompletionTokensUsed ? i0.ɵɵpipeBind2(18, 11, ctx_r0.record.TotalCompletionTokensUsed, "1.0-0") : "N/A");
515
+ i0.ɵɵtextInterpolate(ctx_r1.record.TotalCompletionTokensUsed ? i0.ɵɵpipeBind2(18, 11, ctx_r1.record.TotalCompletionTokensUsed, "1.0-0") : "N/A");
488
516
  i0.ɵɵadvance(6);
489
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalCost != null ? "$" + i0.ɵɵpipeBind2(24, 14, ctx_r0.record.TotalCost, "1.2-4") : "N/A");
517
+ i0.ɵɵtextInterpolate(ctx_r1.record.TotalCost != null ? "$" + i0.ɵɵpipeBind2(24, 14, ctx_r1.record.TotalCost, "1.2-4") : "N/A");
490
518
  i0.ɵɵadvance(6);
491
- i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(30, 17, ctx_r0.record.TotalPromptIterations, "1.0-0") : "N/A");
519
+ i0.ɵɵtextInterpolate(ctx_r1.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(30, 17, ctx_r1.record.TotalPromptIterations, "1.0-0") : "N/A");
492
520
  } }
493
521
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
494
- i0.ɵɵelement(0, "mj-code-editor", 81);
522
+ i0.ɵɵelement(0, "mj-code-editor", 83);
495
523
  } if (rf & 2) {
496
- const ctx_r0 = i0.ɵɵnextContext(4);
497
- i0.ɵɵproperty("ngModel", ctx_r0.parsedResult)("language", "json")("readonly", true);
524
+ const ctx_r1 = i0.ɵɵnextContext(4);
525
+ i0.ɵɵproperty("ngModel", ctx_r1.parsedResult)("language", "json")("readonly", true);
498
526
  } }
499
527
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
500
- i0.ɵɵelementStart(0, "div", 82);
501
- i0.ɵɵelement(1, "i", 42);
528
+ i0.ɵɵelementStart(0, "div", 84);
529
+ i0.ɵɵelement(1, "i", 43);
502
530
  i0.ɵɵtext(2, " Loading result data... ");
503
531
  i0.ɵɵelementEnd();
504
532
  } }
505
533
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
506
- i0.ɵɵelementStart(0, "div", 80);
507
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 81)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_2_Template, 3, 0, "div", 82);
534
+ i0.ɵɵelementStart(0, "div", 82);
535
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
508
536
  i0.ɵɵelementEnd();
509
537
  } if (rf & 2) {
510
- const ctx_r0 = i0.ɵɵnextContext(3);
538
+ const ctx_r1 = i0.ɵɵnextContext(3);
511
539
  i0.ɵɵadvance();
512
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
540
+ i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
513
541
  } }
514
542
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_Template(rf, ctx) { if (rf & 1) {
515
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 79);
543
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 81);
516
544
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_ng_template_1_Template, 3, 1, "ng-template", 63);
517
545
  i0.ɵɵelementEnd();
518
546
  } }
519
547
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
520
- i0.ɵɵelement(0, "mj-code-editor", 81);
548
+ i0.ɵɵelement(0, "mj-code-editor", 83);
521
549
  } if (rf & 2) {
522
- const ctx_r0 = i0.ɵɵnextContext(4);
523
- i0.ɵɵproperty("ngModel", ctx_r0.parsedStartingPayload)("language", "json")("readonly", true);
550
+ const ctx_r1 = i0.ɵɵnextContext(4);
551
+ i0.ɵɵproperty("ngModel", ctx_r1.parsedStartingPayload)("language", "json")("readonly", true);
524
552
  } }
525
553
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
526
- i0.ɵɵelementStart(0, "div", 82);
527
- i0.ɵɵelement(1, "i", 42);
554
+ i0.ɵɵelementStart(0, "div", 84);
555
+ i0.ɵɵelement(1, "i", 43);
528
556
  i0.ɵɵtext(2, " Loading payload data... ");
529
557
  i0.ɵɵelementEnd();
530
558
  } }
531
559
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
532
- i0.ɵɵelementStart(0, "div", 80);
533
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 81)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_2_Template, 3, 0, "div", 82);
560
+ i0.ɵɵelementStart(0, "div", 82);
561
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
534
562
  i0.ɵɵelementEnd();
535
563
  } if (rf & 2) {
536
- const ctx_r0 = i0.ɵɵnextContext(3);
564
+ const ctx_r1 = i0.ɵɵnextContext(3);
537
565
  i0.ɵɵadvance();
538
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
566
+ i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
539
567
  } }
540
568
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_Template(rf, ctx) { if (rf & 1) {
541
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 83);
569
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 85);
542
570
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_ng_template_1_Template, 3, 1, "ng-template", 63);
543
571
  i0.ɵɵelementEnd();
544
572
  } }
545
573
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
546
- i0.ɵɵelement(0, "mj-code-editor", 81);
574
+ i0.ɵɵelement(0, "mj-code-editor", 83);
547
575
  } if (rf & 2) {
548
- const ctx_r0 = i0.ɵɵnextContext(4);
549
- i0.ɵɵproperty("ngModel", ctx_r0.parsedData)("language", "json")("readonly", true);
576
+ const ctx_r1 = i0.ɵɵnextContext(4);
577
+ i0.ɵɵproperty("ngModel", ctx_r1.parsedData)("language", "json")("readonly", true);
550
578
  } }
551
579
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
552
- i0.ɵɵelementStart(0, "div", 82);
553
- i0.ɵɵelement(1, "i", 42);
580
+ i0.ɵɵelementStart(0, "div", 84);
581
+ i0.ɵɵelement(1, "i", 43);
554
582
  i0.ɵɵtext(2, " Loading execution data... ");
555
583
  i0.ɵɵelementEnd();
556
584
  } }
557
585
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
558
- i0.ɵɵelementStart(0, "div", 80);
559
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 81)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_2_Template, 3, 0, "div", 82);
586
+ i0.ɵɵelementStart(0, "div", 82);
587
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
560
588
  i0.ɵɵelementEnd();
561
589
  } if (rf & 2) {
562
- const ctx_r0 = i0.ɵɵnextContext(3);
590
+ const ctx_r1 = i0.ɵɵnextContext(3);
563
591
  i0.ɵɵadvance();
564
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
592
+ i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
565
593
  } }
566
594
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_Template(rf, ctx) { if (rf & 1) {
567
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 84);
595
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 86);
568
596
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_ng_template_1_Template, 3, 1, "ng-template", 63);
569
597
  i0.ɵɵelementEnd();
570
598
  } }
571
599
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
572
- i0.ɵɵelement(0, "mj-code-editor", 81);
600
+ i0.ɵɵelement(0, "mj-code-editor", 83);
573
601
  } if (rf & 2) {
574
- const ctx_r0 = i0.ɵɵnextContext(4);
575
- i0.ɵɵproperty("ngModel", ctx_r0.parsedFinalPayload)("language", "json")("readonly", true);
602
+ const ctx_r1 = i0.ɵɵnextContext(4);
603
+ i0.ɵɵproperty("ngModel", ctx_r1.parsedFinalPayload)("language", "json")("readonly", true);
576
604
  } }
577
605
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
578
- i0.ɵɵelementStart(0, "div", 82);
579
- i0.ɵɵelement(1, "i", 42);
606
+ i0.ɵɵelementStart(0, "div", 84);
607
+ i0.ɵɵelement(1, "i", 43);
580
608
  i0.ɵɵtext(2, " Loading final payload data... ");
581
609
  i0.ɵɵelementEnd();
582
610
  } }
583
611
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
584
- i0.ɵɵelementStart(0, "div", 80);
585
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 81)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_2_Template, 3, 0, "div", 82);
612
+ i0.ɵɵelementStart(0, "div", 82);
613
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_1_Template, 1, 3, "mj-code-editor", 83)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
586
614
  i0.ɵɵelementEnd();
587
615
  } if (rf & 2) {
588
- const ctx_r0 = i0.ɵɵnextContext(3);
616
+ const ctx_r1 = i0.ɵɵnextContext(3);
589
617
  i0.ɵɵadvance();
590
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
618
+ i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
591
619
  } }
592
620
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_Template(rf, ctx) { if (rf & 1) {
593
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 85);
621
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 87);
594
622
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_ng_template_1_Template, 3, 1, "ng-template", 63);
595
623
  i0.ɵɵelementEnd();
596
624
  } }
597
625
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
598
- i0.ɵɵelement(0, "mj-deep-diff", 88);
626
+ i0.ɵɵelement(0, "mj-deep-diff", 90);
599
627
  } if (rf & 2) {
600
- const ctx_r0 = i0.ɵɵnextContext(4);
601
- i0.ɵɵproperty("oldValue", ctx_r0.startingPayloadObject)("newValue", ctx_r0.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
628
+ const ctx_r1 = i0.ɵɵnextContext(4);
629
+ i0.ɵɵproperty("oldValue", ctx_r1.startingPayloadObject)("newValue", ctx_r1.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
602
630
  } }
603
631
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
604
- i0.ɵɵelementStart(0, "div", 82);
605
- i0.ɵɵelement(1, "i", 42);
632
+ i0.ɵɵelementStart(0, "div", 84);
633
+ i0.ɵɵelement(1, "i", 43);
606
634
  i0.ɵɵtext(2, " Loading payload diff... ");
607
635
  i0.ɵɵelementEnd();
608
636
  } }
609
637
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
610
- i0.ɵɵelementStart(0, "div", 87);
611
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template, 1, 9, "mj-deep-diff", 88)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_2_Template, 3, 0, "div", 82);
638
+ i0.ɵɵelementStart(0, "div", 89);
639
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_1_Template, 1, 9, "mj-deep-diff", 90)(2, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Conditional_2_Template, 3, 0, "div", 84);
612
640
  i0.ɵɵelementEnd();
613
641
  } if (rf & 2) {
614
- const ctx_r0 = i0.ɵɵnextContext(3);
642
+ const ctx_r1 = i0.ɵɵnextContext(3);
615
643
  i0.ɵɵadvance();
616
- i0.ɵɵconditional(ctx_r0.isParsingComplete ? 1 : 2);
644
+ i0.ɵɵconditional(ctx_r1.isParsingComplete ? 1 : 2);
617
645
  } }
618
646
  function AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_Template(rf, ctx) { if (rf & 1) {
619
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 86);
647
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 88);
620
648
  i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_ng_template_1_Template, 3, 1, "ng-template", 63);
621
649
  i0.ɵɵelementEnd();
622
650
  } }
@@ -628,7 +656,7 @@ function AIAgentRunFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1)
628
656
  i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_53_ng_template_5_Template, 18, 5, "ng-template", 63);
629
657
  i0.ɵɵelementEnd();
630
658
  i0.ɵɵelementStart(6, "kendo-panelbar-item", 65);
631
- i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_53_ng_template_7_Template, 12, 8, "ng-template", 63);
659
+ i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_53_ng_template_7_Template, 14, 5, "ng-template", 63);
632
660
  i0.ɵɵelementEnd();
633
661
  i0.ɵɵelementStart(8, "kendo-panelbar-item", 66);
634
662
  i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_53_ng_template_9_Template, 31, 20, "ng-template", 63);
@@ -636,21 +664,21 @@ function AIAgentRunFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1)
636
664
  i0.ɵɵtemplate(10, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_10_Template, 2, 0, "kendo-panelbar-item", 67)(11, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_11_Template, 2, 0, "kendo-panelbar-item", 68)(12, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_12_Template, 2, 0, "kendo-panelbar-item", 69)(13, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_13_Template, 2, 0, "kendo-panelbar-item", 70)(14, AIAgentRunFormComponentExtended_div_53_kendo_panelbar_item_14_Template, 2, 0, "kendo-panelbar-item", 71);
637
665
  i0.ɵɵelementEnd()();
638
666
  } if (rf & 2) {
639
- const ctx_r0 = i0.ɵɵnextContext();
667
+ const ctx_r1 = i0.ɵɵnextContext();
640
668
  i0.ɵɵadvance();
641
669
  i0.ɵɵproperty("keepItemContent", true);
642
670
  i0.ɵɵadvance();
643
671
  i0.ɵɵproperty("expanded", true);
644
672
  i0.ɵɵadvance(8);
645
- i0.ɵɵproperty("ngIf", ctx_r0.record.Result);
673
+ i0.ɵɵproperty("ngIf", ctx_r1.record.Result);
646
674
  i0.ɵɵadvance();
647
- i0.ɵɵproperty("ngIf", ctx_r0.record.StartingPayload);
675
+ i0.ɵɵproperty("ngIf", ctx_r1.record.StartingPayload);
648
676
  i0.ɵɵadvance();
649
- i0.ɵɵproperty("ngIf", ctx_r0.record.Data);
677
+ i0.ɵɵproperty("ngIf", ctx_r1.record.Data);
650
678
  i0.ɵɵadvance();
651
- i0.ɵɵproperty("ngIf", ctx_r0.record.FinalPayload);
679
+ i0.ɵɵproperty("ngIf", ctx_r1.record.FinalPayload);
652
680
  i0.ɵɵadvance();
653
- i0.ɵɵproperty("ngIf", ctx_r0.showPayloadDiff);
681
+ i0.ɵɵproperty("ngIf", ctx_r1.showPayloadDiff);
654
682
  } }
655
683
  let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended extends AIAgentRunFormComponent {
656
684
  constructor(elementRef, sharedService, router, route, cdr, costService) {
@@ -1182,7 +1210,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1182
1210
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
1183
1211
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analyticsComponent = _t.first);
1184
1212
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.visualizationComponent = _t.first);
1185
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 54, vars: 29, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], ["class", "agent-name", 4, "ngIf"], [1, "run-id"], ["class", "parent-run", 4, "ngIf"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], ["class", "stat", 4, "ngIf"], ["class", "configuration-bar", 4, "ngIf"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], ["class", "tab-content", "style", "height: 100%;", 4, "ngIf"], ["class", "tab-content", 4, "ngIf"], [1, "agent-name"], [1, "parent-run"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["class", "value", 4, "ngIf"], ["class", "value loading", 4, "ngIf"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "configuration-bar"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "tab-content", 2, "height", "100%"], ["orientation", "horizontal", 2, "height", "100%"], [3, "min"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "dataHelper", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper", 4, "ngIf"], [3, "aiAgentRunId", "dataHelper"], [3, "agentRunId", 4, "ngIf"], [3, "agentRunId"], [1, "tab-content"], [3, "keepItemContent"], ["title", "General Information", 3, "expanded"], ["kendoPanelBarContent", ""], ["title", "Execution Settings"], ["title", "Execution Status"], ["title", "Usage & Cost"], ["title", "Result", 4, "ngIf"], ["title", "Starting Payload", 4, "ngIf"], ["title", "Execution Data", 4, "ngIf"], ["title", "Final Payload", 4, "ngIf"], ["title", "Payload Diff", 4, "ngIf"], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", "class", "entity-link", 3, "click", 4, "ngIf"], [4, "ngIf"], ["class", "detail-item full-width", 4, "ngIf"], [1, "detail-item", "full-width"], [1, "error-message"], ["title", "Result"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "#666"], ["title", "Starting Payload"], ["title", "Execution Data"], ["title", "Final Payload"], ["title", "Payload Diff"], [2, "padding", "20px", "background", "#f8f9fa"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"]], template: function AIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1213
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 54, vars: 29, consts: [["visualizationComponent", ""], ["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], ["class", "agent-name", 4, "ngIf"], [1, "run-id"], ["class", "parent-run", 4, "ngIf"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], ["class", "stat", 4, "ngIf"], ["class", "configuration-bar", 4, "ngIf"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], ["class", "tab-content", "style", "height: 100%;", 4, "ngIf"], ["class", "tab-content", 4, "ngIf"], [1, "agent-name"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "parent-run"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["class", "value", 4, "ngIf"], ["class", "value loading", 4, "ngIf"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "configuration-bar"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], [1, "tab-content", 2, "height", "100%"], ["orientation", "horizontal", 2, "height", "100%"], [3, "min"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "dataHelper", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper", 4, "ngIf"], [3, "aiAgentRunId", "dataHelper"], [3, "agentRunId", 4, "ngIf"], [3, "agentRunId"], [1, "tab-content"], [3, "keepItemContent"], ["title", "General Information", 3, "expanded"], ["kendoPanelBarContent", ""], ["title", "Execution Settings"], ["title", "Execution Status"], ["title", "Usage & Cost"], ["title", "Result", 4, "ngIf"], ["title", "Starting Payload", 4, "ngIf"], ["title", "Execution Data", 4, "ngIf"], ["title", "Final Payload", 4, "ngIf"], ["title", "Payload Diff", 4, "ngIf"], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", "class", "entity-link", 3, "click", 4, "ngIf"], [4, "ngIf"], [1, "success"], [1, "error-message"], ["class", "detail-item full-width", 4, "ngIf"], [1, "detail-item", "full-width"], [1, "message"], ["title", "Result"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "#666"], ["title", "Starting Payload"], ["title", "Execution Data"], ["title", "Final Payload"], ["title", "Payload Diff"], [2, "padding", "20px", "background", "#f8f9fa"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"]], template: function AIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1186
1214
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6)(5, "div", 7);
1187
1215
  i0.ɵɵelement(6, "i", 8);
1188
1216
  i0.ɵɵelementEnd();
@@ -1190,7 +1218,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1190
1218
  i0.ɵɵtext(9, "AI Agent Run");
1191
1219
  i0.ɵɵelementEnd();
1192
1220
  i0.ɵɵelementStart(10, "div", 10);
1193
- i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_span_11_Template, 2, 1, "span", 11);
1221
+ i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_span_11_Template, 3, 1, "span", 11);
1194
1222
  i0.ɵɵelementStart(12, "span", 12);
1195
1223
  i0.ɵɵtext(13);
1196
1224
  i0.ɵɵelementEnd();
@@ -1291,7 +1319,7 @@ AIAgentRunFormComponentExtended = __decorate([
1291
1319
  export { AIAgentRunFormComponentExtended };
1292
1320
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunFormComponentExtended, [{
1293
1321
  type: Component,
1294
- args: [{ selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-robot\"></i>\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n <span class=\"agent-name\" *ngIf=\"agent\">{{ agent.Name }}</span>\n <span class=\"run-id\">{{ record.ID }}</span>\n <span class=\"parent-run\" *ngIf=\"record.ParentRunID\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.Success !== null && record.CompletedAt !== null\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0\">\n <span class=\"label\">Tokens</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && costMetrics.totalCost > 0\">\n <span class=\"label\">Cost</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"record.EffortLevel\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n </div>\n \n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n <div class=\"configuration-bar\" *ngIf=\"record.ConfigurationID\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'timeline'\" style=\"height: 100%;\">\n <kendo-splitter style=\"height: 100%;\" orientation=\"horizontal\">\n <!-- Timeline Pane -->\n <kendo-splitter-pane [min]=\"'400px'\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </kendo-splitter-pane>\n \n <!-- JSON Detail Pane -->\n <kendo-splitter-pane [size]=\"'45%'\" [min]=\"'300px'\" [collapsed]=\"!selectedTimelineItem\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Visualization Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'visualization'\" style=\"height: 100%;\">\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n *ngIf=\"visualizationLoaded\">\n </mj-ai-agent-run-visualization>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'analytics'\" style=\"height: 100%;\">\n <mj-ai-agent-run-analytics \n #analyticsComponent\n [agentRunId]=\"record.ID\"\n *ngIf=\"analyticsLoaded\">\n </mj-ai-agent-run-analytics>\n </div>\n\n <!-- Details Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'details'\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <kendo-panelbar-item title=\"General Information\" [expanded]=\"true\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n <a *ngIf=\"record.ParentRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n <span *ngIf=\"!record.ParentRunID\">None (Root)</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n <a *ngIf=\"record.LastRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n <span *ngIf=\"!record.LastRunID\">None</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n <a *ngIf=\"record.ConversationID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n <span *ngIf=\"!record.ConversationID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n <a *ngIf=\"record.UserID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n <span *ngIf=\"!record.UserID\">N/A</span>\n </span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Settings\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n <a *ngIf=\"record.OverrideModelID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideModelID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n <a *ngIf=\"record.OverrideVendorID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideVendorID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Status\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n <span [class.success]=\"record.Success\" [class.error]=\"record.Success === false\">\n {{ record.Success === null ? 'In Progress' : (record.Success ? 'Yes' : 'No') }}\n </span>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.ErrorMessage\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Usage & Cost\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Result\" *ngIf=\"record.Result\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Starting Payload\" *ngIf=\"record.StartingPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Data\" *ngIf=\"record.Data\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Final Payload\" *ngIf=\"record.FinalPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Payload Diff\" *ngIf=\"showPayloadDiff\">\n <ng-template kendoPanelBarContent>\n <div style=\"padding: 20px; background: #f8f9fa;\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n </kendo-panelbar>\n </div>\n </div>\n </div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n overflow: auto;\n}\n\n/* Header Styles */\n.header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n}\n\n.btn-icon:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.config-value .entity-link {\n color: #007bff;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat .value.success {\n color: #28a745;\n}\n\n.stat .value.error {\n color: #dc3545;\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n height: calc(100vh - 390px);\n overflow: auto;\n background: white;\n}\n\n.tab-content {\n height: 100%;\n overflow: auto;\n}\n\n/* Details tab specific */\n.tab-content[ng-reflect-ng-if=\"true\"] > kendo-panelbar {\n height: 100%;\n overflow-y: auto;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: #2196f3;\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: #2196f3;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: rgba(33, 150, 243, 0.02);\n border-left: 2px solid rgba(33, 150, 243, 0.2);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #2196f3;\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: #f0f7ff;\n border: 1px solid #d0e5ff;\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: #2196f3;\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link:active {\n color: #0d47a1;\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
1322
+ args: [{ selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-robot\"></i>\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n <span class=\"agent-name\" *ngIf=\"agent\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n <span class=\"run-id\">{{ record.ID }}</span>\n <span class=\"parent-run\" *ngIf=\"record.ParentRunID\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.CompletedAt\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n <div class=\"stat\" *ngIf=\"record.Success !== null && record.CompletedAt !== null\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0\">\n <span class=\"label\">Tokens</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"costMetrics && costMetrics.totalCost > 0\">\n <span class=\"label\">Cost</span>\n <span class=\"value\" *ngIf=\"!costMetrics.isLoading\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n <span class=\"value loading\" *ngIf=\"costMetrics.isLoading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n </div>\n <div class=\"stat\" *ngIf=\"record.EffortLevel\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n </div>\n \n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n <div class=\"configuration-bar\" *ngIf=\"record.ConfigurationID\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'timeline'\" style=\"height: 100%;\">\n <kendo-splitter style=\"height: 100%;\" orientation=\"horizontal\">\n <!-- Timeline Pane -->\n <kendo-splitter-pane [min]=\"'400px'\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [autoRefresh]=\"record.Status === 'Running'\"\n [refreshInterval]=\"30000\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\"\n (agentRunCompleted)=\"onAgentRunCompleted($event)\">\n </mj-ai-agent-run-timeline>\n </kendo-splitter-pane>\n \n <!-- JSON Detail Pane -->\n <kendo-splitter-pane [size]=\"'45%'\" [min]=\"'300px'\" [collapsed]=\"!selectedTimelineItem\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Visualization Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'visualization'\" style=\"height: 100%;\">\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n *ngIf=\"visualizationLoaded\">\n </mj-ai-agent-run-visualization>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'analytics'\" style=\"height: 100%;\">\n <mj-ai-agent-run-analytics \n #analyticsComponent\n [agentRunId]=\"record.ID\"\n *ngIf=\"analyticsLoaded\">\n </mj-ai-agent-run-analytics>\n </div>\n\n <!-- Details Tab -->\n <div class=\"tab-content\" *ngIf=\"activeTab === 'details'\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <kendo-panelbar-item title=\"General Information\" [expanded]=\"true\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n <a *ngIf=\"record.ParentRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n <span *ngIf=\"!record.ParentRunID\">None (Root)</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n <a *ngIf=\"record.LastRunID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n <span *ngIf=\"!record.LastRunID\">None</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n <a *ngIf=\"record.ConversationID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n <span *ngIf=\"!record.ConversationID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n <a *ngIf=\"record.UserID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n <span *ngIf=\"!record.UserID\">N/A</span>\n </span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Settings\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n <a *ngIf=\"record.OverrideModelID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideModelID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n <a *ngIf=\"record.OverrideVendorID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n <span *ngIf=\"!record.OverrideVendorID\">N/A</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Status\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.Message\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"record.ErrorMessage\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Usage & Cost\">\n <ng-template kendoPanelBarContent>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Result\" *ngIf=\"record.Result\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Starting Payload\" *ngIf=\"record.StartingPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Execution Data\" *ngIf=\"record.Data\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Final Payload\" *ngIf=\"record.FinalPayload\">\n <ng-template kendoPanelBarContent>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <kendo-panelbar-item title=\"Payload Diff\" *ngIf=\"showPayloadDiff\">\n <ng-template kendoPanelBarContent>\n <div style=\"padding: 20px; background: #f8f9fa;\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: #666;\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n </kendo-panelbar>\n </div>\n </div>\n </div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n overflow: auto;\n}\n\n/* Header Styles */\n.header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 20px;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n}\n\n.btn-icon:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid #e9ecef;\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.config-value .entity-link {\n color: #007bff;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat .value.success {\n color: #28a745;\n}\n\n.stat .value.error {\n color: #dc3545;\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n height: calc(100vh - 390px);\n overflow: auto;\n background: white;\n}\n\n.tab-content {\n height: 100%;\n overflow: auto;\n}\n\n/* Details tab specific */\n.tab-content[ng-reflect-ng-if=\"true\"] > kendo-panelbar {\n height: 100%;\n overflow-y: auto;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: #2196f3;\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: #2196f3;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: rgba(33, 150, 243, 0.02);\n border-left: 2px solid rgba(33, 150, 243, 0.2);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #2196f3;\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: #f0f7ff;\n border: 1px solid #d0e5ff;\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: #2196f3;\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link:active {\n color: #0d47a1;\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #6c757d;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
1295
1323
  }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.AIAgentRunCostService }], { timelineComponent: [{
1296
1324
  type: ViewChild,
1297
1325
  args: [AIAgentRunTimelineComponent]