@memberjunction/ng-core-entity-forms 2.79.0 → 2.80.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.
@@ -30,7 +30,7 @@ import * as i11 from "./ai-agent-run-analytics.component";
30
30
  import * as i12 from "./ai-agent-run-visualization.component";
31
31
  import * as i13 from "./ai-agent-run-step-detail.component";
32
32
  function AIAgentRunFormComponentExtended_span_11_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 34);
33
+ i0.ɵɵelementStart(0, "span", 35);
34
34
  i0.ɵɵtext(1);
35
35
  i0.ɵɵelementEnd();
36
36
  } if (rf & 2) {
@@ -40,9 +40,9 @@ function AIAgentRunFormComponentExtended_span_11_Template(rf, ctx) { if (rf & 1)
40
40
  } }
41
41
  function AIAgentRunFormComponentExtended_span_14_Template(rf, ctx) { if (rf & 1) {
42
42
  const _r2 = i0.ɵɵgetCurrentView();
43
- i0.ɵɵelementStart(0, "span", 35);
44
- i0.ɵɵelement(1, "i", 36);
45
- i0.ɵɵelementStart(2, "a", 37);
43
+ i0.ɵɵelementStart(0, "span", 36);
44
+ i0.ɵɵelement(1, "i", 37);
45
+ i0.ɵɵelementStart(2, "a", 38);
46
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()); });
47
47
  i0.ɵɵtext(3, "Parent Run");
48
48
  i0.ɵɵelementEnd()();
@@ -97,15 +97,15 @@ function AIAgentRunFormComponentExtended_div_32_span_3_Template(rf, ctx) { if (r
97
97
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalTokensInput + ctx_r0.costMetrics.totalTokensOutput, "1.0-0"));
98
98
  } }
99
99
  function AIAgentRunFormComponentExtended_div_32_span_4_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "span", 40);
101
- i0.ɵɵelement(1, "i", 41);
100
+ i0.ɵɵelementStart(0, "span", 41);
101
+ i0.ɵɵelement(1, "i", 42);
102
102
  i0.ɵɵelementEnd();
103
103
  } }
104
104
  function AIAgentRunFormComponentExtended_div_32_Template(rf, ctx) { if (rf & 1) {
105
105
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
106
106
  i0.ɵɵtext(2, "Tokens");
107
107
  i0.ɵɵelementEnd();
108
- i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_32_span_3_Template, 3, 4, "span", 38)(4, AIAgentRunFormComponentExtended_div_32_span_4_Template, 2, 0, "span", 39);
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);
109
109
  i0.ɵɵelementEnd();
110
110
  } if (rf & 2) {
111
111
  const ctx_r0 = i0.ɵɵnextContext();
@@ -125,15 +125,15 @@ function AIAgentRunFormComponentExtended_div_33_span_3_Template(rf, ctx) { if (r
125
125
  i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalCost, "1.2-4"), "");
126
126
  } }
127
127
  function AIAgentRunFormComponentExtended_div_33_span_4_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelementStart(0, "span", 40);
129
- i0.ɵɵelement(1, "i", 41);
128
+ i0.ɵɵelementStart(0, "span", 41);
129
+ i0.ɵɵelement(1, "i", 42);
130
130
  i0.ɵɵelementEnd();
131
131
  } }
132
132
  function AIAgentRunFormComponentExtended_div_33_Template(rf, ctx) { if (rf & 1) {
133
133
  i0.ɵɵelementStart(0, "div", 21)(1, "span", 22);
134
134
  i0.ɵɵtext(2, "Cost");
135
135
  i0.ɵɵelementEnd();
136
- i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_33_span_3_Template, 3, 4, "span", 38)(4, AIAgentRunFormComponentExtended_div_33_span_4_Template, 2, 0, "span", 39);
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);
137
137
  i0.ɵɵelementEnd();
138
138
  } if (rf & 2) {
139
139
  const ctx_r0 = i0.ɵɵnextContext();
@@ -142,13 +142,29 @@ function AIAgentRunFormComponentExtended_div_33_Template(rf, ctx) { if (rf & 1)
142
142
  i0.ɵɵadvance();
143
143
  i0.ɵɵproperty("ngIf", ctx_r0.costMetrics.isLoading);
144
144
  } }
145
- function AIAgentRunFormComponentExtended_div_48_Template(rf, ctx) { if (rf & 1) {
145
+ function AIAgentRunFormComponentExtended_div_34_Template(rf, ctx) { if (rf & 1) {
146
146
  const _r3 = i0.ɵɵgetCurrentView();
147
- i0.ɵɵelementStart(0, "div", 42)(1, "kendo-splitter", 43)(2, "kendo-splitter-pane", 44)(3, "mj-ai-agent-run-timeline", 45);
148
- i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.selectTimelineItem($event)); })("navigateToEntity", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToEntityRecord($event)); })("agentRunCompleted", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_timeline_agentRunCompleted_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onAgentRunCompleted($event)); });
147
+ i0.ɵɵelementStart(0, "div", 43)(1, "div", 44);
148
+ i0.ɵɵelement(2, "i", 45);
149
+ i0.ɵɵelementStart(3, "div", 46)(4, "div", 47);
150
+ i0.ɵɵtext(5, "Configuration");
151
+ i0.ɵɵelementEnd();
152
+ i0.ɵɵelementStart(6, "div", 48)(7, "a", 49);
153
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_34_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)); });
154
+ i0.ɵɵtext(8);
155
+ i0.ɵɵelementEnd()()()()();
156
+ } if (rf & 2) {
157
+ const ctx_r0 = i0.ɵɵnextContext();
158
+ i0.ɵɵadvance(8);
159
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Configuration || "Unknown", " ");
160
+ } }
161
+ function AIAgentRunFormComponentExtended_div_49_Template(rf, ctx) { if (rf & 1) {
162
+ const _r4 = i0.ɵɵgetCurrentView();
163
+ i0.ɵɵelementStart(0, "div", 50)(1, "kendo-splitter", 51)(2, "kendo-splitter-pane", 52)(3, "mj-ai-agent-run-timeline", 53);
164
+ i0.ɵɵlistener("itemSelected", function AIAgentRunFormComponentExtended_div_49_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_49_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_49_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)); });
149
165
  i0.ɵɵelementEnd()();
150
- i0.ɵɵelementStart(4, "kendo-splitter-pane", 46)(5, "mj-ai-agent-run-step-detail", 47);
151
- i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_step_detail_closePanel_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeJsonPanel()); })("navigateToActionLog", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_step_detail_navigateToActionLog_5_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToActionLog($event)); })("copyToClipboard", function AIAgentRunFormComponentExtended_div_48_Template_mj_ai_agent_run_step_detail_copyToClipboard_5_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard($event)); });
166
+ i0.ɵɵelementStart(4, "kendo-splitter-pane", 54)(5, "mj-ai-agent-run-step-detail", 55);
167
+ i0.ɵɵlistener("closePanel", function AIAgentRunFormComponentExtended_div_49_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_49_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_49_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)); });
152
168
  i0.ɵɵelementEnd()()()();
153
169
  } if (rf & 2) {
154
170
  const ctx_r0 = i0.ɵɵnextContext();
@@ -161,40 +177,40 @@ function AIAgentRunFormComponentExtended_div_48_Template(rf, ctx) { if (rf & 1)
161
177
  i0.ɵɵadvance();
162
178
  i0.ɵɵproperty("selectedTimelineItem", ctx_r0.selectedTimelineItem);
163
179
  } }
164
- function AIAgentRunFormComponentExtended_div_49_mj_ai_agent_run_visualization_1_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 49, 0);
180
+ function AIAgentRunFormComponentExtended_div_50_mj_ai_agent_run_visualization_1_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 57, 0);
166
182
  } if (rf & 2) {
167
183
  const ctx_r0 = i0.ɵɵnextContext(2);
168
184
  i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID);
169
185
  } }
170
- function AIAgentRunFormComponentExtended_div_49_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "div", 42);
172
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_49_mj_ai_agent_run_visualization_1_Template, 2, 1, "mj-ai-agent-run-visualization", 48);
186
+ function AIAgentRunFormComponentExtended_div_50_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "div", 50);
188
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_50_mj_ai_agent_run_visualization_1_Template, 2, 1, "mj-ai-agent-run-visualization", 56);
173
189
  i0.ɵɵelementEnd();
174
190
  } if (rf & 2) {
175
191
  const ctx_r0 = i0.ɵɵnextContext();
176
192
  i0.ɵɵadvance();
177
193
  i0.ɵɵproperty("ngIf", ctx_r0.visualizationLoaded);
178
194
  } }
179
- function AIAgentRunFormComponentExtended_div_50_mj_ai_agent_run_analytics_1_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 51, 1);
195
+ function AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_analytics_1_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 59, 1);
181
197
  } if (rf & 2) {
182
198
  const ctx_r0 = i0.ɵɵnextContext(2);
183
199
  i0.ɵɵproperty("agentRunId", ctx_r0.record.ID);
184
200
  } }
185
- function AIAgentRunFormComponentExtended_div_50_Template(rf, ctx) { if (rf & 1) {
186
- i0.ɵɵelementStart(0, "div", 42);
187
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_50_mj_ai_agent_run_analytics_1_Template, 2, 1, "mj-ai-agent-run-analytics", 50);
201
+ function AIAgentRunFormComponentExtended_div_51_Template(rf, ctx) { if (rf & 1) {
202
+ i0.ɵɵelementStart(0, "div", 50);
203
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_mj_ai_agent_run_analytics_1_Template, 2, 1, "mj-ai-agent-run-analytics", 58);
188
204
  i0.ɵɵelementEnd();
189
205
  } if (rf & 2) {
190
206
  const ctx_r0 = i0.ɵɵnextContext();
191
207
  i0.ɵɵadvance();
192
208
  i0.ɵɵproperty("ngIf", ctx_r0.analyticsLoaded);
193
209
  } }
194
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_11_Template(rf, ctx) { if (rf & 1) {
195
- const _r5 = i0.ɵɵgetCurrentView();
196
- i0.ɵɵelementStart(0, "a", 66);
197
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.ParentRunID)); });
210
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_a_11_Template(rf, ctx) { if (rf & 1) {
211
+ const _r6 = i0.ɵɵgetCurrentView();
212
+ i0.ɵɵelementStart(0, "a", 49);
213
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
198
214
  i0.ɵɵtext(1);
199
215
  i0.ɵɵelementEnd();
200
216
  } if (rf & 2) {
@@ -202,15 +218,15 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_11_Template(rf,
202
218
  i0.ɵɵadvance();
203
219
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ParentRunID, " ");
204
220
  } }
205
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_span_12_Template(rf, ctx) { if (rf & 1) {
221
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_span_12_Template(rf, ctx) { if (rf & 1) {
206
222
  i0.ɵɵelementStart(0, "span");
207
223
  i0.ɵɵtext(1, "None (Root)");
208
224
  i0.ɵɵelementEnd();
209
225
  } }
210
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_17_Template(rf, ctx) { if (rf & 1) {
211
- const _r6 = i0.ɵɵgetCurrentView();
212
- i0.ɵɵelementStart(0, "a", 66);
213
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_17_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.LastRunID)); });
226
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_a_17_Template(rf, ctx) { if (rf & 1) {
227
+ const _r7 = i0.ɵɵgetCurrentView();
228
+ i0.ɵɵelementStart(0, "a", 49);
229
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
214
230
  i0.ɵɵtext(1);
215
231
  i0.ɵɵelementEnd();
216
232
  } if (rf & 2) {
@@ -218,15 +234,15 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_17_Template(rf,
218
234
  i0.ɵɵadvance();
219
235
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.LastRunID, " ");
220
236
  } }
221
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_span_18_Template(rf, ctx) { if (rf & 1) {
237
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_span_18_Template(rf, ctx) { if (rf & 1) {
222
238
  i0.ɵɵelementStart(0, "span");
223
239
  i0.ɵɵtext(1, "None");
224
240
  i0.ɵɵelementEnd();
225
241
  } }
226
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_23_Template(rf, ctx) { if (rf & 1) {
227
- const _r7 = i0.ɵɵgetCurrentView();
228
- i0.ɵɵelementStart(0, "a", 66);
229
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_23_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("Conversations", ctx_r0.record.ConversationID)); });
242
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_a_23_Template(rf, ctx) { if (rf & 1) {
243
+ const _r8 = i0.ɵɵgetCurrentView();
244
+ i0.ɵɵelementStart(0, "a", 49);
245
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
230
246
  i0.ɵɵtext(1);
231
247
  i0.ɵɵelementEnd();
232
248
  } if (rf & 2) {
@@ -234,15 +250,15 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_23_Template(rf,
234
250
  i0.ɵɵadvance();
235
251
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ConversationID, " ");
236
252
  } }
237
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_span_24_Template(rf, ctx) { if (rf & 1) {
253
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_span_24_Template(rf, ctx) { if (rf & 1) {
238
254
  i0.ɵɵelementStart(0, "span");
239
255
  i0.ɵɵtext(1, "N/A");
240
256
  i0.ɵɵelementEnd();
241
257
  } }
242
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_29_Template(rf, ctx) { if (rf & 1) {
243
- const _r8 = i0.ɵɵgetCurrentView();
244
- i0.ɵɵelementStart(0, "a", 66);
245
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_29_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("Users", ctx_r0.record.UserID)); });
258
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_a_29_Template(rf, ctx) { if (rf & 1) {
259
+ const _r9 = i0.ɵɵgetCurrentView();
260
+ i0.ɵɵelementStart(0, "a", 49);
261
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
246
262
  i0.ɵɵtext(1);
247
263
  i0.ɵɵelementEnd();
248
264
  } if (rf & 2) {
@@ -250,43 +266,43 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_3_a_29_Template(rf,
250
266
  i0.ɵɵadvance();
251
267
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.User || "N/A", " ");
252
268
  } }
253
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_span_30_Template(rf, ctx) { if (rf & 1) {
269
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_span_30_Template(rf, ctx) { if (rf & 1) {
254
270
  i0.ɵɵelementStart(0, "span");
255
271
  i0.ɵɵtext(1, "N/A");
256
272
  i0.ɵɵelementEnd();
257
273
  } }
258
- function AIAgentRunFormComponentExtended_div_51_ng_template_3_Template(rf, ctx) { if (rf & 1) {
259
- const _r4 = i0.ɵɵgetCurrentView();
260
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65)(2, "label");
274
+ function AIAgentRunFormComponentExtended_div_52_ng_template_3_Template(rf, ctx) { if (rf & 1) {
275
+ const _r5 = i0.ɵɵgetCurrentView();
276
+ i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
261
277
  i0.ɵɵtext(3, "Agent");
262
278
  i0.ɵɵelementEnd();
263
- i0.ɵɵelementStart(4, "span")(5, "a", 66);
264
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_3_Template_a_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("AI Agents", ctx_r0.record.AgentID)); });
279
+ i0.ɵɵelementStart(4, "span")(5, "a", 49);
280
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
265
281
  i0.ɵɵtext(6);
266
282
  i0.ɵɵelementEnd()()();
267
- i0.ɵɵelementStart(7, "div", 65)(8, "label");
283
+ i0.ɵɵelementStart(7, "div", 73)(8, "label");
268
284
  i0.ɵɵtext(9, "Parent Run ID");
269
285
  i0.ɵɵelementEnd();
270
286
  i0.ɵɵelementStart(10, "span");
271
- i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_51_ng_template_3_a_11_Template, 2, 1, "a", 67)(12, AIAgentRunFormComponentExtended_div_51_ng_template_3_span_12_Template, 2, 0, "span", 68);
287
+ i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_52_ng_template_3_a_11_Template, 2, 1, "a", 74)(12, AIAgentRunFormComponentExtended_div_52_ng_template_3_span_12_Template, 2, 0, "span", 75);
272
288
  i0.ɵɵelementEnd()();
273
- i0.ɵɵelementStart(13, "div", 65)(14, "label");
289
+ i0.ɵɵelementStart(13, "div", 73)(14, "label");
274
290
  i0.ɵɵtext(15, "Last Run ID");
275
291
  i0.ɵɵelementEnd();
276
292
  i0.ɵɵelementStart(16, "span");
277
- i0.ɵɵtemplate(17, AIAgentRunFormComponentExtended_div_51_ng_template_3_a_17_Template, 2, 1, "a", 67)(18, AIAgentRunFormComponentExtended_div_51_ng_template_3_span_18_Template, 2, 0, "span", 68);
293
+ i0.ɵɵtemplate(17, AIAgentRunFormComponentExtended_div_52_ng_template_3_a_17_Template, 2, 1, "a", 74)(18, AIAgentRunFormComponentExtended_div_52_ng_template_3_span_18_Template, 2, 0, "span", 75);
278
294
  i0.ɵɵelementEnd()();
279
- i0.ɵɵelementStart(19, "div", 65)(20, "label");
295
+ i0.ɵɵelementStart(19, "div", 73)(20, "label");
280
296
  i0.ɵɵtext(21, "Conversation ID");
281
297
  i0.ɵɵelementEnd();
282
298
  i0.ɵɵelementStart(22, "span");
283
- i0.ɵɵtemplate(23, AIAgentRunFormComponentExtended_div_51_ng_template_3_a_23_Template, 2, 1, "a", 67)(24, AIAgentRunFormComponentExtended_div_51_ng_template_3_span_24_Template, 2, 0, "span", 68);
299
+ i0.ɵɵtemplate(23, AIAgentRunFormComponentExtended_div_52_ng_template_3_a_23_Template, 2, 1, "a", 74)(24, AIAgentRunFormComponentExtended_div_52_ng_template_3_span_24_Template, 2, 0, "span", 75);
284
300
  i0.ɵɵelementEnd()();
285
- i0.ɵɵelementStart(25, "div", 65)(26, "label");
301
+ i0.ɵɵelementStart(25, "div", 73)(26, "label");
286
302
  i0.ɵɵtext(27, "User");
287
303
  i0.ɵɵelementEnd();
288
304
  i0.ɵɵelementStart(28, "span");
289
- i0.ɵɵtemplate(29, AIAgentRunFormComponentExtended_div_51_ng_template_3_a_29_Template, 2, 1, "a", 67)(30, AIAgentRunFormComponentExtended_div_51_ng_template_3_span_30_Template, 2, 0, "span", 68);
305
+ i0.ɵɵtemplate(29, AIAgentRunFormComponentExtended_div_52_ng_template_3_a_29_Template, 2, 1, "a", 74)(30, AIAgentRunFormComponentExtended_div_52_ng_template_3_span_30_Template, 2, 0, "span", 75);
290
306
  i0.ɵɵelementEnd()()();
291
307
  } if (rf & 2) {
292
308
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -309,26 +325,10 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_3_Template(rf, ctx)
309
325
  i0.ɵɵadvance();
310
326
  i0.ɵɵproperty("ngIf", !ctx_r0.record.UserID);
311
327
  } }
312
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_5_Template(rf, ctx) { if (rf & 1) {
313
- const _r9 = i0.ɵɵgetCurrentView();
314
- i0.ɵɵelementStart(0, "a", 66);
315
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_5_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openEntityRecord("AI Configurations", ctx_r0.record.ConfigurationID)); });
316
- i0.ɵɵtext(1);
317
- i0.ɵɵelementEnd();
318
- } if (rf & 2) {
319
- const ctx_r0 = i0.ɵɵnextContext(3);
320
- i0.ɵɵadvance();
321
- i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Configuration || "N/A", " ");
322
- } }
323
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_span_6_Template(rf, ctx) { if (rf & 1) {
324
- i0.ɵɵelementStart(0, "span");
325
- i0.ɵɵtext(1, "N/A");
326
- i0.ɵɵelementEnd();
327
- } }
328
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_11_Template(rf, ctx) { if (rf & 1) {
328
+ function AIAgentRunFormComponentExtended_div_52_ng_template_5_a_5_Template(rf, ctx) { if (rf & 1) {
329
329
  const _r10 = i0.ɵɵgetCurrentView();
330
- i0.ɵɵelementStart(0, "a", 66);
331
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_11_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)); });
330
+ i0.ɵɵelementStart(0, "a", 49);
331
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
332
332
  i0.ɵɵtext(1);
333
333
  i0.ɵɵelementEnd();
334
334
  } if (rf & 2) {
@@ -336,15 +336,15 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_11_Template(rf,
336
336
  i0.ɵɵadvance();
337
337
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideModel || "N/A", " ");
338
338
  } }
339
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_span_12_Template(rf, ctx) { if (rf & 1) {
339
+ function AIAgentRunFormComponentExtended_div_52_ng_template_5_span_6_Template(rf, ctx) { if (rf & 1) {
340
340
  i0.ɵɵelementStart(0, "span");
341
341
  i0.ɵɵtext(1, "N/A");
342
342
  i0.ɵɵelementEnd();
343
343
  } }
344
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_17_Template(rf, ctx) { if (rf & 1) {
344
+ function AIAgentRunFormComponentExtended_div_52_ng_template_5_a_11_Template(rf, ctx) { if (rf & 1) {
345
345
  const _r11 = i0.ɵɵgetCurrentView();
346
- i0.ɵɵelementStart(0, "a", 66);
347
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_17_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)); });
346
+ i0.ɵɵelementStart(0, "a", 49);
347
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_div_52_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)); });
348
348
  i0.ɵɵtext(1);
349
349
  i0.ɵɵelementEnd();
350
350
  } if (rf & 2) {
@@ -352,43 +352,33 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_5_a_17_Template(rf,
352
352
  i0.ɵɵadvance();
353
353
  i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideVendor || "N/A", " ");
354
354
  } }
355
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_span_18_Template(rf, ctx) { if (rf & 1) {
355
+ function AIAgentRunFormComponentExtended_div_52_ng_template_5_span_12_Template(rf, ctx) { if (rf & 1) {
356
356
  i0.ɵɵelementStart(0, "span");
357
357
  i0.ɵɵtext(1, "N/A");
358
358
  i0.ɵɵelementEnd();
359
359
  } }
360
- function AIAgentRunFormComponentExtended_div_51_ng_template_5_Template(rf, ctx) { if (rf & 1) {
361
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65)(2, "label");
362
- i0.ɵɵtext(3, "Configuration");
360
+ function AIAgentRunFormComponentExtended_div_52_ng_template_5_Template(rf, ctx) { if (rf & 1) {
361
+ i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
362
+ i0.ɵɵtext(3, "Override Model");
363
363
  i0.ɵɵelementEnd();
364
364
  i0.ɵɵelementStart(4, "span");
365
- i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_51_ng_template_5_a_5_Template, 2, 1, "a", 67)(6, AIAgentRunFormComponentExtended_div_51_ng_template_5_span_6_Template, 2, 0, "span", 68);
365
+ i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_52_ng_template_5_a_5_Template, 2, 1, "a", 74)(6, AIAgentRunFormComponentExtended_div_52_ng_template_5_span_6_Template, 2, 0, "span", 75);
366
366
  i0.ɵɵelementEnd()();
367
- i0.ɵɵelementStart(7, "div", 65)(8, "label");
368
- i0.ɵɵtext(9, "Override Model");
367
+ i0.ɵɵelementStart(7, "div", 73)(8, "label");
368
+ i0.ɵɵtext(9, "Override Vendor");
369
369
  i0.ɵɵelementEnd();
370
370
  i0.ɵɵelementStart(10, "span");
371
- i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_51_ng_template_5_a_11_Template, 2, 1, "a", 67)(12, AIAgentRunFormComponentExtended_div_51_ng_template_5_span_12_Template, 2, 0, "span", 68);
371
+ i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_52_ng_template_5_a_11_Template, 2, 1, "a", 74)(12, AIAgentRunFormComponentExtended_div_52_ng_template_5_span_12_Template, 2, 0, "span", 75);
372
372
  i0.ɵɵelementEnd()();
373
- i0.ɵɵelementStart(13, "div", 65)(14, "label");
374
- i0.ɵɵtext(15, "Override Vendor");
373
+ i0.ɵɵelementStart(13, "div", 73)(14, "label");
374
+ i0.ɵɵtext(15, "Verbose Logging");
375
375
  i0.ɵɵelementEnd();
376
376
  i0.ɵɵelementStart(16, "span");
377
- i0.ɵɵtemplate(17, AIAgentRunFormComponentExtended_div_51_ng_template_5_a_17_Template, 2, 1, "a", 67)(18, AIAgentRunFormComponentExtended_div_51_ng_template_5_span_18_Template, 2, 0, "span", 68);
378
- i0.ɵɵelementEnd()();
379
- i0.ɵɵelementStart(19, "div", 65)(20, "label");
380
- i0.ɵɵtext(21, "Verbose Logging");
381
- i0.ɵɵelementEnd();
382
- i0.ɵɵelementStart(22, "span");
383
- i0.ɵɵtext(23);
377
+ i0.ɵɵtext(17);
384
378
  i0.ɵɵelementEnd()()();
385
379
  } if (rf & 2) {
386
380
  const ctx_r0 = i0.ɵɵnextContext(2);
387
381
  i0.ɵɵadvance(5);
388
- i0.ɵɵproperty("ngIf", ctx_r0.record.ConfigurationID);
389
- i0.ɵɵadvance();
390
- i0.ɵɵproperty("ngIf", !ctx_r0.record.ConfigurationID);
391
- i0.ɵɵadvance(5);
392
382
  i0.ɵɵproperty("ngIf", ctx_r0.record.OverrideModelID);
393
383
  i0.ɵɵadvance();
394
384
  i0.ɵɵproperty("ngIf", !ctx_r0.record.OverrideModelID);
@@ -399,11 +389,11 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_5_Template(rf, ctx)
399
389
  i0.ɵɵadvance(5);
400
390
  i0.ɵɵtextInterpolate(ctx_r0.record.Verbose ? "Yes" : "No");
401
391
  } }
402
- function AIAgentRunFormComponentExtended_div_51_ng_template_7_div_11_Template(rf, ctx) { if (rf & 1) {
403
- i0.ɵɵelementStart(0, "div", 70)(1, "label");
392
+ function AIAgentRunFormComponentExtended_div_52_ng_template_7_div_11_Template(rf, ctx) { if (rf & 1) {
393
+ i0.ɵɵelementStart(0, "div", 77)(1, "label");
404
394
  i0.ɵɵtext(2, "Error Message");
405
395
  i0.ɵɵelementEnd();
406
- i0.ɵɵelementStart(3, "div", 71);
396
+ i0.ɵɵelementStart(3, "div", 78);
407
397
  i0.ɵɵtext(4);
408
398
  i0.ɵɵelementEnd()();
409
399
  } if (rf & 2) {
@@ -411,20 +401,20 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_7_div_11_Template(rf
411
401
  i0.ɵɵadvance(4);
412
402
  i0.ɵɵtextInterpolate(ctx_r0.record.ErrorMessage);
413
403
  } }
414
- function AIAgentRunFormComponentExtended_div_51_ng_template_7_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65)(2, "label");
404
+ function AIAgentRunFormComponentExtended_div_52_ng_template_7_Template(rf, ctx) { if (rf & 1) {
405
+ i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
416
406
  i0.ɵɵtext(3, "Status");
417
407
  i0.ɵɵelementEnd();
418
408
  i0.ɵɵelementStart(4, "span", 15);
419
409
  i0.ɵɵtext(5);
420
410
  i0.ɵɵelementEnd()();
421
- i0.ɵɵelementStart(6, "div", 65)(7, "label");
411
+ i0.ɵɵelementStart(6, "div", 73)(7, "label");
422
412
  i0.ɵɵtext(8, "Success");
423
413
  i0.ɵɵelementEnd();
424
414
  i0.ɵɵelementStart(9, "span");
425
415
  i0.ɵɵtext(10);
426
416
  i0.ɵɵelementEnd()();
427
- i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_51_ng_template_7_div_11_Template, 5, 1, "div", 69);
417
+ i0.ɵɵtemplate(11, AIAgentRunFormComponentExtended_div_52_ng_template_7_div_11_Template, 5, 1, "div", 76);
428
418
  i0.ɵɵelementEnd();
429
419
  } if (rf & 2) {
430
420
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -439,36 +429,36 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_7_Template(rf, ctx)
439
429
  i0.ɵɵadvance();
440
430
  i0.ɵɵproperty("ngIf", ctx_r0.record.ErrorMessage);
441
431
  } }
442
- function AIAgentRunFormComponentExtended_div_51_ng_template_9_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65)(2, "label");
432
+ function AIAgentRunFormComponentExtended_div_52_ng_template_9_Template(rf, ctx) { if (rf & 1) {
433
+ i0.ɵɵelementStart(0, "div", 72)(1, "div", 73)(2, "label");
444
434
  i0.ɵɵtext(3, "Total Tokens Used");
445
435
  i0.ɵɵelementEnd();
446
436
  i0.ɵɵelementStart(4, "span");
447
437
  i0.ɵɵtext(5);
448
438
  i0.ɵɵpipe(6, "number");
449
439
  i0.ɵɵelementEnd()();
450
- i0.ɵɵelementStart(7, "div", 65)(8, "label");
440
+ i0.ɵɵelementStart(7, "div", 73)(8, "label");
451
441
  i0.ɵɵtext(9, "Prompt Tokens");
452
442
  i0.ɵɵelementEnd();
453
443
  i0.ɵɵelementStart(10, "span");
454
444
  i0.ɵɵtext(11);
455
445
  i0.ɵɵpipe(12, "number");
456
446
  i0.ɵɵelementEnd()();
457
- i0.ɵɵelementStart(13, "div", 65)(14, "label");
447
+ i0.ɵɵelementStart(13, "div", 73)(14, "label");
458
448
  i0.ɵɵtext(15, "Completion Tokens");
459
449
  i0.ɵɵelementEnd();
460
450
  i0.ɵɵelementStart(16, "span");
461
451
  i0.ɵɵtext(17);
462
452
  i0.ɵɵpipe(18, "number");
463
453
  i0.ɵɵelementEnd()();
464
- i0.ɵɵelementStart(19, "div", 65)(20, "label");
454
+ i0.ɵɵelementStart(19, "div", 73)(20, "label");
465
455
  i0.ɵɵtext(21, "Total Cost");
466
456
  i0.ɵɵelementEnd();
467
457
  i0.ɵɵelementStart(22, "span");
468
458
  i0.ɵɵtext(23);
469
459
  i0.ɵɵpipe(24, "number");
470
460
  i0.ɵɵelementEnd()();
471
- i0.ɵɵelementStart(25, "div", 65)(26, "label");
461
+ i0.ɵɵelementStart(25, "div", 73)(26, "label");
472
462
  i0.ɵɵtext(27, "Total Prompt Iterations");
473
463
  i0.ɵɵelementEnd();
474
464
  i0.ɵɵelementStart(28, "span");
@@ -488,90 +478,90 @@ function AIAgentRunFormComponentExtended_div_51_ng_template_9_Template(rf, ctx)
488
478
  i0.ɵɵadvance(6);
489
479
  i0.ɵɵtextInterpolate(ctx_r0.record.TotalPromptIterations != null ? i0.ɵɵpipeBind2(30, 17, ctx_r0.record.TotalPromptIterations, "1.0-0") : "N/A");
490
480
  } }
491
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
492
- i0.ɵɵelementStart(0, "div", 73);
493
- i0.ɵɵelement(1, "mj-code-editor", 74);
481
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_10_ng_template_1_Template(rf, ctx) { if (rf & 1) {
482
+ i0.ɵɵelementStart(0, "div", 80);
483
+ i0.ɵɵelement(1, "mj-code-editor", 81);
494
484
  i0.ɵɵelementEnd();
495
485
  } if (rf & 2) {
496
486
  const ctx_r0 = i0.ɵɵnextContext(3);
497
487
  i0.ɵɵadvance();
498
488
  i0.ɵɵproperty("ngModel", ctx_r0.parsedResult)("language", "json")("readonly", true);
499
489
  } }
500
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_10_Template(rf, ctx) { if (rf & 1) {
501
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 72);
502
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_10_ng_template_1_Template, 2, 3, "ng-template", 55);
490
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_10_Template(rf, ctx) { if (rf & 1) {
491
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 79);
492
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_10_ng_template_1_Template, 2, 3, "ng-template", 63);
503
493
  i0.ɵɵelementEnd();
504
494
  } }
505
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
506
- i0.ɵɵelementStart(0, "div", 73);
507
- i0.ɵɵelement(1, "mj-code-editor", 74);
495
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
496
+ i0.ɵɵelementStart(0, "div", 80);
497
+ i0.ɵɵelement(1, "mj-code-editor", 81);
508
498
  i0.ɵɵelementEnd();
509
499
  } if (rf & 2) {
510
500
  const ctx_r0 = i0.ɵɵnextContext(3);
511
501
  i0.ɵɵadvance();
512
502
  i0.ɵɵproperty("ngModel", ctx_r0.parsedStartingPayload)("language", "json")("readonly", true);
513
503
  } }
514
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_11_Template(rf, ctx) { if (rf & 1) {
515
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 75);
516
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_11_ng_template_1_Template, 2, 3, "ng-template", 55);
504
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_11_Template(rf, ctx) { if (rf & 1) {
505
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 82);
506
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_11_ng_template_1_Template, 2, 3, "ng-template", 63);
517
507
  i0.ɵɵelementEnd();
518
508
  } }
519
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
520
- i0.ɵɵelementStart(0, "div", 73);
521
- i0.ɵɵelement(1, "mj-code-editor", 74);
509
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
510
+ i0.ɵɵelementStart(0, "div", 80);
511
+ i0.ɵɵelement(1, "mj-code-editor", 81);
522
512
  i0.ɵɵelementEnd();
523
513
  } if (rf & 2) {
524
514
  const ctx_r0 = i0.ɵɵnextContext(3);
525
515
  i0.ɵɵadvance();
526
516
  i0.ɵɵproperty("ngModel", ctx_r0.parsedData)("language", "json")("readonly", true);
527
517
  } }
528
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_12_Template(rf, ctx) { if (rf & 1) {
529
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 76);
530
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_12_ng_template_1_Template, 2, 3, "ng-template", 55);
518
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_12_Template(rf, ctx) { if (rf & 1) {
519
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 83);
520
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_12_ng_template_1_Template, 2, 3, "ng-template", 63);
531
521
  i0.ɵɵelementEnd();
532
522
  } }
533
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
534
- i0.ɵɵelementStart(0, "div", 73);
535
- i0.ɵɵelement(1, "mj-code-editor", 74);
523
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
524
+ i0.ɵɵelementStart(0, "div", 80);
525
+ i0.ɵɵelement(1, "mj-code-editor", 81);
536
526
  i0.ɵɵelementEnd();
537
527
  } if (rf & 2) {
538
528
  const ctx_r0 = i0.ɵɵnextContext(3);
539
529
  i0.ɵɵadvance();
540
530
  i0.ɵɵproperty("ngModel", ctx_r0.parsedFinalPayload)("language", "json")("readonly", true);
541
531
  } }
542
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_13_Template(rf, ctx) { if (rf & 1) {
543
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 77);
544
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_13_ng_template_1_Template, 2, 3, "ng-template", 55);
532
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_13_Template(rf, ctx) { if (rf & 1) {
533
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 84);
534
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_13_ng_template_1_Template, 2, 3, "ng-template", 63);
545
535
  i0.ɵɵelementEnd();
546
536
  } }
547
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
548
- i0.ɵɵelementStart(0, "div", 79);
549
- i0.ɵɵelement(1, "mj-deep-diff", 80);
537
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
538
+ i0.ɵɵelementStart(0, "div", 86);
539
+ i0.ɵɵelement(1, "mj-deep-diff", 87);
550
540
  i0.ɵɵelementEnd();
551
541
  } if (rf & 2) {
552
542
  const ctx_r0 = i0.ɵɵnextContext(3);
553
543
  i0.ɵɵadvance();
554
544
  i0.ɵɵproperty("oldValue", ctx_r0.startingPayloadObject)("newValue", ctx_r0.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
555
545
  } }
556
- function AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_14_Template(rf, ctx) { if (rf & 1) {
557
- i0.ɵɵelementStart(0, "kendo-panelbar-item", 78);
558
- i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_14_ng_template_1_Template, 2, 9, "ng-template", 55);
546
+ function AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_14_Template(rf, ctx) { if (rf & 1) {
547
+ i0.ɵɵelementStart(0, "kendo-panelbar-item", 85);
548
+ i0.ɵɵtemplate(1, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_14_ng_template_1_Template, 2, 9, "ng-template", 63);
559
549
  i0.ɵɵelementEnd();
560
550
  } }
561
- function AIAgentRunFormComponentExtended_div_51_Template(rf, ctx) { if (rf & 1) {
562
- i0.ɵɵelementStart(0, "div", 52)(1, "kendo-panelbar", 53)(2, "kendo-panelbar-item", 54);
563
- i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_51_ng_template_3_Template, 31, 9, "ng-template", 55);
551
+ function AIAgentRunFormComponentExtended_div_52_Template(rf, ctx) { if (rf & 1) {
552
+ i0.ɵɵelementStart(0, "div", 60)(1, "kendo-panelbar", 61)(2, "kendo-panelbar-item", 62);
553
+ i0.ɵɵtemplate(3, AIAgentRunFormComponentExtended_div_52_ng_template_3_Template, 31, 9, "ng-template", 63);
564
554
  i0.ɵɵelementEnd();
565
- i0.ɵɵelementStart(4, "kendo-panelbar-item", 56);
566
- i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_51_ng_template_5_Template, 24, 7, "ng-template", 55);
555
+ i0.ɵɵelementStart(4, "kendo-panelbar-item", 64);
556
+ i0.ɵɵtemplate(5, AIAgentRunFormComponentExtended_div_52_ng_template_5_Template, 18, 5, "ng-template", 63);
567
557
  i0.ɵɵelementEnd();
568
- i0.ɵɵelementStart(6, "kendo-panelbar-item", 57);
569
- i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_51_ng_template_7_Template, 12, 8, "ng-template", 55);
558
+ i0.ɵɵelementStart(6, "kendo-panelbar-item", 65);
559
+ i0.ɵɵtemplate(7, AIAgentRunFormComponentExtended_div_52_ng_template_7_Template, 12, 8, "ng-template", 63);
570
560
  i0.ɵɵelementEnd();
571
- i0.ɵɵelementStart(8, "kendo-panelbar-item", 58);
572
- i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_51_ng_template_9_Template, 31, 20, "ng-template", 55);
561
+ i0.ɵɵelementStart(8, "kendo-panelbar-item", 66);
562
+ i0.ɵɵtemplate(9, AIAgentRunFormComponentExtended_div_52_ng_template_9_Template, 31, 20, "ng-template", 63);
573
563
  i0.ɵɵelementEnd();
574
- i0.ɵɵtemplate(10, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_10_Template, 2, 0, "kendo-panelbar-item", 59)(11, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_11_Template, 2, 0, "kendo-panelbar-item", 60)(12, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_12_Template, 2, 0, "kendo-panelbar-item", 61)(13, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_13_Template, 2, 0, "kendo-panelbar-item", 62)(14, AIAgentRunFormComponentExtended_div_51_kendo_panelbar_item_14_Template, 2, 0, "kendo-panelbar-item", 63);
564
+ i0.ɵɵtemplate(10, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_10_Template, 2, 0, "kendo-panelbar-item", 67)(11, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_11_Template, 2, 0, "kendo-panelbar-item", 68)(12, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_12_Template, 2, 0, "kendo-panelbar-item", 69)(13, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_13_Template, 2, 0, "kendo-panelbar-item", 70)(14, AIAgentRunFormComponentExtended_div_52_kendo_panelbar_item_14_Template, 2, 0, "kendo-panelbar-item", 71);
575
565
  i0.ɵɵelementEnd()();
576
566
  } if (rf & 2) {
577
567
  const ctx_r0 = i0.ɵɵnextContext();
@@ -1017,7 +1007,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1017
1007
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
1018
1008
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analyticsComponent = _t.first);
1019
1009
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.visualizationComponent = _t.first);
1020
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 52, vars: 27, 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"], [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, "tab-content", 2, "height", "100%"], ["orientation", "horizontal", 2, "height", "100%"], [3, "min"], [3, "itemSelected", "navigateToEntity", "agentRunCompleted", "aiAgentRunId", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", 4, "ngIf"], [3, "aiAgentRunId"], [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)", 1, "entity-link", 3, "click"], ["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"], ["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) {
1010
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 53, vars: 28, 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", "autoRefresh", "refreshInterval"], [3, "size", "min", "collapsed"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", 4, "ngIf"], [3, "aiAgentRunId"], [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"], ["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) {
1021
1011
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6)(5, "div", 7);
1022
1012
  i0.ɵɵelement(6, "i", 8);
1023
1013
  i0.ɵɵelementEnd();
@@ -1047,29 +1037,31 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1047
1037
  i0.ɵɵpipe(28, "date");
1048
1038
  i0.ɵɵelementEnd()();
1049
1039
  i0.ɵɵtemplate(29, AIAgentRunFormComponentExtended_div_29_Template, 6, 4, "div", 24)(30, AIAgentRunFormComponentExtended_div_30_Template, 5, 1, "div", 24)(31, AIAgentRunFormComponentExtended_div_31_Template, 5, 5, "div", 24)(32, AIAgentRunFormComponentExtended_div_32_Template, 5, 2, "div", 24)(33, AIAgentRunFormComponentExtended_div_33_Template, 5, 2, "div", 24);
1050
- i0.ɵɵelementEnd()();
1051
- i0.ɵɵelementStart(34, "div", 25)(35, "button", 26);
1052
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_35_listener() { return ctx.changeTab("timeline"); });
1053
- i0.ɵɵelement(36, "i", 27);
1054
- i0.ɵɵtext(37, " Timeline ");
1055
1040
  i0.ɵɵelementEnd();
1056
- i0.ɵɵelementStart(38, "button", 26);
1057
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_38_listener() { return ctx.changeTab("visualization"); });
1058
- i0.ɵɵelement(39, "i", 28);
1059
- i0.ɵɵtext(40, " Visualization ");
1041
+ i0.ɵɵtemplate(34, AIAgentRunFormComponentExtended_div_34_Template, 9, 1, "div", 25);
1042
+ i0.ɵɵelementEnd();
1043
+ i0.ɵɵelementStart(35, "div", 26)(36, "button", 27);
1044
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_36_listener() { return ctx.changeTab("timeline"); });
1045
+ i0.ɵɵelement(37, "i", 28);
1046
+ i0.ɵɵtext(38, " Timeline ");
1060
1047
  i0.ɵɵelementEnd();
1061
- i0.ɵɵelementStart(41, "button", 26);
1062
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_41_listener() { return ctx.changeTab("analytics"); });
1063
- i0.ɵɵelement(42, "i", 29);
1064
- i0.ɵɵtext(43, " Analytics ");
1048
+ i0.ɵɵelementStart(39, "button", 27);
1049
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_39_listener() { return ctx.changeTab("visualization"); });
1050
+ i0.ɵɵelement(40, "i", 29);
1051
+ i0.ɵɵtext(41, " Visualization ");
1065
1052
  i0.ɵɵelementEnd();
1066
- i0.ɵɵelementStart(44, "button", 26);
1067
- i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_44_listener() { return ctx.changeTab("details"); });
1068
- i0.ɵɵelement(45, "i", 30);
1069
- i0.ɵɵtext(46, " Details ");
1053
+ i0.ɵɵelementStart(42, "button", 27);
1054
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_42_listener() { return ctx.changeTab("analytics"); });
1055
+ i0.ɵɵelement(43, "i", 30);
1056
+ i0.ɵɵtext(44, " Analytics ");
1057
+ i0.ɵɵelementEnd();
1058
+ i0.ɵɵelementStart(45, "button", 27);
1059
+ i0.ɵɵlistener("click", function AIAgentRunFormComponentExtended_Template_button_click_45_listener() { return ctx.changeTab("details"); });
1060
+ i0.ɵɵelement(46, "i", 31);
1061
+ i0.ɵɵtext(47, " Details ");
1070
1062
  i0.ɵɵelementEnd()();
1071
- i0.ɵɵelementStart(47, "div", 31);
1072
- i0.ɵɵtemplate(48, AIAgentRunFormComponentExtended_div_48_Template, 6, 8, "div", 32)(49, AIAgentRunFormComponentExtended_div_49_Template, 2, 1, "div", 32)(50, AIAgentRunFormComponentExtended_div_50_Template, 2, 1, "div", 32)(51, AIAgentRunFormComponentExtended_div_51_Template, 15, 7, "div", 33);
1063
+ i0.ɵɵelementStart(48, "div", 32);
1064
+ i0.ɵɵtemplate(49, AIAgentRunFormComponentExtended_div_49_Template, 6, 8, "div", 33)(50, AIAgentRunFormComponentExtended_div_50_Template, 2, 1, "div", 33)(51, AIAgentRunFormComponentExtended_div_51_Template, 2, 1, "div", 33)(52, AIAgentRunFormComponentExtended_div_52_Template, 15, 7, "div", 34);
1073
1065
  i0.ɵɵelementEnd()()();
1074
1066
  } if (rf & 2) {
1075
1067
  i0.ɵɵadvance(11);
@@ -1085,7 +1077,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1085
1077
  i0.ɵɵadvance();
1086
1078
  i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
1087
1079
  i0.ɵɵadvance(9);
1088
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(28, 24, ctx.record.StartedAt, "medium"));
1080
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(28, 25, ctx.record.StartedAt, "medium"));
1089
1081
  i0.ɵɵadvance(2);
1090
1082
  i0.ɵɵproperty("ngIf", ctx.record.CompletedAt);
1091
1083
  i0.ɵɵadvance();
@@ -1096,6 +1088,8 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1096
1088
  i0.ɵɵproperty("ngIf", ctx.costMetrics && ctx.costMetrics.totalTokensInput + ctx.costMetrics.totalTokensOutput > 0);
1097
1089
  i0.ɵɵadvance();
1098
1090
  i0.ɵɵproperty("ngIf", ctx.costMetrics && ctx.costMetrics.totalCost > 0);
1091
+ i0.ɵɵadvance();
1092
+ i0.ɵɵproperty("ngIf", ctx.record.ConfigurationID);
1099
1093
  i0.ɵɵadvance(2);
1100
1094
  i0.ɵɵclassProp("active", ctx.activeTab === "timeline");
1101
1095
  i0.ɵɵadvance(3);
@@ -1112,7 +1106,7 @@ let AIAgentRunFormComponentExtended = class AIAgentRunFormComponentExtended exte
1112
1106
  i0.ɵɵproperty("ngIf", ctx.activeTab === "analytics");
1113
1107
  i0.ɵɵadvance();
1114
1108
  i0.ɵɵproperty("ngIf", ctx.activeTab === "details");
1115
- } }, dependencies: [i5.NgClass, i5.NgIf, i6.NgControlStatus, i6.NgModel, i7.PanelBarComponent, i7.PanelBarItemComponent, i7.PanelBarContentDirective, i7.SplitterComponent, i7.SplitterPaneComponent, i8.CodeEditorComponent, i9.DeepDiffComponent, i10.AIAgentRunTimelineComponent, i11.AIAgentRunAnalyticsComponent, i12.AIAgentRunVisualizationComponent, i13.AIAgentRunStepDetailComponent, i5.DecimalPipe, i5.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: 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[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid #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[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #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[_ngcontent-%COMP%]:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n height: calc(100vh - 280px);\n overflow: auto;\n background: white;\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n\n\n.tab-content[ng-reflect-ng-if=\"true\"][_ngcontent-%COMP%] > kendo-panelbar[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: 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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #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[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: 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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #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[_ngcontent-%COMP%]:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #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[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: #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[_ngcontent-%COMP%]:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: #0d47a1;\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #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[_ngcontent-%COMP%]:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
1109
+ } }, dependencies: [i5.NgClass, i5.NgIf, i6.NgControlStatus, i6.NgModel, i7.PanelBarComponent, i7.PanelBarItemComponent, i7.PanelBarContentDirective, i7.SplitterComponent, i7.SplitterPaneComponent, i8.CodeEditorComponent, i9.DeepDiffComponent, i10.AIAgentRunTimelineComponent, i11.AIAgentRunAnalyticsComponent, i12.AIAgentRunVisualizationComponent, i13.AIAgentRunStepDetailComponent, i5.DecimalPipe, i5.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: 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[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: #ff6358;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: #ff4444;\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #495057;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: #e3f2fd;\n color: #1976d2;\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: #fff3cd;\n color: #856404;\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid #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[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid #e9ecef;\n}\n\n\n\n.configuration-bar[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: #6c757d;\n width: 24px;\n text-align: center;\n}\n\n.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%] {\n color: #007bff;\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%]:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: #495057;\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid #dee2e6;\n background: #f8f9fa;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #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[_ngcontent-%COMP%]:hover {\n color: #495057;\n background: rgba(0,0,0,0.02);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n height: calc(100vh - 280px);\n overflow: auto;\n background: white;\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow: auto;\n}\n\n\n\n.tab-content[ng-reflect-ng-if=\"true\"][_ngcontent-%COMP%] > kendo-panelbar[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f8f9fa;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: 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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6b7280;\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: #6b7280;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #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[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: rgba(33, 150, 243, 0.08);\n color: #1976d2;\n}\n\n.json-viewer[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e6ed;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: #f0f7ff;\n border-color: #2196f3;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 3px solid #e9ecef;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: #28a745;\n color: #28a745;\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: #dc3545;\n color: #dc3545;\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: #17a2b8;\n color: #17a2b8;\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: #ffc107;\n color: #ffc107;\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: 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[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: #cce5ff;\n color: #004085;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: #e2e3e5;\n color: #383d41;\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #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[_ngcontent-%COMP%]:hover {\n background: rgba(33, 150, 243, 0.1);\n}\n\n.btn-expand[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: #e9ecef;\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-left: 1px solid #e0e6ed;\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #e0e6ed;\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #7c8798;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #2c3e50;\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid #e0e6ed;\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #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[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: #e1f0ff;\n border-color: #b0d5ff;\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: #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[_ngcontent-%COMP%]:hover {\n color: #1976d2;\n border-bottom-color: #1976d2;\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: #0d47a1;\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid #e0e6ed;\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: #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[_ngcontent-%COMP%]:hover {\n color: #495057;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
1116
1110
  };
1117
1111
  AIAgentRunFormComponentExtended = __decorate([
1118
1112
  RegisterClass(BaseFormComponent, 'MJ: AI Agent Runs')
@@ -1120,7 +1114,7 @@ AIAgentRunFormComponentExtended = __decorate([
1120
1114
  export { AIAgentRunFormComponentExtended };
1121
1115
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunFormComponentExtended, [{
1122
1116
  type: Component,
1123
- 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>\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 [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 *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>Configuration</label>\n <span>\n <a *ngIf=\"record.ConfigurationID\" href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'N/A' }}\n </a>\n <span *ngIf=\"!record.ConfigurationID\">N/A</span>\n </span>\n </div>\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 <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <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 </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.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 - 280px);\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}"] }]
1117
+ 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>\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 [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 *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 <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\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 <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 </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 - 280px);\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}"] }]
1124
1118
  }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.AIAgentRunCostService }, { type: i4.AIAgentRunDataService }], { timelineComponent: [{
1125
1119
  type: ViewChild,
1126
1120
  args: [AIAgentRunTimelineComponent]