@memberjunction/ng-core-entity-forms 2.107.0 → 2.108.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.
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +71 -3
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +899 -641
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +57 -34
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +2 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +32 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +358 -337
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js +60 -4
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js +22 -4
- package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +33 -12
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.js +24 -4
- package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Collection/collection.form.component.js +14 -4
- package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Collection/sections/details.component.js +24 -4
- package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +59 -0
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js +167 -0
- package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.js +7 -7
- package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +43 -13
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +319 -317
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +91 -83
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +15 -15
|
@@ -33,6 +33,7 @@ import * as i13 from "@memberjunction/ng-form-toolbar";
|
|
|
33
33
|
import * as i14 from "@memberjunction/ng-code-editor";
|
|
34
34
|
const _c0 = ["customSectionContainer"];
|
|
35
35
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
36
|
+
const _forTrack1 = ($index, $item) => $item.agent.ID;
|
|
36
37
|
function AIAgentFormComponentExtended_form_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
37
38
|
i0.ɵɵelement(0, "img", 12);
|
|
38
39
|
} if (rf & 2) {
|
|
@@ -84,25 +85,29 @@ function AIAgentFormComponentExtended_form_3_Conditional_14_Template(rf, ctx) {
|
|
|
84
85
|
i0.ɵɵtextInterpolate1(" Agent Type: ", ctx_r1.record.Type, " ");
|
|
85
86
|
} }
|
|
86
87
|
function AIAgentFormComponentExtended_form_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
-
i0.ɵɵ
|
|
88
|
-
i0.ɵɵ
|
|
88
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
89
|
+
i0.ɵɵelementStart(0, "span", 33);
|
|
90
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_15_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToParentAgent()); });
|
|
91
|
+
i0.ɵɵelement(1, "i", 34);
|
|
89
92
|
i0.ɵɵtext(2);
|
|
93
|
+
i0.ɵɵelement(3, "i", 35);
|
|
90
94
|
i0.ɵɵelementEnd();
|
|
91
95
|
} if (rf & 2) {
|
|
92
96
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
97
|
+
i0.ɵɵpropertyInterpolate1("title", "Open parent agent: ", ctx_r1.record.Parent, "");
|
|
93
98
|
i0.ɵɵadvance(2);
|
|
94
99
|
i0.ɵɵtextInterpolate1(" Child of ", ctx_r1.record.Parent, " ");
|
|
95
100
|
} }
|
|
96
101
|
function AIAgentFormComponentExtended_form_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
-
const
|
|
98
|
-
i0.ɵɵelementStart(0, "button",
|
|
99
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
100
|
-
i0.ɵɵelement(1, "i",
|
|
102
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
103
|
+
i0.ɵɵelementStart(0, "button", 36);
|
|
104
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
105
|
+
i0.ɵɵelement(1, "i", 37);
|
|
101
106
|
i0.ɵɵtext(2, " Run ");
|
|
102
107
|
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵelementStart(3, "button",
|
|
104
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
105
|
-
i0.ɵɵelement(4, "i",
|
|
108
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
109
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openPermissionsDialog()); });
|
|
110
|
+
i0.ɵɵelement(4, "i", 39);
|
|
106
111
|
i0.ɵɵtext(5, " Permissions ");
|
|
107
112
|
i0.ɵɵelementEnd();
|
|
108
113
|
} if (rf & 2) {
|
|
@@ -110,7 +115,7 @@ function AIAgentFormComponentExtended_form_3_Conditional_17_Template(rf, ctx) {
|
|
|
110
115
|
i0.ɵɵproperty("disabled", ctx_r1.record.Status !== "Active");
|
|
111
116
|
} }
|
|
112
117
|
function AIAgentFormComponentExtended_form_3_Conditional_22_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
-
i0.ɵɵelement(0, "i",
|
|
118
|
+
i0.ɵɵelement(0, "i", 41);
|
|
114
119
|
i0.ɵɵtext(1);
|
|
115
120
|
} if (rf & 2) {
|
|
116
121
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -118,16 +123,16 @@ function AIAgentFormComponentExtended_form_3_Conditional_22_ng_template_1_Templa
|
|
|
118
123
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.agentType.Name, " Configuration ");
|
|
119
124
|
} }
|
|
120
125
|
function AIAgentFormComponentExtended_form_3_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
-
i0.ɵɵelementStart(0, "div",
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
122
127
|
i0.ɵɵelementContainer(1, null, 1);
|
|
123
128
|
i0.ɵɵelementEnd();
|
|
124
129
|
} if (rf & 2) {
|
|
125
130
|
i0.ɵɵstyleProp("display", "block");
|
|
126
131
|
} }
|
|
127
132
|
function AIAgentFormComponentExtended_form_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
const
|
|
129
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
130
|
-
i0.ɵɵlistener("stateChange", function AIAgentFormComponentExtended_form_3_Conditional_22_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
133
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
134
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 40);
|
|
135
|
+
i0.ɵɵlistener("stateChange", function AIAgentFormComponentExtended_form_3_Conditional_22_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCustomSectionStateChange($event)); });
|
|
131
136
|
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_22_ng_template_1_Template, 2, 1, "ng-template", 28)(2, AIAgentFormComponentExtended_form_3_Conditional_22_ng_template_2_Template, 3, 2, "ng-template", 29);
|
|
132
137
|
i0.ɵɵelementEnd();
|
|
133
138
|
} if (rf & 2) {
|
|
@@ -135,8 +140,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_22_Template(rf, ctx) {
|
|
|
135
140
|
i0.ɵɵproperty("expanded", ctx_r1.agentType.UIFormSectionExpandedByDefault);
|
|
136
141
|
} }
|
|
137
142
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
-
i0.ɵɵelementStart(0, "span",
|
|
139
|
-
i0.ɵɵelement(1, "i",
|
|
143
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
144
|
+
i0.ɵɵelement(1, "i", 45);
|
|
140
145
|
i0.ɵɵelementEnd();
|
|
141
146
|
} }
|
|
142
147
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -158,17 +163,17 @@ function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Condit
|
|
|
158
163
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount < ctx_r1.totalExecutionHistoryCount ? 2 : -1);
|
|
159
164
|
} }
|
|
160
165
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
-
i0.ɵɵelement(0, "i",
|
|
166
|
+
i0.ɵɵelement(0, "i", 43);
|
|
162
167
|
i0.ɵɵtext(1, " Execution History ");
|
|
163
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
168
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Conditional_2_Template, 2, 0, "span", 44)(3, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_1_Conditional_3_Template, 3, 2, "span");
|
|
164
169
|
} if (rf & 2) {
|
|
165
170
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
166
171
|
i0.ɵɵadvance(2);
|
|
167
172
|
i0.ɵɵconditional(ctx_r1.loadingStates.executionHistory ? 2 : ctx_r1.executionHistoryCount > 0 ? 3 : -1);
|
|
168
173
|
} }
|
|
169
174
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
-
i0.ɵɵelement(1, "i",
|
|
175
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
176
|
+
i0.ɵɵelement(1, "i", 43);
|
|
172
177
|
i0.ɵɵelementStart(2, "h4");
|
|
173
178
|
i0.ɵɵtext(3, "No Execution History");
|
|
174
179
|
i0.ɵɵelementEnd();
|
|
@@ -177,274 +182,274 @@ function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Condit
|
|
|
177
182
|
i0.ɵɵelementEnd()();
|
|
178
183
|
} }
|
|
179
184
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
180
|
-
i0.ɵɵelementStart(0, "div",
|
|
181
|
-
i0.ɵɵelement(1, "i",
|
|
182
|
-
i0.ɵɵelementStart(2, "span",
|
|
185
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
186
|
+
i0.ɵɵelement(1, "i", 66);
|
|
187
|
+
i0.ɵɵelementStart(2, "span", 67);
|
|
183
188
|
i0.ɵɵtext(3, "Config:");
|
|
184
189
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(4, "span",
|
|
190
|
+
i0.ɵɵelementStart(4, "span", 68);
|
|
186
191
|
i0.ɵɵtext(5);
|
|
187
192
|
i0.ɵɵelementEnd()();
|
|
188
193
|
} if (rf & 2) {
|
|
189
|
-
const
|
|
194
|
+
const execution_r8 = i0.ɵɵnextContext().$implicit;
|
|
190
195
|
i0.ɵɵadvance(5);
|
|
191
|
-
i0.ɵɵtextInterpolate(
|
|
196
|
+
i0.ɵɵtextInterpolate(execution_r8.Configuration);
|
|
192
197
|
} }
|
|
193
198
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
194
|
-
i0.ɵɵelementStart(0, "div",
|
|
195
|
-
i0.ɵɵelement(1, "i",
|
|
196
|
-
i0.ɵɵelementStart(2, "span",
|
|
199
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
200
|
+
i0.ɵɵelement(1, "i", 69);
|
|
201
|
+
i0.ɵɵelementStart(2, "span", 67);
|
|
197
202
|
i0.ɵɵtext(3, "Duration:");
|
|
198
203
|
i0.ɵɵelementEnd();
|
|
199
|
-
i0.ɵɵelementStart(4, "span",
|
|
204
|
+
i0.ɵɵelementStart(4, "span", 68);
|
|
200
205
|
i0.ɵɵtext(5);
|
|
201
206
|
i0.ɵɵelementEnd()();
|
|
202
207
|
} if (rf & 2) {
|
|
203
|
-
const
|
|
208
|
+
const execution_r8 = i0.ɵɵnextContext().$implicit;
|
|
204
209
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
205
210
|
i0.ɵɵadvance(5);
|
|
206
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(
|
|
211
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatExecutionTimeFromDates(execution_r8.StartedAt, execution_r8.CompletedAt));
|
|
207
212
|
} }
|
|
208
213
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
-
i0.ɵɵelementStart(0, "div",
|
|
210
|
-
i0.ɵɵelement(1, "i",
|
|
211
|
-
i0.ɵɵelementStart(2, "span",
|
|
214
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
215
|
+
i0.ɵɵelement(1, "i", 70);
|
|
216
|
+
i0.ɵɵelementStart(2, "span", 67);
|
|
212
217
|
i0.ɵɵtext(3, "Running:");
|
|
213
218
|
i0.ɵɵelementEnd()();
|
|
214
219
|
} }
|
|
215
220
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
-
i0.ɵɵelementStart(0, "div",
|
|
217
|
-
i0.ɵɵelement(1, "i",
|
|
218
|
-
i0.ɵɵelementStart(2, "span",
|
|
221
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
222
|
+
i0.ɵɵelement(1, "i", 71);
|
|
223
|
+
i0.ɵɵelementStart(2, "span", 67);
|
|
219
224
|
i0.ɵɵtext(3, "Tokens:");
|
|
220
225
|
i0.ɵɵelementEnd();
|
|
221
|
-
i0.ɵɵelementStart(4, "span",
|
|
226
|
+
i0.ɵɵelementStart(4, "span", 68);
|
|
222
227
|
i0.ɵɵtext(5);
|
|
223
228
|
i0.ɵɵelementEnd()();
|
|
224
229
|
} if (rf & 2) {
|
|
225
|
-
const
|
|
230
|
+
const execution_r8 = i0.ɵɵnextContext().$implicit;
|
|
226
231
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
227
232
|
i0.ɵɵadvance(5);
|
|
228
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
233
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r8.TotalTokensUsedRollup || execution_r8.TotalTokensUsed));
|
|
229
234
|
} }
|
|
230
235
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
231
|
-
i0.ɵɵelementStart(0, "div",
|
|
232
|
-
i0.ɵɵelement(1, "i",
|
|
233
|
-
i0.ɵɵelementStart(2, "span",
|
|
236
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
237
|
+
i0.ɵɵelement(1, "i", 72);
|
|
238
|
+
i0.ɵɵelementStart(2, "span", 67);
|
|
234
239
|
i0.ɵɵtext(3, "Cost:");
|
|
235
240
|
i0.ɵɵelementEnd();
|
|
236
|
-
i0.ɵɵelementStart(4, "span",
|
|
241
|
+
i0.ɵɵelementStart(4, "span", 68);
|
|
237
242
|
i0.ɵɵtext(5);
|
|
238
243
|
i0.ɵɵelementEnd()();
|
|
239
244
|
} if (rf & 2) {
|
|
240
|
-
const
|
|
245
|
+
const execution_r8 = i0.ɵɵnextContext().$implicit;
|
|
241
246
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
242
247
|
i0.ɵɵadvance(5);
|
|
243
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
248
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r8.TotalCostRollup || execution_r8.TotalCost), "");
|
|
244
249
|
} }
|
|
245
250
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
246
|
-
i0.ɵɵelementStart(0, "div",
|
|
247
|
-
i0.ɵɵelement(1, "i",
|
|
248
|
-
i0.ɵɵelementStart(2, "div",
|
|
251
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
252
|
+
i0.ɵɵelement(1, "i", 81);
|
|
253
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
249
254
|
i0.ɵɵtext(4, "Completed");
|
|
250
255
|
i0.ɵɵelementEnd();
|
|
251
|
-
i0.ɵɵelementStart(5, "span",
|
|
256
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
252
257
|
i0.ɵɵtext(6);
|
|
253
258
|
i0.ɵɵpipe(7, "date");
|
|
254
259
|
i0.ɵɵelementEnd()()();
|
|
255
260
|
} if (rf & 2) {
|
|
256
|
-
const
|
|
261
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
257
262
|
i0.ɵɵadvance(6);
|
|
258
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1,
|
|
263
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, execution_r8.CompletedAt, "medium"));
|
|
259
264
|
} }
|
|
260
265
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
261
|
-
i0.ɵɵelementStart(0, "div",
|
|
262
|
-
i0.ɵɵelement(1, "i",
|
|
263
|
-
i0.ɵɵelementStart(2, "div",
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
267
|
+
i0.ɵɵelement(1, "i", 71);
|
|
268
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
264
269
|
i0.ɵɵtext(4, "Direct Tokens");
|
|
265
270
|
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵelementStart(5, "span",
|
|
271
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
267
272
|
i0.ɵɵtext(6);
|
|
268
273
|
i0.ɵɵelementEnd()()();
|
|
269
274
|
} if (rf & 2) {
|
|
270
|
-
const
|
|
275
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
271
276
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
272
277
|
i0.ɵɵadvance(6);
|
|
273
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
278
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r8.TotalTokensUsed));
|
|
274
279
|
} }
|
|
275
280
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
-
i0.ɵɵelementStart(0, "div",
|
|
277
|
-
i0.ɵɵelement(1, "i",
|
|
278
|
-
i0.ɵɵelementStart(2, "div",
|
|
281
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
282
|
+
i0.ɵɵelement(1, "i", 34);
|
|
283
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
279
284
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
280
285
|
i0.ɵɵelementEnd();
|
|
281
|
-
i0.ɵɵelementStart(5, "span",
|
|
286
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
282
287
|
i0.ɵɵtext(6);
|
|
283
288
|
i0.ɵɵelementEnd()()();
|
|
284
289
|
} if (rf & 2) {
|
|
285
|
-
const
|
|
290
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
286
291
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
287
292
|
i0.ɵɵadvance(6);
|
|
288
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(
|
|
293
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokenCount(execution_r8.TotalTokensUsedRollup));
|
|
289
294
|
} }
|
|
290
295
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
-
i0.ɵɵelementStart(0, "div",
|
|
292
|
-
i0.ɵɵelement(1, "i",
|
|
293
|
-
i0.ɵɵelementStart(2, "div",
|
|
296
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
297
|
+
i0.ɵɵelement(1, "i", 72);
|
|
298
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
294
299
|
i0.ɵɵtext(4, "Direct Cost");
|
|
295
300
|
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵelementStart(5, "span",
|
|
301
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
297
302
|
i0.ɵɵtext(6);
|
|
298
303
|
i0.ɵɵelementEnd()()();
|
|
299
304
|
} if (rf & 2) {
|
|
300
|
-
const
|
|
305
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
301
306
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
302
307
|
i0.ɵɵadvance(6);
|
|
303
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
308
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r8.TotalCost), "");
|
|
304
309
|
} }
|
|
305
310
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
306
|
-
i0.ɵɵelementStart(0, "div",
|
|
307
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
-
i0.ɵɵelementStart(2, "div",
|
|
311
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
312
|
+
i0.ɵɵelement(1, "i", 82);
|
|
313
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
309
314
|
i0.ɵɵtext(4, "Total + Sub-agents");
|
|
310
315
|
i0.ɵɵelementEnd();
|
|
311
|
-
i0.ɵɵelementStart(5, "span",
|
|
316
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
312
317
|
i0.ɵɵtext(6);
|
|
313
318
|
i0.ɵɵelementEnd()()();
|
|
314
319
|
} if (rf & 2) {
|
|
315
|
-
const
|
|
320
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
316
321
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
317
322
|
i0.ɵɵadvance(6);
|
|
318
|
-
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(
|
|
323
|
+
i0.ɵɵtextInterpolate1("$", ctx_r1.formatCost(execution_r8.TotalCostRollup), "");
|
|
319
324
|
} }
|
|
320
325
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
321
|
-
i0.ɵɵelementStart(0, "div",
|
|
322
|
-
i0.ɵɵelement(1, "i",
|
|
323
|
-
i0.ɵɵelementStart(2, "div",
|
|
326
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
327
|
+
i0.ɵɵelement(1, "i", 83);
|
|
328
|
+
i0.ɵɵelementStart(2, "div", 76)(3, "span", 77);
|
|
324
329
|
i0.ɵɵtext(4, "Conversation");
|
|
325
330
|
i0.ɵɵelementEnd();
|
|
326
|
-
i0.ɵɵelementStart(5, "span",
|
|
331
|
+
i0.ɵɵelementStart(5, "span", 78);
|
|
327
332
|
i0.ɵɵtext(6);
|
|
328
333
|
i0.ɵɵelementEnd()()();
|
|
329
334
|
} if (rf & 2) {
|
|
330
|
-
const
|
|
335
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
331
336
|
i0.ɵɵadvance(6);
|
|
332
|
-
i0.ɵɵtextInterpolate1("",
|
|
337
|
+
i0.ɵɵtextInterpolate1("", execution_r8.ConversationID.substring(0, 8), "...");
|
|
333
338
|
} }
|
|
334
339
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
-
i0.ɵɵelementStart(0, "div",
|
|
336
|
-
i0.ɵɵelement(2, "i",
|
|
340
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "h5");
|
|
341
|
+
i0.ɵɵelement(2, "i", 84);
|
|
337
342
|
i0.ɵɵtext(3, " Result");
|
|
338
343
|
i0.ɵɵelementEnd();
|
|
339
|
-
i0.ɵɵelement(4, "mj-code-editor",
|
|
344
|
+
i0.ɵɵelement(4, "mj-code-editor", 85);
|
|
340
345
|
i0.ɵɵelementEnd();
|
|
341
346
|
} if (rf & 2) {
|
|
342
|
-
const
|
|
347
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
343
348
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
344
349
|
i0.ɵɵadvance(4);
|
|
345
|
-
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(
|
|
350
|
+
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r8, false))("readonly", true)("lineWrapping", true);
|
|
346
351
|
} }
|
|
347
352
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
348
|
-
i0.ɵɵelementStart(0, "div",
|
|
349
|
-
i0.ɵɵelement(2, "i",
|
|
353
|
+
i0.ɵɵelementStart(0, "div", 80)(1, "h5");
|
|
354
|
+
i0.ɵɵelement(2, "i", 86);
|
|
350
355
|
i0.ɵɵtext(3, " Error");
|
|
351
356
|
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵelementStart(4, "div",
|
|
357
|
+
i0.ɵɵelementStart(4, "div", 87);
|
|
353
358
|
i0.ɵɵtext(5);
|
|
354
359
|
i0.ɵɵelementEnd()();
|
|
355
360
|
} if (rf & 2) {
|
|
356
|
-
const
|
|
361
|
+
const execution_r8 = i0.ɵɵnextContext(2).$implicit;
|
|
357
362
|
i0.ɵɵadvance(5);
|
|
358
|
-
i0.ɵɵtextInterpolate(
|
|
363
|
+
i0.ɵɵtextInterpolate(execution_r8.ErrorMessage);
|
|
359
364
|
} }
|
|
360
365
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
-
i0.ɵɵelementStart(0, "div",
|
|
362
|
-
i0.ɵɵelement(4, "i",
|
|
363
|
-
i0.ɵɵelementStart(5, "div",
|
|
366
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "div", 73)(2, "div", 74)(3, "div", 75);
|
|
367
|
+
i0.ɵɵelement(4, "i", 70);
|
|
368
|
+
i0.ɵɵelementStart(5, "div", 76)(6, "span", 77);
|
|
364
369
|
i0.ɵɵtext(7, "Started");
|
|
365
370
|
i0.ɵɵelementEnd();
|
|
366
|
-
i0.ɵɵelementStart(8, "span",
|
|
371
|
+
i0.ɵɵelementStart(8, "span", 78);
|
|
367
372
|
i0.ɵɵtext(9);
|
|
368
373
|
i0.ɵɵpipe(10, "date");
|
|
369
374
|
i0.ɵɵelementEnd()()();
|
|
370
|
-
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_11_Template, 8, 4, "div",
|
|
375
|
+
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_11_Template, 8, 4, "div", 75)(12, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_12_Template, 7, 1, "div", 75)(13, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_13_Template, 7, 1, "div", 75)(14, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_14_Template, 7, 1, "div", 75)(15, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_15_Template, 7, 1, "div", 75)(16, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_16_Template, 7, 1, "div", 75);
|
|
371
376
|
i0.ɵɵelementEnd()();
|
|
372
|
-
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_17_Template, 5, 3, "div",
|
|
377
|
+
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_17_Template, 5, 3, "div", 79)(18, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Conditional_18_Template, 6, 1, "div", 80);
|
|
373
378
|
i0.ɵɵelementEnd();
|
|
374
379
|
} if (rf & 2) {
|
|
375
|
-
const
|
|
380
|
+
const execution_r8 = i0.ɵɵnextContext().$implicit;
|
|
376
381
|
i0.ɵɵadvance(9);
|
|
377
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9,
|
|
382
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 9, execution_r8.StartedAt, "medium"));
|
|
378
383
|
i0.ɵɵadvance(2);
|
|
379
|
-
i0.ɵɵconditional(
|
|
384
|
+
i0.ɵɵconditional(execution_r8.CompletedAt ? 11 : -1);
|
|
380
385
|
i0.ɵɵadvance();
|
|
381
|
-
i0.ɵɵconditional(
|
|
386
|
+
i0.ɵɵconditional(execution_r8.TotalTokensUsed ? 12 : -1);
|
|
382
387
|
i0.ɵɵadvance();
|
|
383
|
-
i0.ɵɵconditional(
|
|
388
|
+
i0.ɵɵconditional(execution_r8.TotalTokensUsedRollup && execution_r8.TotalTokensUsedRollup !== execution_r8.TotalTokensUsed ? 13 : -1);
|
|
384
389
|
i0.ɵɵadvance();
|
|
385
|
-
i0.ɵɵconditional(
|
|
390
|
+
i0.ɵɵconditional(execution_r8.TotalCost ? 14 : -1);
|
|
386
391
|
i0.ɵɵadvance();
|
|
387
|
-
i0.ɵɵconditional(
|
|
392
|
+
i0.ɵɵconditional(execution_r8.TotalCostRollup && execution_r8.TotalCostRollup !== execution_r8.TotalCost ? 15 : -1);
|
|
388
393
|
i0.ɵɵadvance();
|
|
389
|
-
i0.ɵɵconditional(
|
|
394
|
+
i0.ɵɵconditional(execution_r8.ConversationID ? 16 : -1);
|
|
390
395
|
i0.ɵɵadvance();
|
|
391
|
-
i0.ɵɵconditional(
|
|
396
|
+
i0.ɵɵconditional(execution_r8.Result ? 17 : -1);
|
|
392
397
|
i0.ɵɵadvance();
|
|
393
|
-
i0.ɵɵconditional(
|
|
398
|
+
i0.ɵɵconditional(execution_r8.ErrorMessage ? 18 : -1);
|
|
394
399
|
} }
|
|
395
400
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
396
|
-
const
|
|
397
|
-
i0.ɵɵelementStart(0, "div",
|
|
398
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template_div_click_1_listener() { const
|
|
399
|
-
i0.ɵɵelementStart(2, "div",
|
|
401
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
402
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
|
|
403
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template_div_click_1_listener() { const execution_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r8.ID)); });
|
|
404
|
+
i0.ɵɵelementStart(2, "div", 53)(3, "div", 54)(4, "div", 55);
|
|
400
405
|
i0.ɵɵelement(5, "i");
|
|
401
406
|
i0.ɵɵelementEnd();
|
|
402
|
-
i0.ɵɵelementStart(6, "div",
|
|
403
|
-
i0.ɵɵelement(8, "i",
|
|
407
|
+
i0.ɵɵelementStart(6, "div", 56)(7, "div", 57);
|
|
408
|
+
i0.ɵɵelement(8, "i", 58);
|
|
404
409
|
i0.ɵɵtext(9);
|
|
405
410
|
i0.ɵɵelementEnd();
|
|
406
|
-
i0.ɵɵelementStart(10, "div",
|
|
411
|
+
i0.ɵɵelementStart(10, "div", 59);
|
|
407
412
|
i0.ɵɵtext(11);
|
|
408
413
|
i0.ɵɵpipe(12, "date");
|
|
409
414
|
i0.ɵɵelementEnd()()();
|
|
410
|
-
i0.ɵɵelementStart(13, "div",
|
|
411
|
-
i0.ɵɵtemplate(14, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_14_Template, 6, 1, "div",
|
|
415
|
+
i0.ɵɵelementStart(13, "div", 60);
|
|
416
|
+
i0.ɵɵtemplate(14, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_14_Template, 6, 1, "div", 61)(15, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_15_Template, 6, 1, "div", 61)(16, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_16_Template, 4, 0, "div", 61)(17, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_17_Template, 6, 1, "div", 61)(18, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_18_Template, 6, 1, "div", 61);
|
|
412
417
|
i0.ɵɵelementEnd()();
|
|
413
|
-
i0.ɵɵelementStart(19, "div",
|
|
414
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template_button_click_20_listener($event) { const
|
|
415
|
-
i0.ɵɵelement(21, "i",
|
|
418
|
+
i0.ɵɵelementStart(19, "div", 62)(20, "button", 63);
|
|
419
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template_button_click_20_listener($event) { const execution_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r8.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
420
|
+
i0.ɵɵelement(21, "i", 64);
|
|
416
421
|
i0.ɵɵelementEnd()()();
|
|
417
|
-
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Template, 19, 12, "div",
|
|
422
|
+
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Conditional_22_Template, 19, 12, "div", 65);
|
|
418
423
|
i0.ɵɵelementEnd();
|
|
419
424
|
} if (rf & 2) {
|
|
420
|
-
const
|
|
425
|
+
const execution_r8 = ctx.$implicit;
|
|
421
426
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
422
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
427
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r8.ID]);
|
|
423
428
|
i0.ɵɵadvance(4);
|
|
424
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(
|
|
429
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r8.Status));
|
|
425
430
|
i0.ɵɵadvance();
|
|
426
|
-
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(
|
|
431
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r8.Status));
|
|
427
432
|
i0.ɵɵadvance(3);
|
|
428
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
433
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r8.ID]);
|
|
429
434
|
i0.ɵɵadvance();
|
|
430
|
-
i0.ɵɵtextInterpolate1(" Execution #",
|
|
435
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r8.ID.substring(0, 8), " ");
|
|
431
436
|
i0.ɵɵadvance(2);
|
|
432
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15,
|
|
437
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 15, execution_r8.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
433
438
|
i0.ɵɵadvance(3);
|
|
434
|
-
i0.ɵɵconditional(
|
|
439
|
+
i0.ɵɵconditional(execution_r8.Configuration ? 14 : -1);
|
|
435
440
|
i0.ɵɵadvance();
|
|
436
|
-
i0.ɵɵconditional(
|
|
441
|
+
i0.ɵɵconditional(execution_r8.CompletedAt ? 15 : execution_r8.Status === "Running" ? 16 : -1);
|
|
437
442
|
i0.ɵɵadvance(2);
|
|
438
|
-
i0.ɵɵconditional(
|
|
443
|
+
i0.ɵɵconditional(execution_r8.TotalTokensUsedRollup || execution_r8.TotalTokensUsed ? 17 : -1);
|
|
439
444
|
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵconditional(
|
|
445
|
+
i0.ɵɵconditional(execution_r8.TotalCostRollup || execution_r8.TotalCost ? 18 : -1);
|
|
441
446
|
i0.ɵɵadvance(4);
|
|
442
|
-
i0.ɵɵconditional(ctx_r1.expandedExecutions[
|
|
447
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r8.ID] ? 22 : -1);
|
|
443
448
|
} }
|
|
444
449
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
-
const
|
|
446
|
-
i0.ɵɵelementStart(0, "div",
|
|
447
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
450
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
451
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
452
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
448
453
|
i0.ɵɵelementStart(1, "span");
|
|
449
454
|
i0.ɵɵtext(2);
|
|
450
455
|
i0.ɵɵelementEnd()();
|
|
@@ -454,9 +459,9 @@ function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Condit
|
|
|
454
459
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.executionHistoryCount, " executions...");
|
|
455
460
|
} }
|
|
456
461
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
457
|
-
i0.ɵɵelementStart(0, "div",
|
|
458
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template, 23, 18, "div",
|
|
459
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Conditional_3_Template, 3, 1, "div",
|
|
462
|
+
i0.ɵɵelementStart(0, "div", 48);
|
|
463
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_For_2_Template, 23, 18, "div", 49, _forTrack0);
|
|
464
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Conditional_3_Template, 3, 1, "div", 50);
|
|
460
465
|
i0.ɵɵelementEnd();
|
|
461
466
|
} if (rf & 2) {
|
|
462
467
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -466,8 +471,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Condit
|
|
|
466
471
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount > ctx_r1.recentExecutions.length ? 3 : -1);
|
|
467
472
|
} }
|
|
468
473
|
function AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
469
|
-
i0.ɵɵelementStart(0, "div",
|
|
470
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_1_Template, 6, 0, "div",
|
|
474
|
+
i0.ɵɵelementStart(0, "div", 46);
|
|
475
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_1_Template, 6, 0, "div", 47)(2, AIAgentFormComponentExtended_form_3_Conditional_23_ng_template_2_Conditional_2_Template, 4, 1, "div", 48);
|
|
471
476
|
i0.ɵɵelementEnd();
|
|
472
477
|
} if (rf & 2) {
|
|
473
478
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -483,8 +488,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_23_Template(rf, ctx) {
|
|
|
483
488
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.executionHistory);
|
|
484
489
|
} }
|
|
485
490
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
-
i0.ɵɵelementStart(0, "span",
|
|
487
|
-
i0.ɵɵelement(1, "i",
|
|
491
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
492
|
+
i0.ɵɵelement(1, "i", 45);
|
|
488
493
|
i0.ɵɵelementEnd();
|
|
489
494
|
} }
|
|
490
495
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -497,47 +502,47 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Condit
|
|
|
497
502
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.actionCount, ")");
|
|
498
503
|
} }
|
|
499
504
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
500
|
-
i0.ɵɵelement(0, "i",
|
|
505
|
+
i0.ɵɵelement(0, "i", 89);
|
|
501
506
|
i0.ɵɵtext(1, " Actions ");
|
|
502
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
507
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Conditional_2_Template, 2, 0, "span", 44)(3, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
503
508
|
} if (rf & 2) {
|
|
504
509
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
505
510
|
i0.ɵɵadvance(2);
|
|
506
511
|
i0.ɵɵconditional(ctx_r1.loadingStates.actions ? 2 : ctx_r1.actionCount > 0 ? 3 : -1);
|
|
507
512
|
} }
|
|
508
513
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
509
|
-
i0.ɵɵelementStart(0, "div",
|
|
510
|
-
i0.ɵɵelement(1, "i",
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
515
|
+
i0.ɵɵelement(1, "i", 92);
|
|
511
516
|
i0.ɵɵelementStart(2, "p");
|
|
512
517
|
i0.ɵɵtext(3, "Loading actions...");
|
|
513
518
|
i0.ɵɵelementEnd()();
|
|
514
519
|
} }
|
|
515
520
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
516
|
-
const
|
|
517
|
-
i0.ɵɵelementStart(0, "button",
|
|
518
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
519
|
-
i0.ɵɵelement(1, "i",
|
|
521
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
522
|
+
i0.ɵɵelementStart(0, "button", 97);
|
|
523
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
524
|
+
i0.ɵɵelement(1, "i", 98);
|
|
520
525
|
i0.ɵɵtext(2, " Add Action ");
|
|
521
526
|
i0.ɵɵelementEnd();
|
|
522
527
|
} }
|
|
523
528
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
524
|
-
const
|
|
525
|
-
i0.ɵɵelementStart(0, "button",
|
|
526
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
527
|
-
i0.ɵɵelement(1, "i",
|
|
529
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
530
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
531
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
532
|
+
i0.ɵɵelement(1, "i", 98);
|
|
528
533
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
529
534
|
i0.ɵɵelementEnd();
|
|
530
535
|
} }
|
|
531
536
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
-
i0.ɵɵelementStart(0, "div",
|
|
533
|
-
i0.ɵɵelement(1, "i",
|
|
537
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
538
|
+
i0.ɵɵelement(1, "i", 89);
|
|
534
539
|
i0.ɵɵelementStart(2, "h4");
|
|
535
540
|
i0.ɵɵtext(3, "No Actions Configured");
|
|
536
541
|
i0.ɵɵelementEnd();
|
|
537
542
|
i0.ɵɵelementStart(4, "p");
|
|
538
543
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
539
544
|
i0.ɵɵelementEnd();
|
|
540
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Conditional_6_Template, 3, 0, "button",
|
|
545
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Conditional_6_Template, 3, 0, "button", 99);
|
|
541
546
|
i0.ɵɵelementEnd();
|
|
542
547
|
} if (rf & 2) {
|
|
543
548
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -545,75 +550,75 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Condit
|
|
|
545
550
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? 6 : -1);
|
|
546
551
|
} }
|
|
547
552
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
548
|
-
i0.ɵɵelementStart(0, "div",
|
|
553
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
549
554
|
i0.ɵɵtext(1);
|
|
550
555
|
i0.ɵɵelementEnd();
|
|
551
556
|
} if (rf & 2) {
|
|
552
|
-
const
|
|
557
|
+
const action_r13 = i0.ɵɵnextContext().$implicit;
|
|
553
558
|
i0.ɵɵadvance();
|
|
554
|
-
i0.ɵɵtextInterpolate(
|
|
559
|
+
i0.ɵɵtextInterpolate(action_r13.Description);
|
|
555
560
|
} }
|
|
556
561
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
557
|
-
i0.ɵɵelementStart(0, "span",
|
|
562
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
558
563
|
i0.ɵɵtext(1);
|
|
559
564
|
i0.ɵɵelementEnd();
|
|
560
565
|
} if (rf & 2) {
|
|
561
|
-
const
|
|
566
|
+
const action_r13 = i0.ɵɵnextContext().$implicit;
|
|
562
567
|
i0.ɵɵadvance();
|
|
563
|
-
i0.ɵɵtextInterpolate(
|
|
568
|
+
i0.ɵɵtextInterpolate(action_r13.Type);
|
|
564
569
|
} }
|
|
565
570
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
566
|
-
const
|
|
567
|
-
i0.ɵɵelementStart(0, "button",
|
|
568
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
569
|
-
i0.ɵɵelement(1, "i",
|
|
571
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
572
|
+
i0.ɵɵelementStart(0, "button", 114);
|
|
573
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r14); const action_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.removeAction(action_r13, $event)); });
|
|
574
|
+
i0.ɵɵelement(1, "i", 115);
|
|
570
575
|
i0.ɵɵelementEnd();
|
|
571
576
|
} }
|
|
572
577
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
573
|
-
const
|
|
574
|
-
i0.ɵɵelementStart(0, "div",
|
|
575
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Template_div_click_0_listener() { const
|
|
576
|
-
i0.ɵɵelementStart(1, "div",
|
|
578
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
579
|
+
i0.ɵɵelementStart(0, "div", 102);
|
|
580
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Template_div_click_0_listener() { const action_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("Actions", action_r13.ID)); });
|
|
581
|
+
i0.ɵɵelementStart(1, "div", 103);
|
|
577
582
|
i0.ɵɵelement(2, "i");
|
|
578
583
|
i0.ɵɵelementEnd();
|
|
579
|
-
i0.ɵɵelementStart(3, "div",
|
|
584
|
+
i0.ɵɵelementStart(3, "div", 104)(4, "div", 105);
|
|
580
585
|
i0.ɵɵtext(5);
|
|
581
586
|
i0.ɵɵelementEnd();
|
|
582
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div",
|
|
583
|
-
i0.ɵɵelementStart(7, "div",
|
|
584
|
-
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span",
|
|
585
|
-
i0.ɵɵelementStart(9, "span",
|
|
586
|
-
i0.ɵɵelement(10, "i",
|
|
587
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_6_Template, 2, 1, "div", 106);
|
|
588
|
+
i0.ɵɵelementStart(7, "div", 107);
|
|
589
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_8_Template, 2, 1, "span", 108);
|
|
590
|
+
i0.ɵɵelementStart(9, "span", 109);
|
|
591
|
+
i0.ɵɵelement(10, "i", 110);
|
|
587
592
|
i0.ɵɵtext(11);
|
|
588
593
|
i0.ɵɵelementEnd()()();
|
|
589
|
-
i0.ɵɵelementStart(12, "div",
|
|
590
|
-
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button",
|
|
591
|
-
i0.ɵɵelement(14, "i",
|
|
594
|
+
i0.ɵɵelementStart(12, "div", 111);
|
|
595
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Conditional_13_Template, 2, 0, "button", 112);
|
|
596
|
+
i0.ɵɵelement(14, "i", 113);
|
|
592
597
|
i0.ɵɵelementEnd()();
|
|
593
598
|
} if (rf & 2) {
|
|
594
|
-
const
|
|
599
|
+
const action_r13 = ctx.$implicit;
|
|
595
600
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
596
601
|
i0.ɵɵadvance(2);
|
|
597
|
-
i0.ɵɵclassMap(ctx_r1.getActionIcon(
|
|
602
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r13));
|
|
598
603
|
i0.ɵɵadvance(3);
|
|
599
|
-
i0.ɵɵtextInterpolate(
|
|
604
|
+
i0.ɵɵtextInterpolate(action_r13.Name || "Untitled Action");
|
|
600
605
|
i0.ɵɵadvance();
|
|
601
|
-
i0.ɵɵconditional(
|
|
606
|
+
i0.ɵɵconditional(action_r13.Description ? 6 : -1);
|
|
602
607
|
i0.ɵɵadvance(2);
|
|
603
|
-
i0.ɵɵconditional(
|
|
608
|
+
i0.ɵɵconditional(action_r13.Type ? 8 : -1);
|
|
604
609
|
i0.ɵɵadvance();
|
|
605
|
-
i0.ɵɵclassProp("active",
|
|
610
|
+
i0.ɵɵclassProp("active", action_r13.Status === "Active")("inactive", action_r13.Status !== "Active");
|
|
606
611
|
i0.ɵɵadvance();
|
|
607
|
-
i0.ɵɵclassProp("fa-check-circle",
|
|
612
|
+
i0.ɵɵclassProp("fa-check-circle", action_r13.Status === "Active")("fa-times-circle", action_r13.Status !== "Active");
|
|
608
613
|
i0.ɵɵadvance();
|
|
609
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
614
|
+
i0.ɵɵtextInterpolate1(" ", action_r13.Status, " ");
|
|
610
615
|
i0.ɵɵadvance(2);
|
|
611
616
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteActions ? 13 : -1);
|
|
612
617
|
} }
|
|
613
618
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
614
|
-
const
|
|
615
|
-
i0.ɵɵelementStart(0, "div",
|
|
616
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
619
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
620
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
621
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Actions", "")); });
|
|
617
622
|
i0.ɵɵelementStart(1, "span");
|
|
618
623
|
i0.ɵɵtext(2);
|
|
619
624
|
i0.ɵɵelementEnd()();
|
|
@@ -623,9 +628,9 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Condit
|
|
|
623
628
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
624
629
|
} }
|
|
625
630
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
626
|
-
i0.ɵɵelementStart(0, "div",
|
|
627
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Template, 15, 15, "div",
|
|
628
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Conditional_3_Template, 3, 1, "div",
|
|
631
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
632
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_For_2_Template, 15, 15, "div", 101, _forTrack0);
|
|
633
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Conditional_3_Template, 3, 1, "div", 50);
|
|
629
634
|
i0.ɵɵelementEnd();
|
|
630
635
|
} if (rf & 2) {
|
|
631
636
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -635,10 +640,10 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Condit
|
|
|
635
640
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
636
641
|
} }
|
|
637
642
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
638
|
-
i0.ɵɵelementStart(0, "div",
|
|
639
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_2_Template, 3, 0, "button",
|
|
643
|
+
i0.ɵɵelementStart(0, "div", 93)(1, "div", 94);
|
|
644
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_2_Template, 3, 0, "button", 95);
|
|
640
645
|
i0.ɵɵelementEnd()();
|
|
641
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Template, 7, 1, "div",
|
|
646
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_3_Template, 7, 1, "div", 47)(4, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Conditional_4_Template, 4, 1, "div", 96);
|
|
642
647
|
} if (rf & 2) {
|
|
643
648
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
644
649
|
i0.ɵɵadvance(2);
|
|
@@ -647,8 +652,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Condit
|
|
|
647
652
|
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 3 : 4);
|
|
648
653
|
} }
|
|
649
654
|
function AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
650
|
-
i0.ɵɵelementStart(0, "div",
|
|
651
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_1_Template, 4, 0, "div",
|
|
655
|
+
i0.ɵɵelementStart(0, "div", 90);
|
|
656
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_1_Template, 4, 0, "div", 91)(2, AIAgentFormComponentExtended_form_3_Conditional_24_ng_template_2_Conditional_2_Template, 5, 2);
|
|
652
657
|
i0.ɵɵelementEnd();
|
|
653
658
|
} if (rf & 2) {
|
|
654
659
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -664,8 +669,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_24_Template(rf, ctx) {
|
|
|
664
669
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.actions);
|
|
665
670
|
} }
|
|
666
671
|
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
667
|
-
i0.ɵɵelementStart(0, "span",
|
|
668
|
-
i0.ɵɵelement(1, "i",
|
|
672
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
673
|
+
i0.ɵɵelement(1, "i", 45);
|
|
669
674
|
i0.ɵɵelementEnd();
|
|
670
675
|
} }
|
|
671
676
|
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -675,202 +680,265 @@ function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Condit
|
|
|
675
680
|
} if (rf & 2) {
|
|
676
681
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
677
682
|
i0.ɵɵadvance();
|
|
678
|
-
i0.ɵɵtextInterpolate1(" (", ctx_r1.
|
|
683
|
+
i0.ɵɵtextInterpolate1(" (", ctx_r1.totalSubAgentCount, ")");
|
|
679
684
|
} }
|
|
680
685
|
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
681
|
-
i0.ɵɵelement(0, "i",
|
|
686
|
+
i0.ɵɵelement(0, "i", 34);
|
|
682
687
|
i0.ɵɵtext(1, " Sub-Agents ");
|
|
683
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
688
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Conditional_2_Template, 2, 0, "span", 44)(3, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
684
689
|
} if (rf & 2) {
|
|
685
690
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
686
691
|
i0.ɵɵadvance(2);
|
|
687
|
-
i0.ɵɵconditional(ctx_r1.loadingStates.subAgents ? 2 : ctx_r1.
|
|
692
|
+
i0.ɵɵconditional(ctx_r1.loadingStates.subAgents ? 2 : ctx_r1.totalSubAgentCount > 0 ? 3 : -1);
|
|
688
693
|
} }
|
|
689
|
-
function
|
|
690
|
-
const
|
|
691
|
-
i0.ɵɵelementStart(0, "button",
|
|
692
|
-
i0.ɵɵlistener("click", function
|
|
693
|
-
i0.ɵɵelement(1, "i",
|
|
694
|
-
i0.ɵɵtext(
|
|
695
|
-
i0.ɵɵelementEnd();
|
|
696
|
-
i0.ɵɵelementStart(
|
|
697
|
-
i0.ɵɵlistener("click", function
|
|
698
|
-
i0.ɵɵelement(
|
|
699
|
-
i0.ɵɵtext(
|
|
700
|
-
i0.ɵɵelementEnd();
|
|
701
|
-
} }
|
|
702
|
-
function
|
|
703
|
-
const
|
|
704
|
-
i0.ɵɵelementStart(0, "button",
|
|
705
|
-
i0.ɵɵlistener("click", function
|
|
706
|
-
i0.ɵɵelement(
|
|
707
|
-
i0.ɵɵtext(
|
|
708
|
-
i0.ɵɵelementEnd();
|
|
709
|
-
i0.ɵɵelementStart(
|
|
710
|
-
i0.ɵɵlistener("click", function
|
|
711
|
-
i0.ɵɵelement(
|
|
712
|
-
i0.ɵɵtext(
|
|
713
|
-
i0.ɵɵelementEnd();
|
|
694
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
695
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
696
|
+
i0.ɵɵelementStart(0, "button", 123);
|
|
697
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createChildSubAgent()); });
|
|
698
|
+
i0.ɵɵelement(1, "i", 98)(2, "i", 121);
|
|
699
|
+
i0.ɵɵtext(3, " Create Child ");
|
|
700
|
+
i0.ɵɵelementEnd();
|
|
701
|
+
i0.ɵɵelementStart(4, "button", 124);
|
|
702
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_14_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.linkRelatedSubAgent()); });
|
|
703
|
+
i0.ɵɵelement(5, "i", 98)(6, "i", 122);
|
|
704
|
+
i0.ɵɵtext(7, " Link Related ");
|
|
705
|
+
i0.ɵɵelementEnd();
|
|
706
|
+
} }
|
|
707
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
708
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
709
|
+
i0.ɵɵelementStart(0, "div", 129)(1, "button", 100);
|
|
710
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Conditional_19_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.createChildSubAgent()); });
|
|
711
|
+
i0.ɵɵelement(2, "i", 98);
|
|
712
|
+
i0.ɵɵtext(3, " Create Child Sub-Agent ");
|
|
713
|
+
i0.ɵɵelementEnd();
|
|
714
|
+
i0.ɵɵelementStart(4, "button", 130);
|
|
715
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Conditional_19_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.linkRelatedSubAgent()); });
|
|
716
|
+
i0.ɵɵelement(5, "i", 98);
|
|
717
|
+
i0.ɵɵtext(6, " Link Related Sub-Agent ");
|
|
718
|
+
i0.ɵɵelementEnd()();
|
|
714
719
|
} }
|
|
715
|
-
function
|
|
716
|
-
i0.ɵɵelementStart(0, "div",
|
|
717
|
-
i0.ɵɵelement(1, "i",
|
|
720
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
721
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
722
|
+
i0.ɵɵelement(1, "i", 34);
|
|
718
723
|
i0.ɵɵelementStart(2, "h4");
|
|
719
724
|
i0.ɵɵtext(3, "No Sub-Agents");
|
|
720
725
|
i0.ɵɵelementEnd();
|
|
721
726
|
i0.ɵɵelementStart(4, "p");
|
|
722
|
-
i0.ɵɵtext(5, "
|
|
727
|
+
i0.ɵɵtext(5, "Sub-agents help build complex workflows through hierarchical orchestration.");
|
|
723
728
|
i0.ɵɵelementEnd();
|
|
724
|
-
i0.ɵɵ
|
|
729
|
+
i0.ɵɵelementStart(6, "div", 125)(7, "div", 126);
|
|
730
|
+
i0.ɵɵelement(8, "i", 127);
|
|
731
|
+
i0.ɵɵelementStart(9, "strong");
|
|
732
|
+
i0.ɵɵtext(10, "Child Sub-Agents");
|
|
733
|
+
i0.ɵɵelementEnd();
|
|
734
|
+
i0.ɵɵelementStart(11, "p");
|
|
735
|
+
i0.ɵɵtext(12, "Share payload structure, dedicated to parent");
|
|
736
|
+
i0.ɵɵelementEnd()();
|
|
737
|
+
i0.ɵɵelementStart(13, "div", 126);
|
|
738
|
+
i0.ɵɵelement(14, "i", 128);
|
|
739
|
+
i0.ɵɵelementStart(15, "strong");
|
|
740
|
+
i0.ɵɵtext(16, "Related Sub-Agents");
|
|
741
|
+
i0.ɵɵelementEnd();
|
|
742
|
+
i0.ɵɵelementStart(17, "p");
|
|
743
|
+
i0.ɵɵtext(18, "Reusable agents with payload mapping");
|
|
744
|
+
i0.ɵɵelementEnd()()();
|
|
745
|
+
i0.ɵɵtemplate(19, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Conditional_19_Template, 7, 0, "div", 129);
|
|
725
746
|
i0.ɵɵelementEnd();
|
|
726
747
|
} if (rf & 2) {
|
|
727
748
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
728
|
-
i0.ɵɵadvance(
|
|
729
|
-
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ?
|
|
749
|
+
i0.ɵɵadvance(19);
|
|
750
|
+
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 19 : -1);
|
|
730
751
|
} }
|
|
731
|
-
function
|
|
732
|
-
i0.ɵɵelement(0, "img",
|
|
752
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
753
|
+
i0.ɵɵelement(0, "img", 134);
|
|
733
754
|
} if (rf & 2) {
|
|
734
|
-
const
|
|
735
|
-
i0.ɵɵproperty("src",
|
|
755
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
756
|
+
i0.ɵɵproperty("src", item_r20.agent.LogoURL, i0.ɵɵsanitizeUrl)("alt", item_r20.agent.Name + " logo");
|
|
736
757
|
} }
|
|
737
|
-
function
|
|
758
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
738
759
|
i0.ɵɵelement(0, "i");
|
|
739
760
|
} if (rf & 2) {
|
|
740
|
-
const
|
|
761
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
741
762
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
742
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(
|
|
763
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(item_r20.agent));
|
|
743
764
|
} }
|
|
744
|
-
function
|
|
745
|
-
i0.ɵɵelementStart(0, "div",
|
|
765
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
766
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
746
767
|
i0.ɵɵtext(1);
|
|
747
768
|
i0.ɵɵelementEnd();
|
|
748
769
|
} if (rf & 2) {
|
|
749
|
-
const
|
|
770
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
750
771
|
i0.ɵɵadvance();
|
|
751
|
-
i0.ɵɵtextInterpolate(
|
|
772
|
+
i0.ɵɵtextInterpolate(item_r20.agent.Description);
|
|
752
773
|
} }
|
|
753
|
-
function
|
|
754
|
-
i0.ɵɵelementStart(0, "span",
|
|
774
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
775
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
755
776
|
i0.ɵɵtext(1);
|
|
756
777
|
i0.ɵɵelementEnd();
|
|
757
778
|
} if (rf & 2) {
|
|
758
|
-
const
|
|
779
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
759
780
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
760
781
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
761
782
|
i0.ɵɵadvance();
|
|
762
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
783
|
+
i0.ɵɵtextInterpolate1(" ", item_r20.agent.Status, " ");
|
|
763
784
|
} }
|
|
764
|
-
function
|
|
765
|
-
i0.ɵɵelementStart(0, "span",
|
|
785
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
786
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
766
787
|
i0.ɵɵtext(1);
|
|
767
788
|
i0.ɵɵelementEnd();
|
|
768
789
|
} if (rf & 2) {
|
|
769
|
-
const
|
|
790
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
770
791
|
i0.ɵɵadvance();
|
|
771
|
-
i0.ɵɵtextInterpolate(
|
|
792
|
+
i0.ɵɵtextInterpolate(item_r20.agent.Type);
|
|
772
793
|
} }
|
|
773
|
-
function
|
|
774
|
-
const
|
|
775
|
-
i0.ɵɵelementStart(0, "button",
|
|
776
|
-
i0.ɵɵlistener("click", function
|
|
777
|
-
i0.ɵɵelement(1, "i",
|
|
794
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
795
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
796
|
+
i0.ɵɵelementStart(0, "button", 141);
|
|
797
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r21); const item_r20 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureOutputMapping(item_r20, $event)); });
|
|
798
|
+
i0.ɵɵelement(1, "i", 142);
|
|
778
799
|
i0.ɵɵelementEnd();
|
|
779
800
|
} }
|
|
780
|
-
function
|
|
781
|
-
const
|
|
782
|
-
i0.ɵɵelementStart(0, "button",
|
|
783
|
-
i0.ɵɵlistener("click", function
|
|
784
|
-
i0.ɵɵelement(1, "i",
|
|
801
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
802
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
803
|
+
i0.ɵɵelementStart(0, "button", 143);
|
|
804
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r22); const item_r20 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(item_r20.agent, $event)); });
|
|
805
|
+
i0.ɵɵelement(1, "i", 66);
|
|
785
806
|
i0.ɵɵelementEnd();
|
|
786
807
|
} }
|
|
787
|
-
function
|
|
788
|
-
const
|
|
789
|
-
i0.ɵɵelementStart(0, "
|
|
790
|
-
i0.ɵɵlistener("click", function
|
|
791
|
-
i0.ɵɵ
|
|
792
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_2_Template, 1, 2, "img", 119)(3, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_3_Template, 1, 2, "i", 13);
|
|
808
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
809
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
810
|
+
i0.ɵɵelementStart(0, "button", 144);
|
|
811
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r23); const item_r20 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(item_r20.type === "child" ? ctx_r1.removeChildSubAgent(item_r20, $event) : ctx_r1.unlinkRelatedSubAgent(item_r20, $event)); });
|
|
812
|
+
i0.ɵɵelement(1, "i");
|
|
793
813
|
i0.ɵɵelementEnd();
|
|
794
|
-
|
|
795
|
-
i0.ɵɵ
|
|
814
|
+
} if (rf & 2) {
|
|
815
|
+
const item_r20 = i0.ɵɵnextContext(2).$implicit;
|
|
816
|
+
i0.ɵɵproperty("title", item_r20.type === "child" ? "Delete child sub-agent" : "Unlink related sub-agent");
|
|
817
|
+
i0.ɵɵadvance();
|
|
818
|
+
i0.ɵɵclassMap(item_r20.type === "child" ? "fa-solid fa-trash" : "fa-solid fa-unlink");
|
|
819
|
+
} }
|
|
820
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
821
|
+
i0.ɵɵtemplate(0, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_0_Template, 2, 0, "button", 138)(1, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_1_Template, 2, 0, "button", 139)(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Conditional_2_Template, 2, 3, "button", 140);
|
|
822
|
+
} if (rf & 2) {
|
|
823
|
+
const item_r20 = i0.ɵɵnextContext().$implicit;
|
|
824
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
825
|
+
i0.ɵɵconditional(item_r20.type === "related" ? 0 : -1);
|
|
826
|
+
i0.ɵɵadvance();
|
|
827
|
+
i0.ɵɵconditional(item_r20.type === "child" && ctx_r1.UserCanCreateSubAgents ? 1 : -1);
|
|
828
|
+
i0.ɵɵadvance();
|
|
829
|
+
i0.ɵɵconditional(ctx_r1.UserCanDeleteSubAgents ? 2 : -1);
|
|
830
|
+
} }
|
|
831
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
833
|
+
i0.ɵɵelementStart(0, "div", 132);
|
|
834
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Template_div_click_0_listener() { const item_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", item_r20.agent.ID)); });
|
|
835
|
+
i0.ɵɵelementStart(1, "div", 133);
|
|
836
|
+
i0.ɵɵelement(2, "i");
|
|
837
|
+
i0.ɵɵtext(3);
|
|
796
838
|
i0.ɵɵelementEnd();
|
|
797
|
-
i0.ɵɵ
|
|
798
|
-
i0.ɵɵ
|
|
799
|
-
i0.ɵɵ
|
|
839
|
+
i0.ɵɵelementStart(4, "div", 103);
|
|
840
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_5_Template, 1, 2, "img", 134)(6, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_6_Template, 1, 2, "i", 13);
|
|
841
|
+
i0.ɵɵelementEnd();
|
|
842
|
+
i0.ɵɵelementStart(7, "div", 104)(8, "div", 105);
|
|
843
|
+
i0.ɵɵtext(9);
|
|
844
|
+
i0.ɵɵelementEnd();
|
|
845
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_10_Template, 2, 1, "div", 106);
|
|
846
|
+
i0.ɵɵelementStart(11, "div", 107)(12, "span", 135);
|
|
847
|
+
i0.ɵɵelement(13, "i", 136);
|
|
848
|
+
i0.ɵɵtext(14);
|
|
849
|
+
i0.ɵɵelementEnd();
|
|
850
|
+
i0.ɵɵtemplate(15, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_15_Template, 2, 3, "span", 137)(16, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_16_Template, 2, 1, "span", 108);
|
|
800
851
|
i0.ɵɵelementEnd()();
|
|
801
|
-
i0.ɵɵelementStart(
|
|
802
|
-
i0.ɵɵtemplate(
|
|
803
|
-
i0.ɵɵelement(
|
|
852
|
+
i0.ɵɵelementStart(17, "div", 111);
|
|
853
|
+
i0.ɵɵtemplate(18, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Conditional_18_Template, 3, 3);
|
|
854
|
+
i0.ɵɵelement(19, "i", 113);
|
|
804
855
|
i0.ɵɵelementEnd()();
|
|
805
856
|
} if (rf & 2) {
|
|
806
|
-
const
|
|
857
|
+
const item_r20 = ctx.$implicit;
|
|
807
858
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
859
|
+
i0.ɵɵclassProp("child-sub-agent", item_r20.type === "child")("related-sub-agent", item_r20.type === "related");
|
|
860
|
+
i0.ɵɵadvance();
|
|
861
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getSubAgentBadgeColor(item_r20));
|
|
862
|
+
i0.ɵɵadvance();
|
|
863
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentBadgeIcon(item_r20));
|
|
864
|
+
i0.ɵɵadvance();
|
|
865
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentBadgeText(item_r20), " ");
|
|
808
866
|
i0.ɵɵadvance(2);
|
|
809
|
-
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(
|
|
867
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(item_r20.agent) ? 5 : 6);
|
|
810
868
|
i0.ɵɵadvance(4);
|
|
811
|
-
i0.ɵɵtextInterpolate(
|
|
869
|
+
i0.ɵɵtextInterpolate(item_r20.agent.Name || "Untitled Sub-Agent");
|
|
812
870
|
i0.ɵɵadvance();
|
|
813
|
-
i0.ɵɵconditional(
|
|
814
|
-
i0.ɵɵadvance(
|
|
815
|
-
i0.ɵɵ
|
|
871
|
+
i0.ɵɵconditional(item_r20.agent.Description ? 10 : -1);
|
|
872
|
+
i0.ɵɵadvance(4);
|
|
873
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubAgentPayloadInfo(item_r20), " ");
|
|
816
874
|
i0.ɵɵadvance();
|
|
817
|
-
i0.ɵɵconditional(
|
|
818
|
-
i0.ɵɵadvance(2);
|
|
819
|
-
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 12 : -1);
|
|
875
|
+
i0.ɵɵconditional(item_r20.agent.Status ? 15 : -1);
|
|
820
876
|
i0.ɵɵadvance();
|
|
821
|
-
i0.ɵɵconditional(
|
|
822
|
-
} }
|
|
823
|
-
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
824
|
-
const _r21 = i0.ɵɵgetCurrentView();
|
|
825
|
-
i0.ɵɵelementStart(0, "div", 86);
|
|
826
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", "")); });
|
|
827
|
-
i0.ɵɵelementStart(1, "span");
|
|
828
|
-
i0.ɵɵtext(2);
|
|
829
|
-
i0.ɵɵelementEnd()();
|
|
830
|
-
} if (rf & 2) {
|
|
831
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
877
|
+
i0.ɵɵconditional(item_r20.agent.Type ? 16 : -1);
|
|
832
878
|
i0.ɵɵadvance(2);
|
|
833
|
-
i0.ɵɵ
|
|
879
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 18 : -1);
|
|
834
880
|
} }
|
|
835
|
-
function
|
|
836
|
-
i0.ɵɵelementStart(0, "div",
|
|
837
|
-
i0.ɵɵrepeaterCreate(1,
|
|
838
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 48);
|
|
881
|
+
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
882
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
883
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_For_2_Template, 20, 16, "div", 131, _forTrack1);
|
|
839
884
|
i0.ɵɵelementEnd();
|
|
840
885
|
} if (rf & 2) {
|
|
841
886
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
842
887
|
i0.ɵɵadvance();
|
|
843
|
-
i0.ɵɵrepeater(ctx_r1.
|
|
844
|
-
i0.ɵɵadvance(2);
|
|
845
|
-
i0.ɵɵconditional(ctx_r1.subAgentCount > ctx_r1.subAgents.length ? 3 : -1);
|
|
888
|
+
i0.ɵɵrepeater(ctx_r1.filteredSubAgents);
|
|
846
889
|
} }
|
|
847
890
|
function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
848
|
-
|
|
849
|
-
i0.ɵɵ
|
|
891
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
892
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 116)(2, "div", 117)(3, "kendo-buttongroup", 118)(4, "button", 119);
|
|
893
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("all")); });
|
|
894
|
+
i0.ɵɵelement(5, "i", 120);
|
|
895
|
+
i0.ɵɵtext(6);
|
|
850
896
|
i0.ɵɵelementEnd();
|
|
851
|
-
i0.ɵɵelementStart(
|
|
852
|
-
i0.ɵɵ
|
|
897
|
+
i0.ɵɵelementStart(7, "button", 119);
|
|
898
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("child")); });
|
|
899
|
+
i0.ɵɵelement(8, "i", 121);
|
|
900
|
+
i0.ɵɵtext(9);
|
|
901
|
+
i0.ɵɵelementEnd();
|
|
902
|
+
i0.ɵɵelementStart(10, "button", 119);
|
|
903
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setSubAgentFilter("related")); });
|
|
904
|
+
i0.ɵɵelement(11, "i", 122);
|
|
905
|
+
i0.ɵɵtext(12);
|
|
906
|
+
i0.ɵɵelementEnd()()();
|
|
907
|
+
i0.ɵɵelementStart(13, "div", 94);
|
|
908
|
+
i0.ɵɵtemplate(14, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_14_Template, 8, 0);
|
|
853
909
|
i0.ɵɵelementEnd()();
|
|
854
|
-
i0.ɵɵtemplate(
|
|
910
|
+
i0.ɵɵtemplate(15, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_15_Template, 20, 1, "div", 47)(16, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Conditional_16_Template, 3, 0, "div", 96);
|
|
855
911
|
i0.ɵɵelementEnd();
|
|
856
912
|
} if (rf & 2) {
|
|
857
913
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
858
|
-
i0.ɵɵadvance(
|
|
859
|
-
i0.ɵɵ
|
|
914
|
+
i0.ɵɵadvance(4);
|
|
915
|
+
i0.ɵɵproperty("toggleable", true)("selected", ctx_r1.subAgentFilter === "all");
|
|
916
|
+
i0.ɵɵadvance(2);
|
|
917
|
+
i0.ɵɵtextInterpolate1(" All (", ctx_r1.totalSubAgentCount, ") ");
|
|
860
918
|
i0.ɵɵadvance();
|
|
861
|
-
i0.ɵɵ
|
|
919
|
+
i0.ɵɵproperty("toggleable", true)("selected", ctx_r1.subAgentFilter === "child");
|
|
920
|
+
i0.ɵɵadvance(2);
|
|
921
|
+
i0.ɵɵtextInterpolate1(" Child (", ctx_r1.childSubAgentCount, ") ");
|
|
922
|
+
i0.ɵɵadvance();
|
|
923
|
+
i0.ɵɵproperty("toggleable", true)("selected", ctx_r1.subAgentFilter === "related");
|
|
924
|
+
i0.ɵɵadvance(2);
|
|
925
|
+
i0.ɵɵtextInterpolate1(" Related (", ctx_r1.relatedSubAgentCount, ") ");
|
|
926
|
+
i0.ɵɵadvance(2);
|
|
927
|
+
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 14 : -1);
|
|
928
|
+
i0.ɵɵadvance();
|
|
929
|
+
i0.ɵɵconditional(ctx_r1.totalSubAgentCount === 0 ? 15 : 16);
|
|
862
930
|
} }
|
|
863
931
|
function AIAgentFormComponentExtended_form_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
864
932
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 27);
|
|
865
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Template, 4, 1, "ng-template", 28)(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template,
|
|
933
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_1_Template, 4, 1, "ng-template", 28)(2, AIAgentFormComponentExtended_form_3_Conditional_25_ng_template_2_Template, 17, 11, "ng-template", 29);
|
|
866
934
|
i0.ɵɵelementEnd();
|
|
867
935
|
} if (rf & 2) {
|
|
868
936
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
869
937
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.subAgents);
|
|
870
938
|
} }
|
|
871
939
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
872
|
-
i0.ɵɵelementStart(0, "span",
|
|
873
|
-
i0.ɵɵelement(1, "i",
|
|
940
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
941
|
+
i0.ɵɵelement(1, "i", 45);
|
|
874
942
|
i0.ɵɵelementEnd();
|
|
875
943
|
} }
|
|
876
944
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -883,18 +951,18 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Condit
|
|
|
883
951
|
i0.ɵɵtextInterpolate1(" (", ctx_r1.promptCount, ")");
|
|
884
952
|
} }
|
|
885
953
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
886
|
-
i0.ɵɵelement(0, "i",
|
|
954
|
+
i0.ɵɵelement(0, "i", 83);
|
|
887
955
|
i0.ɵɵtext(1, " Prompts ");
|
|
888
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
956
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Conditional_2_Template, 2, 0, "span", 44)(3, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_1_Conditional_3_Template, 2, 1, "span");
|
|
889
957
|
} if (rf & 2) {
|
|
890
958
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
891
959
|
i0.ɵɵadvance(2);
|
|
892
960
|
i0.ɵɵconditional(ctx_r1.loadingStates.prompts ? 2 : ctx_r1.promptCount > 0 ? 3 : -1);
|
|
893
961
|
} }
|
|
894
962
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
895
|
-
const
|
|
896
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
897
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
963
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
964
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 151);
|
|
965
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
898
966
|
i0.ɵɵelementEnd();
|
|
899
967
|
} if (rf & 2) {
|
|
900
968
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -902,7 +970,7 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Condit
|
|
|
902
970
|
i0.ɵɵproperty("data", ctx_r1.modelSelectionModes)("valuePrimitive", true);
|
|
903
971
|
} }
|
|
904
972
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
905
|
-
i0.ɵɵelementStart(0, "span",
|
|
973
|
+
i0.ɵɵelementStart(0, "span", 150);
|
|
906
974
|
i0.ɵɵtext(1);
|
|
907
975
|
i0.ɵɵelementEnd();
|
|
908
976
|
} if (rf & 2) {
|
|
@@ -911,31 +979,31 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Condit
|
|
|
911
979
|
i0.ɵɵtextInterpolate(ctx_r1.record.ModelSelectionMode || "Agent Type");
|
|
912
980
|
} }
|
|
913
981
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
914
|
-
const
|
|
915
|
-
i0.ɵɵelementStart(0, "button",
|
|
916
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
917
|
-
i0.ɵɵelement(1, "i",
|
|
982
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
983
|
+
i0.ɵɵelementStart(0, "button", 97);
|
|
984
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
985
|
+
i0.ɵɵelement(1, "i", 98);
|
|
918
986
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
919
987
|
i0.ɵɵelementEnd();
|
|
920
988
|
} }
|
|
921
989
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
922
|
-
const
|
|
923
|
-
i0.ɵɵelementStart(0, "button",
|
|
924
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
925
|
-
i0.ɵɵelement(1, "i",
|
|
990
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
991
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
992
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
993
|
+
i0.ɵɵelement(1, "i", 98);
|
|
926
994
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
927
995
|
i0.ɵɵelementEnd();
|
|
928
996
|
} }
|
|
929
997
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
930
|
-
i0.ɵɵelementStart(0, "div",
|
|
931
|
-
i0.ɵɵelement(1, "i",
|
|
998
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
999
|
+
i0.ɵɵelement(1, "i", 83);
|
|
932
1000
|
i0.ɵɵelementStart(2, "h4");
|
|
933
1001
|
i0.ɵɵtext(3, "No Prompts Configured");
|
|
934
1002
|
i0.ɵɵelementEnd();
|
|
935
1003
|
i0.ɵɵelementStart(4, "p");
|
|
936
1004
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
937
1005
|
i0.ɵɵelementEnd();
|
|
938
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template, 3, 0, "button",
|
|
1006
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template, 3, 0, "button", 99);
|
|
939
1007
|
i0.ɵɵelementEnd();
|
|
940
1008
|
} if (rf & 2) {
|
|
941
1009
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -943,73 +1011,73 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Condit
|
|
|
943
1011
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? 6 : -1);
|
|
944
1012
|
} }
|
|
945
1013
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
946
|
-
i0.ɵɵelementStart(0, "div",
|
|
1014
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
947
1015
|
i0.ɵɵtext(1);
|
|
948
1016
|
i0.ɵɵelementEnd();
|
|
949
1017
|
} if (rf & 2) {
|
|
950
|
-
const
|
|
1018
|
+
const prompt_r28 = i0.ɵɵnextContext().$implicit;
|
|
951
1019
|
i0.ɵɵadvance();
|
|
952
|
-
i0.ɵɵtextInterpolate2("",
|
|
1020
|
+
i0.ɵɵtextInterpolate2("", prompt_r28.TemplateText.substring(0, 120), "", prompt_r28.TemplateText.length > 120 ? "..." : "", "");
|
|
953
1021
|
} }
|
|
954
1022
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
955
|
-
i0.ɵɵelementStart(0, "span",
|
|
1023
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
956
1024
|
i0.ɵɵtext(1);
|
|
957
1025
|
i0.ɵɵelementEnd();
|
|
958
1026
|
} if (rf & 2) {
|
|
959
|
-
const
|
|
1027
|
+
const prompt_r28 = i0.ɵɵnextContext().$implicit;
|
|
960
1028
|
i0.ɵɵadvance();
|
|
961
|
-
i0.ɵɵtextInterpolate(
|
|
1029
|
+
i0.ɵɵtextInterpolate(prompt_r28.PromptRole);
|
|
962
1030
|
} }
|
|
963
1031
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
964
|
-
const
|
|
965
|
-
i0.ɵɵelementStart(0, "button",
|
|
966
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
967
|
-
i0.ɵɵelement(1, "i",
|
|
1032
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
1033
|
+
i0.ɵɵelementStart(0, "button", 143);
|
|
1034
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r29); const prompt_r28 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r28, $event)); });
|
|
1035
|
+
i0.ɵɵelement(1, "i", 66);
|
|
968
1036
|
i0.ɵɵelementEnd();
|
|
969
1037
|
} }
|
|
970
1038
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
971
|
-
const
|
|
972
|
-
i0.ɵɵelementStart(0, "button",
|
|
973
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
974
|
-
i0.ɵɵelement(1, "i",
|
|
1039
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
1040
|
+
i0.ɵɵelementStart(0, "button", 156);
|
|
1041
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r30); const prompt_r28 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r28, $event)); });
|
|
1042
|
+
i0.ɵɵelement(1, "i", 115);
|
|
975
1043
|
i0.ɵɵelementEnd();
|
|
976
1044
|
} }
|
|
977
1045
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
978
|
-
const
|
|
979
|
-
i0.ɵɵelementStart(0, "div",
|
|
980
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Template_div_click_0_listener() { const
|
|
981
|
-
i0.ɵɵelementStart(1, "div",
|
|
982
|
-
i0.ɵɵelement(2, "i",
|
|
1046
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
1047
|
+
i0.ɵɵelementStart(0, "div", 153);
|
|
1048
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Template_div_click_0_listener() { const prompt_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", prompt_r28.ID)); });
|
|
1049
|
+
i0.ɵɵelementStart(1, "div", 103);
|
|
1050
|
+
i0.ɵɵelement(2, "i", 154);
|
|
983
1051
|
i0.ɵɵelementEnd();
|
|
984
|
-
i0.ɵɵelementStart(3, "div",
|
|
1052
|
+
i0.ɵɵelementStart(3, "div", 104)(4, "div", 105);
|
|
985
1053
|
i0.ɵɵtext(5);
|
|
986
1054
|
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_6_Template, 2, 2, "div",
|
|
988
|
-
i0.ɵɵelementStart(7, "div",
|
|
989
|
-
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_8_Template, 2, 1, "span",
|
|
1055
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_6_Template, 2, 2, "div", 106);
|
|
1056
|
+
i0.ɵɵelementStart(7, "div", 107);
|
|
1057
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_8_Template, 2, 1, "span", 108);
|
|
990
1058
|
i0.ɵɵelementEnd()();
|
|
991
|
-
i0.ɵɵelementStart(9, "div",
|
|
992
|
-
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template, 2, 0, "button",
|
|
993
|
-
i0.ɵɵelement(12, "i",
|
|
1059
|
+
i0.ɵɵelementStart(9, "div", 111);
|
|
1060
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template, 2, 0, "button", 139)(11, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template, 2, 0, "button", 155);
|
|
1061
|
+
i0.ɵɵelement(12, "i", 113);
|
|
994
1062
|
i0.ɵɵelementEnd()();
|
|
995
1063
|
} if (rf & 2) {
|
|
996
|
-
const
|
|
1064
|
+
const prompt_r28 = ctx.$implicit;
|
|
997
1065
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
998
1066
|
i0.ɵɵadvance(5);
|
|
999
|
-
i0.ɵɵtextInterpolate(
|
|
1067
|
+
i0.ɵɵtextInterpolate(prompt_r28.Name);
|
|
1000
1068
|
i0.ɵɵadvance();
|
|
1001
|
-
i0.ɵɵconditional(
|
|
1069
|
+
i0.ɵɵconditional(prompt_r28.TemplateText ? 6 : -1);
|
|
1002
1070
|
i0.ɵɵadvance(2);
|
|
1003
|
-
i0.ɵɵconditional(
|
|
1071
|
+
i0.ɵɵconditional(prompt_r28.PromptRole ? 8 : -1);
|
|
1004
1072
|
i0.ɵɵadvance(2);
|
|
1005
1073
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePrompts ? 10 : -1);
|
|
1006
1074
|
i0.ɵɵadvance();
|
|
1007
1075
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeletePrompts ? 11 : -1);
|
|
1008
1076
|
} }
|
|
1009
1077
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1010
|
-
const
|
|
1011
|
-
i0.ɵɵelementStart(0, "div",
|
|
1012
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1078
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
1079
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
1080
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", "")); });
|
|
1013
1081
|
i0.ɵɵelementStart(1, "span");
|
|
1014
1082
|
i0.ɵɵtext(2);
|
|
1015
1083
|
i0.ɵɵelementEnd()();
|
|
@@ -1019,9 +1087,9 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Condit
|
|
|
1019
1087
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
1020
1088
|
} }
|
|
1021
1089
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1022
|
-
i0.ɵɵelementStart(0, "div",
|
|
1023
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Template, 13, 5, "div",
|
|
1024
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template, 3, 1, "div",
|
|
1090
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
1091
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_For_2_Template, 13, 5, "div", 152, _forTrack0);
|
|
1092
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template, 3, 1, "div", 50);
|
|
1025
1093
|
i0.ɵɵelementEnd();
|
|
1026
1094
|
} if (rf & 2) {
|
|
1027
1095
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1031,16 +1099,16 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Condit
|
|
|
1031
1099
|
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
1032
1100
|
} }
|
|
1033
1101
|
function AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1034
|
-
i0.ɵɵelementStart(0, "div",
|
|
1035
|
-
i0.ɵɵelement(5, "i",
|
|
1102
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 145)(3, "div", 146)(4, "label", 147);
|
|
1103
|
+
i0.ɵɵelement(5, "i", 148);
|
|
1036
1104
|
i0.ɵɵtext(6, " Model Selection: ");
|
|
1037
1105
|
i0.ɵɵelementEnd();
|
|
1038
|
-
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist",
|
|
1106
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist", 149)(8, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_8_Template, 2, 1, "span", 150);
|
|
1039
1107
|
i0.ɵɵelementEnd()();
|
|
1040
|
-
i0.ɵɵelementStart(9, "div",
|
|
1041
|
-
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_10_Template, 3, 0, "button",
|
|
1108
|
+
i0.ɵɵelementStart(9, "div", 94);
|
|
1109
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_10_Template, 3, 0, "button", 95);
|
|
1042
1110
|
i0.ɵɵelementEnd()();
|
|
1043
|
-
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Template, 7, 1, "div",
|
|
1111
|
+
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_11_Template, 7, 1, "div", 47)(12, AIAgentFormComponentExtended_form_3_Conditional_26_ng_template_2_Conditional_12_Template, 4, 1, "div", 96);
|
|
1044
1112
|
i0.ɵɵelementEnd();
|
|
1045
1113
|
} if (rf & 2) {
|
|
1046
1114
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1060,14 +1128,14 @@ function AIAgentFormComponentExtended_form_3_Conditional_26_Template(rf, ctx) {
|
|
|
1060
1128
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.prompts);
|
|
1061
1129
|
} }
|
|
1062
1130
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1063
|
-
i0.ɵɵelementStart(0, "span",
|
|
1064
|
-
i0.ɵɵelement(1, "i",
|
|
1131
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
1132
|
+
i0.ɵɵelement(1, "i", 45);
|
|
1065
1133
|
i0.ɵɵelementEnd();
|
|
1066
1134
|
} }
|
|
1067
1135
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1068
|
-
i0.ɵɵelement(0, "i",
|
|
1136
|
+
i0.ɵɵelement(0, "i", 157);
|
|
1069
1137
|
i0.ɵɵtext(1);
|
|
1070
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1138
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_1_Conditional_2_Template, 2, 0, "span", 44);
|
|
1071
1139
|
} if (rf & 2) {
|
|
1072
1140
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1073
1141
|
i0.ɵɵadvance();
|
|
@@ -1076,8 +1144,8 @@ function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_1_Templa
|
|
|
1076
1144
|
i0.ɵɵconditional(ctx_r1.loadingStates.learningCycles ? 2 : -1);
|
|
1077
1145
|
} }
|
|
1078
1146
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1079
|
-
i0.ɵɵelementStart(0, "div",
|
|
1080
|
-
i0.ɵɵelement(1, "i",
|
|
1147
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
1148
|
+
i0.ɵɵelement(1, "i", 157);
|
|
1081
1149
|
i0.ɵɵelementStart(2, "h4");
|
|
1082
1150
|
i0.ɵɵtext(3, "No Learning Cycles");
|
|
1083
1151
|
i0.ɵɵelementEnd();
|
|
@@ -1086,54 +1154,54 @@ function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Condit
|
|
|
1086
1154
|
i0.ɵɵelementEnd()();
|
|
1087
1155
|
} }
|
|
1088
1156
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1089
|
-
i0.ɵɵelementStart(0, "span",
|
|
1090
|
-
i0.ɵɵelement(1, "i",
|
|
1157
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
1158
|
+
i0.ɵɵelement(1, "i", 161);
|
|
1091
1159
|
i0.ɵɵtext(2);
|
|
1092
1160
|
i0.ɵɵpipe(3, "date");
|
|
1093
1161
|
i0.ɵɵelementEnd();
|
|
1094
1162
|
} if (rf & 2) {
|
|
1095
|
-
const
|
|
1163
|
+
const cycle_r33 = i0.ɵɵnextContext().$implicit;
|
|
1096
1164
|
i0.ɵɵadvance(2);
|
|
1097
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1165
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r33.StartedAt, "short"), " ");
|
|
1098
1166
|
} }
|
|
1099
1167
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1100
|
-
i0.ɵɵelementStart(0, "span",
|
|
1168
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
1101
1169
|
i0.ɵɵtext(1);
|
|
1102
1170
|
i0.ɵɵelementEnd();
|
|
1103
1171
|
} if (rf & 2) {
|
|
1104
|
-
const
|
|
1172
|
+
const cycle_r33 = i0.ɵɵnextContext().$implicit;
|
|
1105
1173
|
i0.ɵɵadvance();
|
|
1106
|
-
i0.ɵɵtextInterpolate(
|
|
1174
|
+
i0.ɵɵtextInterpolate(cycle_r33.Status);
|
|
1107
1175
|
} }
|
|
1108
1176
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1109
|
-
const
|
|
1110
|
-
i0.ɵɵelementStart(0, "div",
|
|
1111
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const
|
|
1112
|
-
i0.ɵɵelementStart(1, "div",
|
|
1113
|
-
i0.ɵɵelement(2, "i",
|
|
1177
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
1178
|
+
i0.ɵɵelementStart(0, "div", 160);
|
|
1179
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r33 = i0.ɵɵrestoreView(_r32).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", cycle_r33.ID)); });
|
|
1180
|
+
i0.ɵɵelementStart(1, "div", 103);
|
|
1181
|
+
i0.ɵɵelement(2, "i", 157);
|
|
1114
1182
|
i0.ɵɵelementEnd();
|
|
1115
|
-
i0.ɵɵelementStart(3, "div",
|
|
1183
|
+
i0.ɵɵelementStart(3, "div", 104)(4, "div", 105);
|
|
1116
1184
|
i0.ɵɵtext(5);
|
|
1117
1185
|
i0.ɵɵelementEnd();
|
|
1118
|
-
i0.ɵɵelementStart(6, "div",
|
|
1119
|
-
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span",
|
|
1186
|
+
i0.ɵɵelementStart(6, "div", 107);
|
|
1187
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 108)(8, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 109);
|
|
1120
1188
|
i0.ɵɵelementEnd()();
|
|
1121
|
-
i0.ɵɵelementStart(9, "div",
|
|
1122
|
-
i0.ɵɵelement(10, "i",
|
|
1189
|
+
i0.ɵɵelementStart(9, "div", 111);
|
|
1190
|
+
i0.ɵɵelement(10, "i", 113);
|
|
1123
1191
|
i0.ɵɵelementEnd()();
|
|
1124
1192
|
} if (rf & 2) {
|
|
1125
|
-
const
|
|
1193
|
+
const cycle_r33 = ctx.$implicit;
|
|
1126
1194
|
i0.ɵɵadvance(5);
|
|
1127
|
-
i0.ɵɵtextInterpolate1("Learning Cycle ",
|
|
1195
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r33.ID.substring(0, 8), "");
|
|
1128
1196
|
i0.ɵɵadvance(2);
|
|
1129
|
-
i0.ɵɵconditional(
|
|
1197
|
+
i0.ɵɵconditional(cycle_r33.StartedAt ? 7 : -1);
|
|
1130
1198
|
i0.ɵɵadvance();
|
|
1131
|
-
i0.ɵɵconditional(
|
|
1199
|
+
i0.ɵɵconditional(cycle_r33.Status ? 8 : -1);
|
|
1132
1200
|
} }
|
|
1133
1201
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1134
|
-
const
|
|
1135
|
-
i0.ɵɵelementStart(0, "div",
|
|
1136
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1202
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
1203
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
1204
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
1137
1205
|
i0.ɵɵelementStart(1, "span");
|
|
1138
1206
|
i0.ɵɵtext(2);
|
|
1139
1207
|
i0.ɵɵelementEnd()();
|
|
@@ -1143,9 +1211,9 @@ function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Condit
|
|
|
1143
1211
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
1144
1212
|
} }
|
|
1145
1213
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1146
|
-
i0.ɵɵelementStart(0, "div",
|
|
1147
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div",
|
|
1148
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div",
|
|
1214
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
1215
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 159, _forTrack0);
|
|
1216
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 50);
|
|
1149
1217
|
i0.ɵɵelementEnd();
|
|
1150
1218
|
} if (rf & 2) {
|
|
1151
1219
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1155,10 +1223,10 @@ function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Condit
|
|
|
1155
1223
|
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
1156
1224
|
} }
|
|
1157
1225
|
function AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1158
|
-
i0.ɵɵelementStart(0, "div",
|
|
1226
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 158);
|
|
1159
1227
|
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
1160
1228
|
i0.ɵɵelementEnd()();
|
|
1161
|
-
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_4_Template, 6, 0, "div",
|
|
1229
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_4_Template, 6, 0, "div", 47)(5, AIAgentFormComponentExtended_form_3_Conditional_27_ng_template_2_Conditional_5_Template, 4, 1, "div", 96);
|
|
1162
1230
|
i0.ɵɵelementEnd();
|
|
1163
1231
|
} if (rf & 2) {
|
|
1164
1232
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1174,14 +1242,14 @@ function AIAgentFormComponentExtended_form_3_Conditional_27_Template(rf, ctx) {
|
|
|
1174
1242
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.learningCycles);
|
|
1175
1243
|
} }
|
|
1176
1244
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1177
|
-
i0.ɵɵelementStart(0, "span",
|
|
1178
|
-
i0.ɵɵelement(1, "i",
|
|
1245
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
1246
|
+
i0.ɵɵelement(1, "i", 45);
|
|
1179
1247
|
i0.ɵɵelementEnd();
|
|
1180
1248
|
} }
|
|
1181
1249
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1182
|
-
i0.ɵɵelement(0, "i",
|
|
1250
|
+
i0.ɵɵelement(0, "i", 162);
|
|
1183
1251
|
i0.ɵɵtext(1);
|
|
1184
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_1_Conditional_2_Template, 2, 0, "span",
|
|
1252
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_1_Conditional_2_Template, 2, 0, "span", 44);
|
|
1185
1253
|
} if (rf & 2) {
|
|
1186
1254
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1187
1255
|
i0.ɵɵadvance();
|
|
@@ -1190,31 +1258,31 @@ function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_1_Templa
|
|
|
1190
1258
|
i0.ɵɵconditional(ctx_r1.loadingStates.notes ? 2 : -1);
|
|
1191
1259
|
} }
|
|
1192
1260
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1193
|
-
const
|
|
1194
|
-
i0.ɵɵelementStart(0, "button",
|
|
1195
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1196
|
-
i0.ɵɵelement(1, "i",
|
|
1261
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
1262
|
+
i0.ɵɵelementStart(0, "button", 97);
|
|
1263
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1264
|
+
i0.ɵɵelement(1, "i", 98);
|
|
1197
1265
|
i0.ɵɵtext(2, " Add Note ");
|
|
1198
1266
|
i0.ɵɵelementEnd();
|
|
1199
1267
|
} }
|
|
1200
1268
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1201
|
-
const
|
|
1202
|
-
i0.ɵɵelementStart(0, "button",
|
|
1203
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1204
|
-
i0.ɵɵelement(1, "i",
|
|
1269
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
1270
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
1271
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
1272
|
+
i0.ɵɵelement(1, "i", 98);
|
|
1205
1273
|
i0.ɵɵtext(2, " Create First Note ");
|
|
1206
1274
|
i0.ɵɵelementEnd();
|
|
1207
1275
|
} }
|
|
1208
1276
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1209
|
-
i0.ɵɵelementStart(0, "div",
|
|
1210
|
-
i0.ɵɵelement(1, "i",
|
|
1277
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
1278
|
+
i0.ɵɵelement(1, "i", 162);
|
|
1211
1279
|
i0.ɵɵelementStart(2, "h4");
|
|
1212
1280
|
i0.ɵɵtext(3, "No Notes");
|
|
1213
1281
|
i0.ɵɵelementEnd();
|
|
1214
1282
|
i0.ɵɵelementStart(4, "p");
|
|
1215
1283
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
1216
1284
|
i0.ɵɵelementEnd();
|
|
1217
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "button",
|
|
1285
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "button", 99);
|
|
1218
1286
|
i0.ɵɵelementEnd();
|
|
1219
1287
|
} if (rf & 2) {
|
|
1220
1288
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1222,55 +1290,55 @@ function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Condit
|
|
|
1222
1290
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? 6 : -1);
|
|
1223
1291
|
} }
|
|
1224
1292
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1225
|
-
i0.ɵɵelementStart(0, "div",
|
|
1293
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
1226
1294
|
i0.ɵɵtext(1);
|
|
1227
1295
|
i0.ɵɵelementEnd();
|
|
1228
1296
|
} if (rf & 2) {
|
|
1229
|
-
const
|
|
1297
|
+
const note_r38 = i0.ɵɵnextContext().$implicit;
|
|
1230
1298
|
i0.ɵɵadvance();
|
|
1231
|
-
i0.ɵɵtextInterpolate2("",
|
|
1299
|
+
i0.ɵɵtextInterpolate2("", note_r38.Note.substring(0, 100), "", note_r38.Note.length > 100 ? "..." : "", "");
|
|
1232
1300
|
} }
|
|
1233
1301
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1234
|
-
i0.ɵɵelementStart(0, "span",
|
|
1235
|
-
i0.ɵɵelement(1, "i",
|
|
1302
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
1303
|
+
i0.ɵɵelement(1, "i", 161);
|
|
1236
1304
|
i0.ɵɵtext(2);
|
|
1237
1305
|
i0.ɵɵpipe(3, "date");
|
|
1238
1306
|
i0.ɵɵelementEnd();
|
|
1239
1307
|
} if (rf & 2) {
|
|
1240
|
-
const
|
|
1308
|
+
const note_r38 = i0.ɵɵnextContext().$implicit;
|
|
1241
1309
|
i0.ɵɵadvance(2);
|
|
1242
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1310
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r38.__mj_CreatedAt, "short"), " ");
|
|
1243
1311
|
} }
|
|
1244
1312
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1245
|
-
const
|
|
1246
|
-
i0.ɵɵelementStart(0, "div",
|
|
1247
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const
|
|
1248
|
-
i0.ɵɵelementStart(1, "div",
|
|
1249
|
-
i0.ɵɵelement(2, "i",
|
|
1313
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
1314
|
+
i0.ɵɵelementStart(0, "div", 164);
|
|
1315
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r38 = i0.ɵɵrestoreView(_r37).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", note_r38.ID)); });
|
|
1316
|
+
i0.ɵɵelementStart(1, "div", 103);
|
|
1317
|
+
i0.ɵɵelement(2, "i", 162);
|
|
1250
1318
|
i0.ɵɵelementEnd();
|
|
1251
|
-
i0.ɵɵelementStart(3, "div",
|
|
1319
|
+
i0.ɵɵelementStart(3, "div", 104)(4, "div", 105);
|
|
1252
1320
|
i0.ɵɵtext(5);
|
|
1253
1321
|
i0.ɵɵelementEnd();
|
|
1254
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div",
|
|
1255
|
-
i0.ɵɵelementStart(7, "div",
|
|
1256
|
-
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span",
|
|
1322
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 106);
|
|
1323
|
+
i0.ɵɵelementStart(7, "div", 107);
|
|
1324
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 108);
|
|
1257
1325
|
i0.ɵɵelementEnd()();
|
|
1258
|
-
i0.ɵɵelementStart(9, "div",
|
|
1259
|
-
i0.ɵɵelement(10, "i",
|
|
1326
|
+
i0.ɵɵelementStart(9, "div", 111);
|
|
1327
|
+
i0.ɵɵelement(10, "i", 113);
|
|
1260
1328
|
i0.ɵɵelementEnd()();
|
|
1261
1329
|
} if (rf & 2) {
|
|
1262
|
-
const
|
|
1330
|
+
const note_r38 = ctx.$implicit;
|
|
1263
1331
|
i0.ɵɵadvance(5);
|
|
1264
|
-
i0.ɵɵtextInterpolate(
|
|
1332
|
+
i0.ɵɵtextInterpolate(note_r38.Type || "Note");
|
|
1265
1333
|
i0.ɵɵadvance();
|
|
1266
|
-
i0.ɵɵconditional(
|
|
1334
|
+
i0.ɵɵconditional(note_r38.Note ? 6 : -1);
|
|
1267
1335
|
i0.ɵɵadvance(2);
|
|
1268
|
-
i0.ɵɵconditional(
|
|
1336
|
+
i0.ɵɵconditional(note_r38.__mj_CreatedAt ? 8 : -1);
|
|
1269
1337
|
} }
|
|
1270
1338
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1271
|
-
const
|
|
1272
|
-
i0.ɵɵelementStart(0, "div",
|
|
1273
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1339
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
1340
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
1341
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", "")); });
|
|
1274
1342
|
i0.ɵɵelementStart(1, "span");
|
|
1275
1343
|
i0.ɵɵtext(2);
|
|
1276
1344
|
i0.ɵɵelementEnd()();
|
|
@@ -1280,9 +1348,9 @@ function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Condit
|
|
|
1280
1348
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
1281
1349
|
} }
|
|
1282
1350
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1283
|
-
i0.ɵɵelementStart(0, "div",
|
|
1284
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div",
|
|
1285
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div",
|
|
1351
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
1352
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 163, _forTrack0);
|
|
1353
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 50);
|
|
1286
1354
|
i0.ɵɵelementEnd();
|
|
1287
1355
|
} if (rf & 2) {
|
|
1288
1356
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1292,13 +1360,13 @@ function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Condit
|
|
|
1292
1360
|
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
1293
1361
|
} }
|
|
1294
1362
|
function AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1295
|
-
i0.ɵɵelementStart(0, "div",
|
|
1363
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 158);
|
|
1296
1364
|
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
1297
1365
|
i0.ɵɵelementEnd();
|
|
1298
|
-
i0.ɵɵelementStart(4, "div",
|
|
1299
|
-
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_5_Template, 3, 0, "button",
|
|
1366
|
+
i0.ɵɵelementStart(4, "div", 94);
|
|
1367
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_5_Template, 3, 0, "button", 95);
|
|
1300
1368
|
i0.ɵɵelementEnd()();
|
|
1301
|
-
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Template, 7, 1, "div",
|
|
1369
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_6_Template, 7, 1, "div", 47)(7, AIAgentFormComponentExtended_form_3_Conditional_28_ng_template_2_Conditional_7_Template, 4, 1, "div", 96);
|
|
1302
1370
|
i0.ɵɵelementEnd();
|
|
1303
1371
|
} if (rf & 2) {
|
|
1304
1372
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1316,28 +1384,28 @@ function AIAgentFormComponentExtended_form_3_Conditional_28_Template(rf, ctx) {
|
|
|
1316
1384
|
i0.ɵɵproperty("expanded", false)("disabled", ctx_r1.loadingStates.notes);
|
|
1317
1385
|
} }
|
|
1318
1386
|
function AIAgentFormComponentExtended_form_3_ng_template_30_Template(rf, ctx) { if (rf & 1) {
|
|
1319
|
-
i0.ɵɵelement(0, "i",
|
|
1387
|
+
i0.ɵɵelement(0, "i", 142);
|
|
1320
1388
|
i0.ɵɵtext(1, " Payload Management ");
|
|
1321
1389
|
} }
|
|
1322
1390
|
function AIAgentFormComponentExtended_form_3_ng_template_31_Template(rf, ctx) { if (rf & 1) {
|
|
1323
|
-
const
|
|
1324
|
-
i0.ɵɵelementStart(0, "div",
|
|
1391
|
+
const _r40 = i0.ɵɵgetCurrentView();
|
|
1392
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 158);
|
|
1325
1393
|
i0.ɵɵtext(3, " Configure how this agent handles data payloads, path routing, and validation between parent and child agents. ");
|
|
1326
1394
|
i0.ɵɵelementEnd()();
|
|
1327
|
-
i0.ɵɵelementStart(4, "div",
|
|
1328
|
-
i0.ɵɵelement(6, "i",
|
|
1395
|
+
i0.ɵɵelementStart(4, "div", 165)(5, "h3", 166);
|
|
1396
|
+
i0.ɵɵelement(6, "i", 167);
|
|
1329
1397
|
i0.ɵɵtext(7, " Payload Scope ");
|
|
1330
1398
|
i0.ɵɵelementEnd();
|
|
1331
|
-
i0.ɵɵelementStart(8, "div",
|
|
1399
|
+
i0.ɵɵelementStart(8, "div", 168)(9, "div", 169)(10, "label", 170);
|
|
1332
1400
|
i0.ɵɵtext(11, "Payload Scope Path");
|
|
1333
1401
|
i0.ɵɵelementEnd();
|
|
1334
|
-
i0.ɵɵelementStart(12, "p",
|
|
1402
|
+
i0.ɵɵelementStart(12, "p", 171);
|
|
1335
1403
|
i0.ɵɵtext(13, " Specify a path within the parent payload that this sub-agent should operate on. Leave empty to receive the entire payload. ");
|
|
1336
1404
|
i0.ɵɵelementEnd()();
|
|
1337
|
-
i0.ɵɵelementStart(14, "div",
|
|
1338
|
-
i0.ɵɵelement(15, "mj-form-field",
|
|
1339
|
-
i0.ɵɵelementStart(16, "div",
|
|
1340
|
-
i0.ɵɵelement(17, "i",
|
|
1405
|
+
i0.ɵɵelementStart(14, "div", 172);
|
|
1406
|
+
i0.ɵɵelement(15, "mj-form-field", 173);
|
|
1407
|
+
i0.ɵɵelementStart(16, "div", 174);
|
|
1408
|
+
i0.ɵɵelement(17, "i", 175);
|
|
1341
1409
|
i0.ɵɵelementStart(18, "span");
|
|
1342
1410
|
i0.ɵɵtext(19, "Example: ");
|
|
1343
1411
|
i0.ɵɵelementStart(20, "code");
|
|
@@ -1347,24 +1415,24 @@ function AIAgentFormComponentExtended_form_3_ng_template_31_Template(rf, ctx) {
|
|
|
1347
1415
|
i0.ɵɵelementStart(23, "code");
|
|
1348
1416
|
i0.ɵɵtext(24, "/analysis/results");
|
|
1349
1417
|
i0.ɵɵelementEnd()()()()()();
|
|
1350
|
-
i0.ɵɵelementStart(25, "div",
|
|
1351
|
-
i0.ɵɵelement(27, "i",
|
|
1418
|
+
i0.ɵɵelementStart(25, "div", 165)(26, "h3", 166);
|
|
1419
|
+
i0.ɵɵelement(27, "i", 176);
|
|
1352
1420
|
i0.ɵɵtext(28, " Path Configuration ");
|
|
1353
1421
|
i0.ɵɵelementEnd();
|
|
1354
|
-
i0.ɵɵelementStart(29, "div",
|
|
1355
|
-
i0.ɵɵelement(33, "i",
|
|
1422
|
+
i0.ɵɵelementStart(29, "div", 177)(30, "div", 178)(31, "div", 179)(32, "div", 180);
|
|
1423
|
+
i0.ɵɵelement(33, "i", 181);
|
|
1356
1424
|
i0.ɵɵelementEnd();
|
|
1357
|
-
i0.ɵɵelementStart(34, "div",
|
|
1425
|
+
i0.ɵɵelementStart(34, "div", 182)(35, "h4");
|
|
1358
1426
|
i0.ɵɵtext(36, "Downstream Paths");
|
|
1359
1427
|
i0.ɵɵelementEnd();
|
|
1360
1428
|
i0.ɵɵelementStart(37, "p");
|
|
1361
1429
|
i0.ɵɵtext(38, "JSON array of paths to pass to sub-agents");
|
|
1362
1430
|
i0.ɵɵelementEnd()()();
|
|
1363
|
-
i0.ɵɵelementStart(39, "div",
|
|
1364
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_41_listener($event) { i0.ɵɵrestoreView(
|
|
1431
|
+
i0.ɵɵelementStart(39, "div", 183)(40, "div", 184)(41, "mj-code-editor", 185);
|
|
1432
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_41_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadDownstreamPaths", $event)); });
|
|
1365
1433
|
i0.ɵɵelementEnd()();
|
|
1366
|
-
i0.ɵɵelementStart(42, "div",
|
|
1367
|
-
i0.ɵɵelement(43, "i",
|
|
1434
|
+
i0.ɵɵelementStart(42, "div", 186);
|
|
1435
|
+
i0.ɵɵelement(43, "i", 187);
|
|
1368
1436
|
i0.ɵɵtext(44, " Use ");
|
|
1369
1437
|
i0.ɵɵelementStart(45, "code");
|
|
1370
1438
|
i0.ɵɵtext(46, "[\"*\"]");
|
|
@@ -1373,87 +1441,87 @@ function AIAgentFormComponentExtended_form_3_ng_template_31_Template(rf, ctx) {
|
|
|
1373
1441
|
i0.ɵɵelementStart(48, "code");
|
|
1374
1442
|
i0.ɵɵtext(49, "[\"user.id\", \"order.*\"]");
|
|
1375
1443
|
i0.ɵɵelementEnd()()()();
|
|
1376
|
-
i0.ɵɵelementStart(50, "div",
|
|
1377
|
-
i0.ɵɵelement(53, "i",
|
|
1444
|
+
i0.ɵɵelementStart(50, "div", 178)(51, "div", 179)(52, "div", 188);
|
|
1445
|
+
i0.ɵɵelement(53, "i", 189);
|
|
1378
1446
|
i0.ɵɵelementEnd();
|
|
1379
|
-
i0.ɵɵelementStart(54, "div",
|
|
1447
|
+
i0.ɵɵelementStart(54, "div", 182)(55, "h4");
|
|
1380
1448
|
i0.ɵɵtext(56, "Upstream Paths");
|
|
1381
1449
|
i0.ɵɵelementEnd();
|
|
1382
1450
|
i0.ɵɵelementStart(57, "p");
|
|
1383
1451
|
i0.ɵɵtext(58, "JSON array of paths sub-agents can write back");
|
|
1384
1452
|
i0.ɵɵelementEnd()()();
|
|
1385
|
-
i0.ɵɵelementStart(59, "div",
|
|
1386
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_61_listener($event) { i0.ɵɵrestoreView(
|
|
1453
|
+
i0.ɵɵelementStart(59, "div", 183)(60, "div", 184)(61, "mj-code-editor", 185);
|
|
1454
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_61_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadUpstreamPaths", $event)); });
|
|
1387
1455
|
i0.ɵɵelementEnd()();
|
|
1388
|
-
i0.ɵɵelementStart(62, "div",
|
|
1389
|
-
i0.ɵɵelement(63, "i",
|
|
1456
|
+
i0.ɵɵelementStart(62, "div", 186);
|
|
1457
|
+
i0.ɵɵelement(63, "i", 187);
|
|
1390
1458
|
i0.ɵɵtext(64, " Use ");
|
|
1391
1459
|
i0.ɵɵelementStart(65, "code");
|
|
1392
1460
|
i0.ɵɵtext(66, "[\"*\"]");
|
|
1393
1461
|
i0.ɵɵelementEnd();
|
|
1394
1462
|
i0.ɵɵtext(67, " to allow all writes or limit to specific paths ");
|
|
1395
1463
|
i0.ɵɵelementEnd()()();
|
|
1396
|
-
i0.ɵɵelementStart(68, "div",
|
|
1397
|
-
i0.ɵɵelement(71, "i",
|
|
1464
|
+
i0.ɵɵelementStart(68, "div", 178)(69, "div", 179)(70, "div", 190);
|
|
1465
|
+
i0.ɵɵelement(71, "i", 191);
|
|
1398
1466
|
i0.ɵɵelementEnd();
|
|
1399
|
-
i0.ɵɵelementStart(72, "div",
|
|
1467
|
+
i0.ɵɵelementStart(72, "div", 182)(73, "h4");
|
|
1400
1468
|
i0.ɵɵtext(74, "Self Read Paths");
|
|
1401
1469
|
i0.ɵɵelementEnd();
|
|
1402
1470
|
i0.ɵɵelementStart(75, "p");
|
|
1403
1471
|
i0.ɵɵtext(76, "JSON array of paths this agent can read");
|
|
1404
1472
|
i0.ɵɵelementEnd()()();
|
|
1405
|
-
i0.ɵɵelementStart(77, "div",
|
|
1406
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_79_listener($event) { i0.ɵɵrestoreView(
|
|
1473
|
+
i0.ɵɵelementStart(77, "div", 183)(78, "div", 184)(79, "mj-code-editor", 185);
|
|
1474
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_79_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfReadPaths", $event)); });
|
|
1407
1475
|
i0.ɵɵelementEnd()();
|
|
1408
|
-
i0.ɵɵelementStart(80, "div",
|
|
1409
|
-
i0.ɵɵelement(81, "i",
|
|
1476
|
+
i0.ɵɵelementStart(80, "div", 186);
|
|
1477
|
+
i0.ɵɵelement(81, "i", 187);
|
|
1410
1478
|
i0.ɵɵtext(82, " Paths this agent's prompts can read from the payload ");
|
|
1411
1479
|
i0.ɵɵelementEnd()()();
|
|
1412
|
-
i0.ɵɵelementStart(83, "div",
|
|
1413
|
-
i0.ɵɵelement(86, "i",
|
|
1480
|
+
i0.ɵɵelementStart(83, "div", 178)(84, "div", 179)(85, "div", 192);
|
|
1481
|
+
i0.ɵɵelement(86, "i", 193);
|
|
1414
1482
|
i0.ɵɵelementEnd();
|
|
1415
|
-
i0.ɵɵelementStart(87, "div",
|
|
1483
|
+
i0.ɵɵelementStart(87, "div", 182)(88, "h4");
|
|
1416
1484
|
i0.ɵɵtext(89, "Self Write Paths");
|
|
1417
1485
|
i0.ɵɵelementEnd();
|
|
1418
1486
|
i0.ɵɵelementStart(90, "p");
|
|
1419
1487
|
i0.ɵɵtext(91, "JSON array of paths this agent can write to");
|
|
1420
1488
|
i0.ɵɵelementEnd()()();
|
|
1421
|
-
i0.ɵɵelementStart(92, "div",
|
|
1422
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_94_listener($event) { i0.ɵɵrestoreView(
|
|
1489
|
+
i0.ɵɵelementStart(92, "div", 183)(93, "div", 184)(94, "mj-code-editor", 185);
|
|
1490
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_94_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfWritePaths", $event)); });
|
|
1423
1491
|
i0.ɵɵelementEnd()();
|
|
1424
|
-
i0.ɵɵelementStart(95, "div",
|
|
1425
|
-
i0.ɵɵelement(96, "i",
|
|
1492
|
+
i0.ɵɵelementStart(95, "div", 186);
|
|
1493
|
+
i0.ɵɵelement(96, "i", 187);
|
|
1426
1494
|
i0.ɵɵtext(97, " Paths this agent's prompts can write back to the payload ");
|
|
1427
1495
|
i0.ɵɵelementEnd()()()()();
|
|
1428
|
-
i0.ɵɵelementStart(98, "div",
|
|
1429
|
-
i0.ɵɵelement(100, "i",
|
|
1496
|
+
i0.ɵɵelementStart(98, "div", 165)(99, "h3", 166);
|
|
1497
|
+
i0.ɵɵelement(100, "i", 194);
|
|
1430
1498
|
i0.ɵɵtext(101, " Final Payload Validation ");
|
|
1431
1499
|
i0.ɵɵelementEnd();
|
|
1432
|
-
i0.ɵɵelementStart(102, "div",
|
|
1500
|
+
i0.ɵɵelementStart(102, "div", 195)(103, "div", 196)(104, "div", 197)(105, "label", 198);
|
|
1433
1501
|
i0.ɵɵtext(106, "Validation Mode");
|
|
1434
1502
|
i0.ɵɵelementEnd();
|
|
1435
|
-
i0.ɵɵelementStart(107, "p",
|
|
1503
|
+
i0.ɵɵelementStart(107, "p", 199);
|
|
1436
1504
|
i0.ɵɵtext(108, "How to handle validation failures");
|
|
1437
1505
|
i0.ɵɵelementEnd();
|
|
1438
|
-
i0.ɵɵelement(109, "mj-form-field",
|
|
1506
|
+
i0.ɵɵelement(109, "mj-form-field", 200);
|
|
1439
1507
|
i0.ɵɵelementEnd();
|
|
1440
|
-
i0.ɵɵelementStart(110, "div",
|
|
1508
|
+
i0.ɵɵelementStart(110, "div", 197)(111, "label", 198);
|
|
1441
1509
|
i0.ɵɵtext(112, "Max Retries");
|
|
1442
1510
|
i0.ɵɵelementEnd();
|
|
1443
|
-
i0.ɵɵelementStart(113, "p",
|
|
1511
|
+
i0.ɵɵelementStart(113, "p", 199);
|
|
1444
1512
|
i0.ɵɵtext(114, "Maximum validation retry attempts");
|
|
1445
1513
|
i0.ɵɵelementEnd();
|
|
1446
|
-
i0.ɵɵelement(115, "mj-form-field",
|
|
1514
|
+
i0.ɵɵelement(115, "mj-form-field", 201);
|
|
1447
1515
|
i0.ɵɵelementEnd()();
|
|
1448
|
-
i0.ɵɵelementStart(116, "div",
|
|
1449
|
-
i0.ɵɵelement(118, "i",
|
|
1516
|
+
i0.ɵɵelementStart(116, "div", 202)(117, "label", 203);
|
|
1517
|
+
i0.ɵɵelement(118, "i", 204);
|
|
1450
1518
|
i0.ɵɵtext(119, " Validation Schema ");
|
|
1451
1519
|
i0.ɵɵelementEnd();
|
|
1452
|
-
i0.ɵɵelementStart(120, "p",
|
|
1520
|
+
i0.ɵɵelementStart(120, "p", 205);
|
|
1453
1521
|
i0.ɵɵtext(121, " JSON schema or validation rules for the final payload structure ");
|
|
1454
1522
|
i0.ɵɵelementEnd();
|
|
1455
|
-
i0.ɵɵelementStart(122, "div",
|
|
1456
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_123_listener($event) { i0.ɵɵrestoreView(
|
|
1523
|
+
i0.ɵɵelementStart(122, "div", 206)(123, "mj-code-editor", 207);
|
|
1524
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_31_Template_mj_code_editor_valueChange_123_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("FinalPayloadValidation", $event)); });
|
|
1457
1525
|
i0.ɵɵelementEnd()()()()()();
|
|
1458
1526
|
} if (rf & 2) {
|
|
1459
1527
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1475,15 +1543,15 @@ function AIAgentFormComponentExtended_form_3_ng_template_31_Template(rf, ctx) {
|
|
|
1475
1543
|
i0.ɵɵproperty("value", ctx_r1.record.FinalPayloadValidation || "{}")("readonly", !ctx_r1.EditMode)("lineWrapping", true);
|
|
1476
1544
|
} }
|
|
1477
1545
|
function AIAgentFormComponentExtended_form_3_ng_template_33_Template(rf, ctx) { if (rf & 1) {
|
|
1478
|
-
i0.ɵɵelement(0, "i",
|
|
1546
|
+
i0.ɵɵelement(0, "i", 208);
|
|
1479
1547
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1480
1548
|
} }
|
|
1481
1549
|
function AIAgentFormComponentExtended_form_3_ng_template_34_Template(rf, ctx) { if (rf & 1) {
|
|
1482
|
-
i0.ɵɵelementStart(0, "div",
|
|
1550
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 158);
|
|
1483
1551
|
i0.ɵɵtext(3, " Set limits to prevent runaway agent executions and control resource usage. ");
|
|
1484
1552
|
i0.ɵɵelementEnd()();
|
|
1485
|
-
i0.ɵɵelementStart(4, "div",
|
|
1486
|
-
i0.ɵɵelement(5, "mj-form-field",
|
|
1553
|
+
i0.ɵɵelementStart(4, "div", 209);
|
|
1554
|
+
i0.ɵɵelement(5, "mj-form-field", 210)(6, "mj-form-field", 211)(7, "mj-form-field", 212)(8, "mj-form-field", 213);
|
|
1487
1555
|
i0.ɵɵelementEnd()();
|
|
1488
1556
|
} if (rf & 2) {
|
|
1489
1557
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1497,13 +1565,13 @@ function AIAgentFormComponentExtended_form_3_ng_template_34_Template(rf, ctx) {
|
|
|
1497
1565
|
i0.ɵɵproperty("EditMode", ctx_r1.EditMode)("record", ctx_r1.record);
|
|
1498
1566
|
} }
|
|
1499
1567
|
function AIAgentFormComponentExtended_form_3_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
1500
|
-
i0.ɵɵelement(0, "i",
|
|
1568
|
+
i0.ɵɵelement(0, "i", 214);
|
|
1501
1569
|
i0.ɵɵtext(1, " Configuration ");
|
|
1502
1570
|
} }
|
|
1503
1571
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
1504
|
-
const
|
|
1505
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
1506
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1572
|
+
const _r42 = i0.ɵɵgetCurrentView();
|
|
1573
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 246);
|
|
1574
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
1507
1575
|
i0.ɵɵelementEnd();
|
|
1508
1576
|
} if (rf & 2) {
|
|
1509
1577
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1511,7 +1579,7 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Templ
|
|
|
1511
1579
|
i0.ɵɵproperty("data", ctx_r1.statusOptions)("valuePrimitive", true);
|
|
1512
1580
|
} }
|
|
1513
1581
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
1514
|
-
i0.ɵɵelementStart(0, "span",
|
|
1582
|
+
i0.ɵɵelementStart(0, "span", 226);
|
|
1515
1583
|
i0.ɵɵtext(1);
|
|
1516
1584
|
i0.ɵɵelementEnd();
|
|
1517
1585
|
} if (rf & 2) {
|
|
@@ -1520,9 +1588,9 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_20_Templ
|
|
|
1520
1588
|
i0.ɵɵtextInterpolate(ctx_r1.record.Status || "Not Set");
|
|
1521
1589
|
} }
|
|
1522
1590
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
1523
|
-
const
|
|
1524
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
1525
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
1591
|
+
const _r43 = i0.ɵɵgetCurrentView();
|
|
1592
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 247);
|
|
1593
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
1526
1594
|
i0.ɵɵelementEnd();
|
|
1527
1595
|
} if (rf & 2) {
|
|
1528
1596
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1530,7 +1598,7 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Templ
|
|
|
1530
1598
|
i0.ɵɵproperty("data", ctx_r1.agentTypes)("valuePrimitive", true);
|
|
1531
1599
|
} }
|
|
1532
1600
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
1533
|
-
i0.ɵɵelementStart(0, "span",
|
|
1601
|
+
i0.ɵɵelementStart(0, "span", 226);
|
|
1534
1602
|
i0.ɵɵtext(1);
|
|
1535
1603
|
i0.ɵɵelementEnd();
|
|
1536
1604
|
} if (rf & 2) {
|
|
@@ -1539,7 +1607,7 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_32_Templ
|
|
|
1539
1607
|
i0.ɵɵtextInterpolate(ctx_r1.record.Type || "Not Set");
|
|
1540
1608
|
} }
|
|
1541
1609
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1542
|
-
i0.ɵɵelementStart(0, "span",
|
|
1610
|
+
i0.ɵɵelementStart(0, "span", 254);
|
|
1543
1611
|
i0.ɵɵtext(1);
|
|
1544
1612
|
i0.ɵɵelementEnd();
|
|
1545
1613
|
} if (rf & 2) {
|
|
@@ -1548,28 +1616,28 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Cond
|
|
|
1548
1616
|
i0.ɵɵtextInterpolate(ctx_r1.selectedContextCompressionPrompt.Name);
|
|
1549
1617
|
} }
|
|
1550
1618
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1551
|
-
i0.ɵɵelementStart(0, "span",
|
|
1619
|
+
i0.ɵɵelementStart(0, "span", 255);
|
|
1552
1620
|
i0.ɵɵtext(1, "No prompt selected");
|
|
1553
1621
|
i0.ɵɵelementEnd();
|
|
1554
1622
|
} }
|
|
1555
1623
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1556
|
-
const
|
|
1557
|
-
i0.ɵɵelementStart(0, "button",
|
|
1558
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1559
|
-
i0.ɵɵelement(1, "i",
|
|
1624
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
1625
|
+
i0.ɵɵelementStart(0, "button", 260);
|
|
1626
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.clearContextCompressionPrompt()); });
|
|
1627
|
+
i0.ɵɵelement(1, "i", 261);
|
|
1560
1628
|
i0.ɵɵelementEnd();
|
|
1561
1629
|
} }
|
|
1562
1630
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
1563
|
-
const
|
|
1564
|
-
i0.ɵɵelementStart(0, "div",
|
|
1565
|
-
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_2_Template, 2, 1, "span",
|
|
1631
|
+
const _r44 = i0.ɵɵgetCurrentView();
|
|
1632
|
+
i0.ɵɵelementStart(0, "div", 252)(1, "div", 253);
|
|
1633
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_2_Template, 2, 1, "span", 254)(3, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_3_Template, 2, 0, "span", 255);
|
|
1566
1634
|
i0.ɵɵelementEnd();
|
|
1567
|
-
i0.ɵɵelementStart(4, "div",
|
|
1568
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
1569
|
-
i0.ɵɵelement(6, "i",
|
|
1635
|
+
i0.ɵɵelementStart(4, "div", 256)(5, "button", 257);
|
|
1636
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openContextCompressionPromptSelector()); });
|
|
1637
|
+
i0.ɵɵelement(6, "i", 258);
|
|
1570
1638
|
i0.ɵɵtext(7);
|
|
1571
1639
|
i0.ɵɵelementEnd();
|
|
1572
|
-
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_8_Template, 2, 0, "button",
|
|
1640
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Conditional_8_Template, 2, 0, "button", 259);
|
|
1573
1641
|
i0.ɵɵelementEnd()();
|
|
1574
1642
|
} if (rf & 2) {
|
|
1575
1643
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1581,7 +1649,7 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Cond
|
|
|
1581
1649
|
i0.ɵɵconditional(ctx_r1.selectedContextCompressionPrompt ? 8 : -1);
|
|
1582
1650
|
} }
|
|
1583
1651
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1584
|
-
i0.ɵɵelementStart(0, "span",
|
|
1652
|
+
i0.ɵɵelementStart(0, "span", 226);
|
|
1585
1653
|
i0.ɵɵtext(1);
|
|
1586
1654
|
i0.ɵɵelementEnd();
|
|
1587
1655
|
} if (rf & 2) {
|
|
@@ -1590,41 +1658,41 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Cond
|
|
|
1590
1658
|
i0.ɵɵtextInterpolate((ctx_r1.selectedContextCompressionPrompt == null ? null : ctx_r1.selectedContextCompressionPrompt.Name) || ctx_r1.record.ContextCompressionPrompt || "Not Set");
|
|
1591
1659
|
} }
|
|
1592
1660
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Template(rf, ctx) { if (rf & 1) {
|
|
1593
|
-
i0.ɵɵelementStart(0, "div",
|
|
1594
|
-
i0.ɵɵelement(3, "i",
|
|
1661
|
+
i0.ɵɵelementStart(0, "div", 219)(1, "div", 220)(2, "div", 221);
|
|
1662
|
+
i0.ɵɵelement(3, "i", 248);
|
|
1595
1663
|
i0.ɵɵelementEnd();
|
|
1596
|
-
i0.ɵɵelementStart(4, "div",
|
|
1664
|
+
i0.ɵɵelementStart(4, "div", 223)(5, "h4");
|
|
1597
1665
|
i0.ɵɵtext(6, "Message Threshold");
|
|
1598
1666
|
i0.ɵɵelementEnd();
|
|
1599
1667
|
i0.ɵɵelementStart(7, "p");
|
|
1600
1668
|
i0.ɵɵtext(8, "Messages before compression triggers");
|
|
1601
1669
|
i0.ɵɵelementEnd()()();
|
|
1602
|
-
i0.ɵɵelementStart(9, "div",
|
|
1603
|
-
i0.ɵɵelement(10, "mj-form-field",
|
|
1670
|
+
i0.ɵɵelementStart(9, "div", 224);
|
|
1671
|
+
i0.ɵɵelement(10, "mj-form-field", 249);
|
|
1604
1672
|
i0.ɵɵelementEnd()();
|
|
1605
|
-
i0.ɵɵelementStart(11, "div",
|
|
1606
|
-
i0.ɵɵelement(14, "i",
|
|
1673
|
+
i0.ɵɵelementStart(11, "div", 219)(12, "div", 220)(13, "div", 221);
|
|
1674
|
+
i0.ɵɵelement(14, "i", 250);
|
|
1607
1675
|
i0.ɵɵelementEnd();
|
|
1608
|
-
i0.ɵɵelementStart(15, "div",
|
|
1676
|
+
i0.ɵɵelementStart(15, "div", 223)(16, "h4");
|
|
1609
1677
|
i0.ɵɵtext(17, "Messages to Keep");
|
|
1610
1678
|
i0.ɵɵelementEnd();
|
|
1611
1679
|
i0.ɵɵelementStart(18, "p");
|
|
1612
1680
|
i0.ɵɵtext(19, "Recent messages to retain uncompressed");
|
|
1613
1681
|
i0.ɵɵelementEnd()()();
|
|
1614
|
-
i0.ɵɵelementStart(20, "div",
|
|
1615
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
1682
|
+
i0.ɵɵelementStart(20, "div", 224);
|
|
1683
|
+
i0.ɵɵelement(21, "mj-form-field", 251);
|
|
1616
1684
|
i0.ɵɵelementEnd()();
|
|
1617
|
-
i0.ɵɵelementStart(22, "div",
|
|
1618
|
-
i0.ɵɵelement(25, "i",
|
|
1685
|
+
i0.ɵɵelementStart(22, "div", 219)(23, "div", 220)(24, "div", 221);
|
|
1686
|
+
i0.ɵɵelement(25, "i", 154);
|
|
1619
1687
|
i0.ɵɵelementEnd();
|
|
1620
|
-
i0.ɵɵelementStart(26, "div",
|
|
1688
|
+
i0.ɵɵelementStart(26, "div", 223)(27, "h4");
|
|
1621
1689
|
i0.ɵɵtext(28, "Compression Prompt");
|
|
1622
1690
|
i0.ɵɵelementEnd();
|
|
1623
1691
|
i0.ɵɵelementStart(29, "p");
|
|
1624
1692
|
i0.ɵɵtext(30, "Prompt used for summarization");
|
|
1625
1693
|
i0.ɵɵelementEnd()()();
|
|
1626
|
-
i0.ɵɵelementStart(31, "div",
|
|
1627
|
-
i0.ɵɵtemplate(32, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Template, 9, 3, "div",
|
|
1694
|
+
i0.ɵɵelementStart(31, "div", 224);
|
|
1695
|
+
i0.ɵɵtemplate(32, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_32_Template, 9, 3, "div", 252)(33, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Conditional_33_Template, 2, 1, "span", 226);
|
|
1628
1696
|
i0.ɵɵelementEnd()();
|
|
1629
1697
|
} if (rf & 2) {
|
|
1630
1698
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1636,168 +1704,168 @@ function AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Temp
|
|
|
1636
1704
|
i0.ɵɵconditional(ctx_r1.EditMode ? 32 : 33);
|
|
1637
1705
|
} }
|
|
1638
1706
|
function AIAgentFormComponentExtended_form_3_ng_template_37_Template(rf, ctx) { if (rf & 1) {
|
|
1639
|
-
const
|
|
1640
|
-
i0.ɵɵelementStart(0, "div",
|
|
1707
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
1708
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "div", 93)(2, "div", 158);
|
|
1641
1709
|
i0.ɵɵtext(3, " Configure agent behavior, execution settings, and advanced features. ");
|
|
1642
1710
|
i0.ɵɵelementEnd()();
|
|
1643
|
-
i0.ɵɵelementStart(4, "div",
|
|
1644
|
-
i0.ɵɵelement(6, "i",
|
|
1711
|
+
i0.ɵɵelementStart(4, "div", 215)(5, "h3", 216);
|
|
1712
|
+
i0.ɵɵelement(6, "i", 217);
|
|
1645
1713
|
i0.ɵɵtext(7, " Identity & Behavior ");
|
|
1646
1714
|
i0.ɵɵelementEnd();
|
|
1647
|
-
i0.ɵɵelementStart(8, "div",
|
|
1648
|
-
i0.ɵɵelement(12, "i",
|
|
1715
|
+
i0.ɵɵelementStart(8, "div", 218)(9, "div", 219)(10, "div", 220)(11, "div", 221);
|
|
1716
|
+
i0.ɵɵelement(12, "i", 222);
|
|
1649
1717
|
i0.ɵɵelementEnd();
|
|
1650
|
-
i0.ɵɵelementStart(13, "div",
|
|
1718
|
+
i0.ɵɵelementStart(13, "div", 223)(14, "h4");
|
|
1651
1719
|
i0.ɵɵtext(15, "Agent Status");
|
|
1652
1720
|
i0.ɵɵelementEnd();
|
|
1653
1721
|
i0.ɵɵelementStart(16, "p");
|
|
1654
1722
|
i0.ɵɵtext(17, "Current availability and operational status");
|
|
1655
1723
|
i0.ɵɵelementEnd()()();
|
|
1656
|
-
i0.ɵɵelementStart(18, "div",
|
|
1657
|
-
i0.ɵɵtemplate(19, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Template, 1, 3, "kendo-dropdownlist",
|
|
1724
|
+
i0.ɵɵelementStart(18, "div", 224);
|
|
1725
|
+
i0.ɵɵtemplate(19, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_19_Template, 1, 3, "kendo-dropdownlist", 225)(20, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_20_Template, 2, 1, "span", 226);
|
|
1658
1726
|
i0.ɵɵelementEnd()();
|
|
1659
|
-
i0.ɵɵelementStart(21, "div",
|
|
1660
|
-
i0.ɵɵelement(24, "i",
|
|
1727
|
+
i0.ɵɵelementStart(21, "div", 219)(22, "div", 220)(23, "div", 221);
|
|
1728
|
+
i0.ɵɵelement(24, "i", 34);
|
|
1661
1729
|
i0.ɵɵelementEnd();
|
|
1662
|
-
i0.ɵɵelementStart(25, "div",
|
|
1730
|
+
i0.ɵɵelementStart(25, "div", 223)(26, "h4");
|
|
1663
1731
|
i0.ɵɵtext(27, "Agent Type");
|
|
1664
1732
|
i0.ɵɵelementEnd();
|
|
1665
1733
|
i0.ɵɵelementStart(28, "p");
|
|
1666
1734
|
i0.ɵɵtext(29, "Category and system-level behavior");
|
|
1667
1735
|
i0.ɵɵelementEnd()()();
|
|
1668
|
-
i0.ɵɵelementStart(30, "div",
|
|
1669
|
-
i0.ɵɵtemplate(31, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Template, 1, 3, "kendo-dropdownlist",
|
|
1736
|
+
i0.ɵɵelementStart(30, "div", 224);
|
|
1737
|
+
i0.ɵɵtemplate(31, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_31_Template, 1, 3, "kendo-dropdownlist", 227)(32, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_32_Template, 2, 1, "span", 226);
|
|
1670
1738
|
i0.ɵɵelementEnd()();
|
|
1671
|
-
i0.ɵɵelementStart(33, "div",
|
|
1672
|
-
i0.ɵɵelement(36, "i",
|
|
1739
|
+
i0.ɵɵelementStart(33, "div", 219)(34, "div", 220)(35, "div", 221);
|
|
1740
|
+
i0.ɵɵelement(36, "i", 89);
|
|
1673
1741
|
i0.ɵɵelementEnd();
|
|
1674
|
-
i0.ɵɵelementStart(37, "div",
|
|
1742
|
+
i0.ɵɵelementStart(37, "div", 223)(38, "h4");
|
|
1675
1743
|
i0.ɵɵtext(39, "Expose as Action");
|
|
1676
1744
|
i0.ɵɵelementEnd();
|
|
1677
1745
|
i0.ɵɵelementStart(40, "p");
|
|
1678
1746
|
i0.ɵɵtext(41, "Make available as an action for other agents");
|
|
1679
1747
|
i0.ɵɵelementEnd()()();
|
|
1680
|
-
i0.ɵɵelementStart(42, "div",
|
|
1681
|
-
i0.ɵɵelement(43, "mj-form-field",
|
|
1748
|
+
i0.ɵɵelementStart(42, "div", 224);
|
|
1749
|
+
i0.ɵɵelement(43, "mj-form-field", 228);
|
|
1682
1750
|
i0.ɵɵelementEnd()();
|
|
1683
|
-
i0.ɵɵelementStart(44, "div",
|
|
1684
|
-
i0.ɵɵelement(47, "i",
|
|
1751
|
+
i0.ɵɵelementStart(44, "div", 229)(45, "div", 220)(46, "div", 221);
|
|
1752
|
+
i0.ɵɵelement(47, "i", 230);
|
|
1685
1753
|
i0.ɵɵelementEnd();
|
|
1686
|
-
i0.ɵɵelementStart(48, "div",
|
|
1754
|
+
i0.ɵɵelementStart(48, "div", 223)(49, "h4");
|
|
1687
1755
|
i0.ɵɵtext(50, "Description");
|
|
1688
1756
|
i0.ɵɵelementEnd();
|
|
1689
1757
|
i0.ɵɵelementStart(51, "p");
|
|
1690
1758
|
i0.ɵɵtext(52, "Detailed agent description and purpose");
|
|
1691
1759
|
i0.ɵɵelementEnd()()();
|
|
1692
|
-
i0.ɵɵelementStart(53, "div",
|
|
1693
|
-
i0.ɵɵelement(54, "mj-form-field",
|
|
1760
|
+
i0.ɵɵelementStart(53, "div", 224);
|
|
1761
|
+
i0.ɵɵelement(54, "mj-form-field", 231);
|
|
1694
1762
|
i0.ɵɵelementEnd()()()();
|
|
1695
|
-
i0.ɵɵelementStart(55, "div",
|
|
1696
|
-
i0.ɵɵelement(57, "i",
|
|
1763
|
+
i0.ɵɵelementStart(55, "div", 215)(56, "h3", 216);
|
|
1764
|
+
i0.ɵɵelement(57, "i", 37);
|
|
1697
1765
|
i0.ɵɵtext(58, " Execution Settings ");
|
|
1698
1766
|
i0.ɵɵelementEnd();
|
|
1699
|
-
i0.ɵɵelementStart(59, "div",
|
|
1700
|
-
i0.ɵɵelement(63, "i",
|
|
1767
|
+
i0.ɵɵelementStart(59, "div", 218)(60, "div", 219)(61, "div", 220)(62, "div", 221);
|
|
1768
|
+
i0.ɵɵelement(63, "i", 120);
|
|
1701
1769
|
i0.ɵɵelementEnd();
|
|
1702
|
-
i0.ɵɵelementStart(64, "div",
|
|
1770
|
+
i0.ɵɵelementStart(64, "div", 223)(65, "h4");
|
|
1703
1771
|
i0.ɵɵtext(66, "Execution Mode");
|
|
1704
1772
|
i0.ɵɵelementEnd();
|
|
1705
1773
|
i0.ɵɵelementStart(67, "p");
|
|
1706
1774
|
i0.ɵɵtext(68, "How sub-agents are executed");
|
|
1707
1775
|
i0.ɵɵelementEnd()()();
|
|
1708
|
-
i0.ɵɵelementStart(69, "div",
|
|
1709
|
-
i0.ɵɵelement(70, "mj-form-field",
|
|
1776
|
+
i0.ɵɵelementStart(69, "div", 224);
|
|
1777
|
+
i0.ɵɵelement(70, "mj-form-field", 232);
|
|
1710
1778
|
i0.ɵɵelementEnd()();
|
|
1711
|
-
i0.ɵɵelementStart(71, "div",
|
|
1712
|
-
i0.ɵɵelement(74, "i",
|
|
1779
|
+
i0.ɵɵelementStart(71, "div", 219)(72, "div", 220)(73, "div", 221);
|
|
1780
|
+
i0.ɵɵelement(74, "i", 233);
|
|
1713
1781
|
i0.ɵɵelementEnd();
|
|
1714
|
-
i0.ɵɵelementStart(75, "div",
|
|
1782
|
+
i0.ɵɵelementStart(75, "div", 223)(76, "h4");
|
|
1715
1783
|
i0.ɵɵtext(77, "Execution Order");
|
|
1716
1784
|
i0.ɵɵelementEnd();
|
|
1717
1785
|
i0.ɵɵelementStart(78, "p");
|
|
1718
1786
|
i0.ɵɵtext(79, "Order when run with siblings");
|
|
1719
1787
|
i0.ɵɵelementEnd()()();
|
|
1720
|
-
i0.ɵɵelementStart(80, "div",
|
|
1721
|
-
i0.ɵɵelement(81, "mj-form-field",
|
|
1788
|
+
i0.ɵɵelementStart(80, "div", 224);
|
|
1789
|
+
i0.ɵɵelement(81, "mj-form-field", 234);
|
|
1722
1790
|
i0.ɵɵelementEnd()();
|
|
1723
|
-
i0.ɵɵelementStart(82, "div",
|
|
1724
|
-
i0.ɵɵelement(85, "i",
|
|
1791
|
+
i0.ɵɵelementStart(82, "div", 219)(83, "div", 220)(84, "div", 221);
|
|
1792
|
+
i0.ɵɵelement(85, "i", 235);
|
|
1725
1793
|
i0.ɵɵelementEnd();
|
|
1726
|
-
i0.ɵɵelementStart(86, "div",
|
|
1794
|
+
i0.ɵɵelementStart(86, "div", 223)(87, "h4");
|
|
1727
1795
|
i0.ɵɵtext(88, "Default Effort Level");
|
|
1728
1796
|
i0.ɵɵelementEnd();
|
|
1729
1797
|
i0.ɵɵelementStart(89, "p");
|
|
1730
1798
|
i0.ɵɵtext(90, "Default effort level for all prompts (1-100)");
|
|
1731
1799
|
i0.ɵɵelementEnd()()();
|
|
1732
|
-
i0.ɵɵelementStart(91, "div",
|
|
1733
|
-
i0.ɵɵelement(92, "mj-form-field",
|
|
1734
|
-
i0.ɵɵelementStart(93, "div",
|
|
1735
|
-
i0.ɵɵelement(94, "i",
|
|
1800
|
+
i0.ɵɵelementStart(91, "div", 224);
|
|
1801
|
+
i0.ɵɵelement(92, "mj-form-field", 236);
|
|
1802
|
+
i0.ɵɵelementStart(93, "div", 237);
|
|
1803
|
+
i0.ɵɵelement(94, "i", 187);
|
|
1736
1804
|
i0.ɵɵtext(95, " Higher values request more thorough reasoning (1=minimal, 100=maximum) ");
|
|
1737
1805
|
i0.ɵɵelementEnd()()();
|
|
1738
|
-
i0.ɵɵelementStart(96, "div",
|
|
1739
|
-
i0.ɵɵelement(99, "i",
|
|
1806
|
+
i0.ɵɵelementStart(96, "div", 219)(97, "div", 220)(98, "div", 221);
|
|
1807
|
+
i0.ɵɵelement(99, "i", 204);
|
|
1740
1808
|
i0.ɵɵelementEnd();
|
|
1741
|
-
i0.ɵɵelementStart(100, "div",
|
|
1809
|
+
i0.ɵɵelementStart(100, "div", 223)(101, "h4");
|
|
1742
1810
|
i0.ɵɵtext(102, "Driver Class");
|
|
1743
1811
|
i0.ɵɵelementEnd();
|
|
1744
1812
|
i0.ɵɵelementStart(103, "p");
|
|
1745
1813
|
i0.ɵɵtext(104, "Custom implementation class");
|
|
1746
1814
|
i0.ɵɵelementEnd()()();
|
|
1747
|
-
i0.ɵɵelementStart(105, "div",
|
|
1748
|
-
i0.ɵɵelement(106, "mj-form-field",
|
|
1815
|
+
i0.ɵɵelementStart(105, "div", 224);
|
|
1816
|
+
i0.ɵɵelement(106, "mj-form-field", 238);
|
|
1749
1817
|
i0.ɵɵelementEnd()()()();
|
|
1750
|
-
i0.ɵɵelementStart(107, "div",
|
|
1751
|
-
i0.ɵɵelement(109, "i",
|
|
1818
|
+
i0.ɵɵelementStart(107, "div", 215)(108, "h3", 216);
|
|
1819
|
+
i0.ɵɵelement(109, "i", 239);
|
|
1752
1820
|
i0.ɵɵtext(110, " Visual Identity ");
|
|
1753
1821
|
i0.ɵɵelementEnd();
|
|
1754
|
-
i0.ɵɵelementStart(111, "div",
|
|
1755
|
-
i0.ɵɵelement(115, "i",
|
|
1822
|
+
i0.ɵɵelementStart(111, "div", 218)(112, "div", 219)(113, "div", 220)(114, "div", 221);
|
|
1823
|
+
i0.ɵɵelement(115, "i", 240);
|
|
1756
1824
|
i0.ɵɵelementEnd();
|
|
1757
|
-
i0.ɵɵelementStart(116, "div",
|
|
1825
|
+
i0.ɵɵelementStart(116, "div", 223)(117, "h4");
|
|
1758
1826
|
i0.ɵɵtext(118, "Icon Class");
|
|
1759
1827
|
i0.ɵɵelementEnd();
|
|
1760
1828
|
i0.ɵɵelementStart(119, "p");
|
|
1761
1829
|
i0.ɵɵtext(120, "Font Awesome icon class");
|
|
1762
1830
|
i0.ɵɵelementEnd()()();
|
|
1763
|
-
i0.ɵɵelementStart(121, "div",
|
|
1764
|
-
i0.ɵɵelement(122, "mj-form-field",
|
|
1765
|
-
i0.ɵɵelementStart(123, "div",
|
|
1766
|
-
i0.ɵɵelement(124, "i",
|
|
1831
|
+
i0.ɵɵelementStart(121, "div", 224);
|
|
1832
|
+
i0.ɵɵelement(122, "mj-form-field", 241);
|
|
1833
|
+
i0.ɵɵelementStart(123, "div", 237);
|
|
1834
|
+
i0.ɵɵelement(124, "i", 187);
|
|
1767
1835
|
i0.ɵɵtext(125, " Example: ");
|
|
1768
1836
|
i0.ɵɵelementStart(126, "code");
|
|
1769
1837
|
i0.ɵɵtext(127, "fa-solid fa-robot");
|
|
1770
1838
|
i0.ɵɵelementEnd()()()();
|
|
1771
|
-
i0.ɵɵelementStart(128, "div",
|
|
1772
|
-
i0.ɵɵelement(131, "i",
|
|
1839
|
+
i0.ɵɵelementStart(128, "div", 219)(129, "div", 220)(130, "div", 221);
|
|
1840
|
+
i0.ɵɵelement(131, "i", 242);
|
|
1773
1841
|
i0.ɵɵelementEnd();
|
|
1774
|
-
i0.ɵɵelementStart(132, "div",
|
|
1842
|
+
i0.ɵɵelementStart(132, "div", 223)(133, "h4");
|
|
1775
1843
|
i0.ɵɵtext(134, "Logo URL");
|
|
1776
1844
|
i0.ɵɵelementEnd();
|
|
1777
1845
|
i0.ɵɵelementStart(135, "p");
|
|
1778
1846
|
i0.ɵɵtext(136, "URL for agent logo image");
|
|
1779
1847
|
i0.ɵɵelementEnd()()();
|
|
1780
|
-
i0.ɵɵelementStart(137, "div",
|
|
1781
|
-
i0.ɵɵelement(138, "mj-form-field",
|
|
1782
|
-
i0.ɵɵelementStart(139, "div",
|
|
1783
|
-
i0.ɵɵelement(140, "i",
|
|
1848
|
+
i0.ɵɵelementStart(137, "div", 224);
|
|
1849
|
+
i0.ɵɵelement(138, "mj-form-field", 243);
|
|
1850
|
+
i0.ɵɵelementStart(139, "div", 237);
|
|
1851
|
+
i0.ɵɵelement(140, "i", 187);
|
|
1784
1852
|
i0.ɵɵtext(141, " Takes precedence over Icon Class ");
|
|
1785
1853
|
i0.ɵɵelementEnd()()()()();
|
|
1786
|
-
i0.ɵɵelementStart(142, "div",
|
|
1787
|
-
i0.ɵɵelement(144, "i",
|
|
1854
|
+
i0.ɵɵelementStart(142, "div", 215)(143, "h3", 216);
|
|
1855
|
+
i0.ɵɵelement(144, "i", 244);
|
|
1788
1856
|
i0.ɵɵtext(145, " Context Compression ");
|
|
1789
1857
|
i0.ɵɵelementEnd();
|
|
1790
|
-
i0.ɵɵelementStart(146, "div",
|
|
1791
|
-
i0.ɵɵelement(150, "i",
|
|
1858
|
+
i0.ɵɵelementStart(146, "div", 218)(147, "div", 229)(148, "div", 220)(149, "div", 221);
|
|
1859
|
+
i0.ɵɵelement(150, "i", 222);
|
|
1792
1860
|
i0.ɵɵelementEnd();
|
|
1793
|
-
i0.ɵɵelementStart(151, "div",
|
|
1861
|
+
i0.ɵɵelementStart(151, "div", 223)(152, "h4");
|
|
1794
1862
|
i0.ɵɵtext(153, "Enable Context Compression");
|
|
1795
1863
|
i0.ɵɵelementEnd();
|
|
1796
1864
|
i0.ɵɵelementStart(154, "p");
|
|
1797
1865
|
i0.ɵɵtext(155, "Automatically compress conversation context when message threshold is reached");
|
|
1798
1866
|
i0.ɵɵelementEnd()()();
|
|
1799
|
-
i0.ɵɵelementStart(156, "div",
|
|
1800
|
-
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Template_mj_form_field_valueChange_157_listener($event) { i0.ɵɵrestoreView(
|
|
1867
|
+
i0.ɵɵelementStart(156, "div", 224)(157, "mj-form-field", 245);
|
|
1868
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_3_ng_template_37_Template_mj_form_field_valueChange_157_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContextCompressionToggle($event)); });
|
|
1801
1869
|
i0.ɵɵelementEnd()()();
|
|
1802
1870
|
i0.ɵɵtemplate(158, AIAgentFormComponentExtended_form_3_ng_template_37_Conditional_158_Template, 34, 5);
|
|
1803
1871
|
i0.ɵɵelementEnd()()();
|
|
@@ -1838,7 +1906,7 @@ function AIAgentFormComponentExtended_form_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
1838
1906
|
i0.ɵɵelementStart(9, "div", 14);
|
|
1839
1907
|
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_3_Conditional_10_Template, 1, 1, "kendo-textbox", 15)(11, AIAgentFormComponentExtended_form_3_Conditional_11_Template, 2, 1, "h1", 16);
|
|
1840
1908
|
i0.ɵɵelementStart(12, "div", 17);
|
|
1841
|
-
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_3_Conditional_13_Template, 3, 3, "span", 18)(14, AIAgentFormComponentExtended_form_3_Conditional_14_Template, 2, 1, "span", 19)(15, AIAgentFormComponentExtended_form_3_Conditional_15_Template,
|
|
1909
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_3_Conditional_13_Template, 3, 3, "span", 18)(14, AIAgentFormComponentExtended_form_3_Conditional_14_Template, 2, 1, "span", 19)(15, AIAgentFormComponentExtended_form_3_Conditional_15_Template, 4, 3, "span", 20);
|
|
1842
1910
|
i0.ɵɵelementEnd()()();
|
|
1843
1911
|
i0.ɵɵelementStart(16, "div", 21);
|
|
1844
1912
|
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_3_Conditional_17_Template, 6, 1);
|
|
@@ -1961,9 +2029,21 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1961
2029
|
}
|
|
1962
2030
|
}
|
|
1963
2031
|
// === Related Entity Counts ===
|
|
1964
|
-
/** Number of sub-agents under this agent */
|
|
2032
|
+
/** Number of sub-agents under this agent (for backward compatibility) */
|
|
1965
2033
|
get subAgentCount() {
|
|
1966
|
-
return this.
|
|
2034
|
+
return this.allSubAgents.length;
|
|
2035
|
+
}
|
|
2036
|
+
/** Number of child sub-agents (ParentID-based) */
|
|
2037
|
+
get childSubAgentCount() {
|
|
2038
|
+
return this.allSubAgents.filter(s => s.type === 'child').length;
|
|
2039
|
+
}
|
|
2040
|
+
/** Number of related sub-agents (Relationship-based) */
|
|
2041
|
+
get relatedSubAgentCount() {
|
|
2042
|
+
return this.allSubAgents.filter(s => s.type === 'related').length;
|
|
2043
|
+
}
|
|
2044
|
+
/** Total number of sub-agents across both types */
|
|
2045
|
+
get totalSubAgentCount() {
|
|
2046
|
+
return this.allSubAgents.length;
|
|
1967
2047
|
}
|
|
1968
2048
|
/** Number of prompts associated with this agent */
|
|
1969
2049
|
get promptCount() {
|
|
@@ -1985,6 +2065,17 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1985
2065
|
get executionHistoryCount() {
|
|
1986
2066
|
return this.recentExecutions.length;
|
|
1987
2067
|
}
|
|
2068
|
+
/** Filtered sub-agents based on current filter */
|
|
2069
|
+
get filteredSubAgents() {
|
|
2070
|
+
switch (this.subAgentFilter) {
|
|
2071
|
+
case 'child':
|
|
2072
|
+
return this.allSubAgents.filter(s => s.type === 'child');
|
|
2073
|
+
case 'related':
|
|
2074
|
+
return this.allSubAgents.filter(s => s.type === 'related');
|
|
2075
|
+
default:
|
|
2076
|
+
return this.allSubAgents;
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
1988
2079
|
/**
|
|
1989
2080
|
* Loads agent types from the database for the dropdown
|
|
1990
2081
|
* @private
|
|
@@ -2193,8 +2284,12 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
2193
2284
|
/** Track the component reference to check if it still exists */
|
|
2194
2285
|
this.customSectionComponentRef = null;
|
|
2195
2286
|
// === Related Entity Data for Display ===
|
|
2196
|
-
/** Array of sub-agent entities for card display */
|
|
2287
|
+
/** Array of sub-agent entities for card display (DEPRECATED - use allSubAgents) */
|
|
2197
2288
|
this.subAgents = [];
|
|
2289
|
+
/** Unified sub-agent data (both child and related) */
|
|
2290
|
+
this.allSubAgents = [];
|
|
2291
|
+
/** Current filter for sub-agents display */
|
|
2292
|
+
this.subAgentFilter = 'all';
|
|
2198
2293
|
/** Array of agent prompt entities for card display */
|
|
2199
2294
|
this.agentPrompts = [];
|
|
2200
2295
|
/** Array of agent action entities for card display */
|
|
@@ -2307,9 +2402,44 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
2307
2402
|
await AIEngineBase.Instance.Config(true); // force refresh
|
|
2308
2403
|
}
|
|
2309
2404
|
try {
|
|
2310
|
-
//
|
|
2311
|
-
|
|
2312
|
-
|
|
2405
|
+
// Clear unified sub-agents array
|
|
2406
|
+
this.allSubAgents = [];
|
|
2407
|
+
// Load child sub-agents (ParentID-based)
|
|
2408
|
+
const childAgents = AIEngineBase.Instance.Agents.filter(a => a.ParentID === this.record.ID);
|
|
2409
|
+
for (const agent of childAgents) {
|
|
2410
|
+
this.allSubAgents.push({
|
|
2411
|
+
agent,
|
|
2412
|
+
type: 'child'
|
|
2413
|
+
});
|
|
2414
|
+
}
|
|
2415
|
+
// Also populate the deprecated subAgents array for backward compatibility
|
|
2416
|
+
this.subAgents = [...childAgents];
|
|
2417
|
+
// Load related sub-agents (Relationship-based)
|
|
2418
|
+
const rv = new RunView();
|
|
2419
|
+
const relationshipsResult = await rv.RunView({
|
|
2420
|
+
EntityName: 'MJ: AI Agent Relationships',
|
|
2421
|
+
ExtraFilter: `AgentID='${this.record.ID}' AND Status='Active'`,
|
|
2422
|
+
ResultType: 'entity_object'
|
|
2423
|
+
});
|
|
2424
|
+
if (relationshipsResult.Success && relationshipsResult.Results) {
|
|
2425
|
+
for (const relationship of relationshipsResult.Results) {
|
|
2426
|
+
const agent = AIEngineBase.Instance.Agents.find(a => a.ID === relationship.SubAgentID);
|
|
2427
|
+
if (agent) {
|
|
2428
|
+
this.allSubAgents.push({
|
|
2429
|
+
agent,
|
|
2430
|
+
type: 'related',
|
|
2431
|
+
relationship
|
|
2432
|
+
});
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
}
|
|
2436
|
+
// Sort: child agents first, then by name
|
|
2437
|
+
this.allSubAgents.sort((a, b) => {
|
|
2438
|
+
if (a.type !== b.type) {
|
|
2439
|
+
return a.type === 'child' ? -1 : 1;
|
|
2440
|
+
}
|
|
2441
|
+
return (a.agent.Name || '').localeCompare(b.agent.Name || '');
|
|
2442
|
+
});
|
|
2313
2443
|
this.agentPrompts = AIEngineBase.Instance.Prompts.filter(p => {
|
|
2314
2444
|
const filteredAgentPrompts = AIEngineBase.Instance.AgentPrompts.filter(ap => ap.AgentID === this.record.ID);
|
|
2315
2445
|
return filteredAgentPrompts.some(ap => ap.PromptID === p.ID);
|
|
@@ -2318,7 +2448,6 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
2318
2448
|
const filteredAgentActions = AIEngineBase.Instance.AgentActions.filter(aa => aa.AgentID === this.record.ID);
|
|
2319
2449
|
return filteredAgentActions.some(aa => aa.ActionID === a.ID);
|
|
2320
2450
|
});
|
|
2321
|
-
const rv = new RunView();
|
|
2322
2451
|
// Execute all queries in a single batch for better performance
|
|
2323
2452
|
const results = await rv.RunViews([
|
|
2324
2453
|
// Learning cycles
|
|
@@ -3406,6 +3535,127 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
3406
3535
|
console.error('Error with dialog:', dialogError);
|
|
3407
3536
|
}
|
|
3408
3537
|
}
|
|
3538
|
+
/**
|
|
3539
|
+
* Sets the sub-agent filter to show all, child, or related sub-agents
|
|
3540
|
+
*/
|
|
3541
|
+
setSubAgentFilter(filter) {
|
|
3542
|
+
this.subAgentFilter = filter;
|
|
3543
|
+
}
|
|
3544
|
+
/**
|
|
3545
|
+
* Gets the badge color for a sub-agent based on its type
|
|
3546
|
+
*/
|
|
3547
|
+
getSubAgentBadgeColor(item) {
|
|
3548
|
+
return item.type === 'child' ? '#2196F3' : '#9C27B0';
|
|
3549
|
+
}
|
|
3550
|
+
/**
|
|
3551
|
+
* Gets the badge icon for a sub-agent based on its type
|
|
3552
|
+
*/
|
|
3553
|
+
getSubAgentBadgeIcon(item) {
|
|
3554
|
+
return item.type === 'child' ? 'fa-solid fa-link' : 'fa-solid fa-share-nodes';
|
|
3555
|
+
}
|
|
3556
|
+
/**
|
|
3557
|
+
* Gets the badge text for a sub-agent based on its type
|
|
3558
|
+
*/
|
|
3559
|
+
getSubAgentBadgeText(item) {
|
|
3560
|
+
return item.type === 'child' ? 'CHILD' : 'RELATED';
|
|
3561
|
+
}
|
|
3562
|
+
/**
|
|
3563
|
+
* Gets the payload information string for display
|
|
3564
|
+
*/
|
|
3565
|
+
getSubAgentPayloadInfo(item) {
|
|
3566
|
+
if (item.type === 'child') {
|
|
3567
|
+
return 'Shared Payload';
|
|
3568
|
+
}
|
|
3569
|
+
else if (item.relationship?.SubAgentOutputMapping) {
|
|
3570
|
+
try {
|
|
3571
|
+
const mapping = JSON.parse(item.relationship.SubAgentOutputMapping);
|
|
3572
|
+
const entries = Object.entries(mapping);
|
|
3573
|
+
if (entries.length === 1 && entries[0][0] === '*') {
|
|
3574
|
+
return `Mapped: * → ${entries[0][1]}`;
|
|
3575
|
+
}
|
|
3576
|
+
return `Mapped: ${entries.length} path${entries.length === 1 ? '' : 's'}`;
|
|
3577
|
+
}
|
|
3578
|
+
catch {
|
|
3579
|
+
return 'Mapped Payload';
|
|
3580
|
+
}
|
|
3581
|
+
}
|
|
3582
|
+
return 'No Mapping';
|
|
3583
|
+
}
|
|
3584
|
+
/**
|
|
3585
|
+
* Opens a dialog to configure the output mapping for a related sub-agent
|
|
3586
|
+
*/
|
|
3587
|
+
async configureOutputMapping(item, event) {
|
|
3588
|
+
event.stopPropagation();
|
|
3589
|
+
if (item.type !== 'related' || !item.relationship)
|
|
3590
|
+
return;
|
|
3591
|
+
// TODO: Implement JSON editor dialog for SubAgentOutputMapping
|
|
3592
|
+
MJNotificationService.Instance.CreateSimpleNotification('Output mapping configuration coming soon', 'info', 3000);
|
|
3593
|
+
}
|
|
3594
|
+
/**
|
|
3595
|
+
* Unlinks a related sub-agent (removes the relationship)
|
|
3596
|
+
*/
|
|
3597
|
+
async unlinkRelatedSubAgent(item, event) {
|
|
3598
|
+
event.stopPropagation();
|
|
3599
|
+
if (item.type !== 'related' || !item.relationship)
|
|
3600
|
+
return;
|
|
3601
|
+
const confirmDialog = this.dialogService.open({
|
|
3602
|
+
title: 'Unlink Related Sub-Agent',
|
|
3603
|
+
content: `Are you sure you want to unlink "${item.agent.Name}"? This will remove the relationship but keep the agent itself.`,
|
|
3604
|
+
actions: [
|
|
3605
|
+
{ text: 'Cancel' },
|
|
3606
|
+
{ text: 'Unlink', themeColor: 'error' }
|
|
3607
|
+
],
|
|
3608
|
+
width: 450,
|
|
3609
|
+
height: 200
|
|
3610
|
+
});
|
|
3611
|
+
try {
|
|
3612
|
+
const result = await firstValueFrom(confirmDialog.result);
|
|
3613
|
+
if (result && result.text === 'Unlink') {
|
|
3614
|
+
try {
|
|
3615
|
+
const success = await item.relationship.Delete();
|
|
3616
|
+
if (success) {
|
|
3617
|
+
// Remove from unified list
|
|
3618
|
+
const index = this.allSubAgents.findIndex(s => s.type === 'related' && s.relationship?.ID === item.relationship.ID);
|
|
3619
|
+
if (index >= 0) {
|
|
3620
|
+
this.allSubAgents.splice(index, 1);
|
|
3621
|
+
}
|
|
3622
|
+
this.cdr.markForCheck();
|
|
3623
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Unlinked "${item.agent.Name}" successfully`, 'success', 3000);
|
|
3624
|
+
}
|
|
3625
|
+
else {
|
|
3626
|
+
throw new Error('Delete operation failed');
|
|
3627
|
+
}
|
|
3628
|
+
}
|
|
3629
|
+
catch (error) {
|
|
3630
|
+
console.error('Error unlinking related sub-agent:', error);
|
|
3631
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to unlink sub-agent', 'error', 3000);
|
|
3632
|
+
}
|
|
3633
|
+
}
|
|
3634
|
+
}
|
|
3635
|
+
catch (dialogError) {
|
|
3636
|
+
console.error('Error with dialog:', dialogError);
|
|
3637
|
+
}
|
|
3638
|
+
}
|
|
3639
|
+
/**
|
|
3640
|
+
* Removes a child sub-agent (updated to work with UnifiedSubAgent)
|
|
3641
|
+
*/
|
|
3642
|
+
async removeChildSubAgent(item, event) {
|
|
3643
|
+
// Delegate to existing removeSubAgent method
|
|
3644
|
+
await this.removeSubAgent(item.agent, event);
|
|
3645
|
+
}
|
|
3646
|
+
/**
|
|
3647
|
+
* Creates a new child sub-agent (renamed from createSubAgent for clarity)
|
|
3648
|
+
*/
|
|
3649
|
+
async createChildSubAgent() {
|
|
3650
|
+
await this.createSubAgent();
|
|
3651
|
+
}
|
|
3652
|
+
/**
|
|
3653
|
+
* Opens dialog to link an existing agent as a related sub-agent
|
|
3654
|
+
*/
|
|
3655
|
+
async linkRelatedSubAgent() {
|
|
3656
|
+
// TODO: Implement dialog to select existing agents and create relationship
|
|
3657
|
+
MJNotificationService.Instance.CreateSimpleNotification('Link related sub-agent dialog coming soon', 'info', 3000);
|
|
3658
|
+
}
|
|
3409
3659
|
/**
|
|
3410
3660
|
* Removes an action from the agent (deferred until save)
|
|
3411
3661
|
*/
|
|
@@ -3740,6 +3990,14 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
3740
3990
|
return false;
|
|
3741
3991
|
}
|
|
3742
3992
|
}
|
|
3993
|
+
/**
|
|
3994
|
+
* Navigates to the parent agent when the "Child of..." badge is clicked
|
|
3995
|
+
*/
|
|
3996
|
+
navigateToParentAgent() {
|
|
3997
|
+
if (this.record.ParentID) {
|
|
3998
|
+
this.navigateToEntity('AI Agents', this.record.ParentID);
|
|
3999
|
+
}
|
|
4000
|
+
}
|
|
3743
4001
|
/**
|
|
3744
4002
|
* Component cleanup - critical for preventing memory leaks
|
|
3745
4003
|
*/
|
|
@@ -3783,7 +4041,7 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
3783
4041
|
} if (rf & 2) {
|
|
3784
4042
|
let _t;
|
|
3785
4043
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSectionContainer = _t.first);
|
|
3786
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [["form", "ngForm"], ["customSectionContainer", ""], [1, "record-form-container"], ["kendoDialogContainer", ""], ["kendoWindowContainer", ""], ["class", "record-form", 4, "ngIf"], [1, "record-form"], [3, "form"], [1, "agent-header"], [1, "agent-header-content"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent"], [1, "agent-actions"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "keepItemContent"], [3, "expanded"], [3, "expanded", "disabled"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-sitemap"], ["kendoButton", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["kendoButton", "", "size", "large", "title", "Manage permissions", 3, "click"], [1, "fa-solid", "fa-lock"], [3, "stateChange", "expanded"], [1, "fa-solid", "fa-puzzle-piece"], [1, "panel-content", "custom-agent-type-section"], [1, "fa-solid", "fa-history"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "12px"], [1, "panel-content", "execution-history-panel"], [1, "empty-state"], [1, "execution-history-list"], [1, "execution-card", 3, "expanded"], [1, "view-more-item"], [1, "execution-card"], [1, "execution-header", 3, "click"], [1, "execution-left-section"], [1, "execution-status"], [1, "status-indicator"], [1, "execution-info"], [1, "execution-title"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "execution-date"], [1, "execution-metrics"], [1, "metric-item"], [1, "execution-actions"], ["title", "View details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "execution-expanded-content"], [1, "fa-solid", "fa-cog"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-stopwatch"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-microchip"], [1, "fa-solid", "fa-dollar-sign"], [1, "detailed-metrics"], [1, "metrics-grid"], [1, "metric-detail"], [1, "metric-info"], [1, "metric-title"], [1, "metric-data"], [1, "result-section"], [1, "error-section"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-calculator"], [1, "fa-solid", "fa-comments"], [1, "fa-solid", "fa-file-text"], ["language", "json", 2, "max-height", "200px", "width", "100%", 3, "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "view-more-item", 3, "click"], [1, "fa-solid", "fa-bolt"], [1, "panel-content"], [1, "loading-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "section-header"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", "size", "small"], [1, "entity-list"], ["kendoButton", "", "themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", "themeColor", "primary"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "entity-item", "action-item"], [1, "entity-item", "action-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "status-tag"], [1, "fa-solid"], [1, "item-actions"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action"], [1, "fa-solid", "fa-external-link"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "section-description"], ["kendoButton", "", "themeColor", "secondary", "size", "small", 3, "click"], ["kendoButton", "", "themeColor", "secondary", 3, "click"], [1, "entity-item", "sub-agent-item"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "sub-agent-logo", 3, "src", "alt"], [1, "status-tag", 3, "background-color"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove sub-agent"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings", 3, "click"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove sub-agent", 3, "click"], [1, "prompt-controls"], [1, "model-selection-mode"], [1, "model-selection-label"], [1, "fa-solid", "fa-sliders"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModel", "data", "valuePrimitive"], [1, "model-selection-value"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "entity-item", "prompt-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt", 3, "click"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "fa-solid", "fa-exchange-alt"], [1, "payload-section"], [1, "payload-section-title"], [1, "fa-solid", "fa-target"], [1, "payload-field-container"], [1, "payload-field-info"], [1, "payload-field-label"], [1, "payload-field-description"], [1, "payload-field-input"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], [1, "payload-field-example"], [1, "fa-solid", "fa-lightbulb"], [1, "fa-solid", "fa-route"], [1, "payload-paths-grid"], [1, "payload-path-card"], [1, "payload-path-header"], [1, "payload-path-icon", "downstream"], [1, "fa-solid", "fa-arrow-down"], [1, "payload-path-info"], [1, "payload-path-content"], [1, "json-editor-container"], ["language", "json", 2, "height", "100px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "payload-path-hint"], [1, "fa-solid", "fa-info-circle"], [1, "payload-path-icon", "upstream"], [1, "fa-solid", "fa-arrow-up"], [1, "payload-path-icon", "self-read"], [1, "fa-solid", "fa-eye"], [1, "payload-path-icon", "self-write"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-shield-check"], [1, "payload-validation-container"], [1, "payload-validation-settings"], [1, "validation-field-group"], [1, "validation-field-label"], [1, "validation-field-description"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], [1, "payload-validation-schema"], [1, "validation-schema-label"], [1, "fa-solid", "fa-code"], [1, "validation-schema-description"], [1, "validation-schema-editor"], ["language", "json", 2, "height", "200px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-shield-halved"], [1, "form-fields-grid"], ["FieldName", "MaxCostPerRun", "Type", "numerictextbox", "Caption", "Max Cost ($)", "Description", "Maximum cost per run", 3, "EditMode", "record"], ["FieldName", "MaxTokensPerRun", "Type", "numerictextbox", "Caption", "Max Tokens", "Description", "Maximum tokens per run", 3, "EditMode", "record"], ["FieldName", "MaxIterationsPerRun", "Type", "numerictextbox", "Caption", "Max Iterations", "Description", "Maximum prompt iterations", 3, "EditMode", "record"], ["FieldName", "MaxTimePerRun", "Type", "numerictextbox", "Caption", "Max Time (seconds)", "Description", "Maximum execution time", 3, "EditMode", "record"], [1, "fa-solid", "fa-cogs"], [1, "config-section"], [1, "config-section-title"], [1, "fa-solid", "fa-id-card"], [1, "config-grid"], [1, "config-card"], [1, "config-card-header"], [1, "config-card-icon"], [1, "fa-solid", "fa-toggle-on"], [1, "config-card-info"], [1, "config-card-content"], ["textField", "text", "valueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModel", "data", "valuePrimitive"], [1, "config-field-display"], ["textField", "Name", "valueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModel", "data", "valuePrimitive"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "", 3, "EditMode", "record"], [1, "config-card", "full-width"], [1, "fa-solid", "fa-align-left"], ["FieldName", "Description", "Type", "textarea", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], [1, "fa-solid", "fa-layer-group"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "record"], ["textField", "text", "valueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], ["textField", "Name", "valueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "fa-solid", "fa-hashtag"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-save"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "prompt-selector-container"], [1, "prompt-display"], [1, "prompt-name"], [1, "no-prompt"], [1, "prompt-actions"], ["type", "button", "kendoButton", "", "fillMode", "outline", "size", "small", 1, "prompt-select-btn", 3, "click"], [1, "fa-solid", "fa-search"], ["type", "button", "kendoButton", "", "fillMode", "flat", "size", "small", "title", "Clear selection", 1, "prompt-clear-btn"], ["type", "button", "kendoButton", "", "fillMode", "flat", "size", "small", "title", "Clear selection", 1, "prompt-clear-btn", 3, "click"], [1, "fa-solid", "fa-times"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
4044
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [["form", "ngForm"], ["customSectionContainer", ""], [1, "record-form-container"], ["kendoDialogContainer", ""], ["kendoWindowContainer", ""], ["class", "record-form", 4, "ngIf"], [1, "record-form"], [3, "form"], [1, "agent-header"], [1, "agent-header-content"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent", "clickable", 3, "title"], [1, "agent-actions"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "keepItemContent"], [3, "expanded"], [3, "expanded", "disabled"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "parent-agent", "clickable", 3, "click", "title"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-external-link", 2, "margin-left", "4px", "font-size", "10px"], ["kendoButton", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["kendoButton", "", "size", "large", "title", "Manage permissions", 3, "click"], [1, "fa-solid", "fa-lock"], [3, "stateChange", "expanded"], [1, "fa-solid", "fa-puzzle-piece"], [1, "panel-content", "custom-agent-type-section"], [1, "fa-solid", "fa-history"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "12px"], [1, "panel-content", "execution-history-panel"], [1, "empty-state"], [1, "execution-history-list"], [1, "execution-card", 3, "expanded"], [1, "view-more-item"], [1, "execution-card"], [1, "execution-header", 3, "click"], [1, "execution-left-section"], [1, "execution-status"], [1, "status-indicator"], [1, "execution-info"], [1, "execution-title"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "execution-date"], [1, "execution-metrics"], [1, "metric-item"], [1, "execution-actions"], ["title", "View details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "execution-expanded-content"], [1, "fa-solid", "fa-cog"], [1, "metric-label"], [1, "metric-value"], [1, "fa-solid", "fa-stopwatch"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-microchip"], [1, "fa-solid", "fa-dollar-sign"], [1, "detailed-metrics"], [1, "metrics-grid"], [1, "metric-detail"], [1, "metric-info"], [1, "metric-title"], [1, "metric-data"], [1, "result-section"], [1, "error-section"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-calculator"], [1, "fa-solid", "fa-comments"], [1, "fa-solid", "fa-file-text"], ["language", "json", 2, "max-height", "200px", "width", "100%", 3, "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "view-more-item", 3, "click"], [1, "fa-solid", "fa-bolt"], [1, "panel-content"], [1, "loading-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "section-header"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", "size", "small"], [1, "entity-list"], ["kendoButton", "", "themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", "themeColor", "primary"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "entity-item", "action-item"], [1, "entity-item", "action-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "status-tag"], [1, "fa-solid"], [1, "item-actions"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action"], [1, "fa-solid", "fa-external-link"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "section-header", "sub-agent-filter-header"], [1, "filter-controls"], ["selection", "single"], ["kendoButton", "", "size", "small", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-share-nodes"], ["kendoButton", "", "themeColor", "primary", "size", "small", "title", "Create a new child sub-agent that shares this agent's payload", 3, "click"], ["kendoButton", "", "themeColor", "secondary", "size", "small", "title", "Link an existing agent as a related sub-agent with payload mapping", 3, "click"], [1, "empty-state-info"], [1, "info-card"], [1, "fa-solid", "fa-link", 2, "color", "#2196F3"], [1, "fa-solid", "fa-share-nodes", 2, "color", "#9C27B0"], [1, "empty-state-actions"], ["kendoButton", "", "themeColor", "secondary", 3, "click"], [1, "entity-item", "sub-agent-item", 3, "child-sub-agent", "related-sub-agent"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "sub-agent-type-badge"], [1, "sub-agent-logo", 3, "src", "alt"], [1, "meta-tag", "payload-info"], [1, "fa-solid", "fa-database"], [1, "status-tag", 3, "background-color"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Configure output mapping"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", 3, "title"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Configure output mapping", 3, "click"], [1, "fa-solid", "fa-exchange-alt"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings", 3, "click"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", 3, "click", "title"], [1, "prompt-controls"], [1, "model-selection-mode"], [1, "model-selection-label"], [1, "fa-solid", "fa-sliders"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModel", "data", "valuePrimitive"], [1, "model-selection-value"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "entity-item", "prompt-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt", 3, "click"], [1, "fa-solid", "fa-brain"], [1, "section-description"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "payload-section"], [1, "payload-section-title"], [1, "fa-solid", "fa-target"], [1, "payload-field-container"], [1, "payload-field-info"], [1, "payload-field-label"], [1, "payload-field-description"], [1, "payload-field-input"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], [1, "payload-field-example"], [1, "fa-solid", "fa-lightbulb"], [1, "fa-solid", "fa-route"], [1, "payload-paths-grid"], [1, "payload-path-card"], [1, "payload-path-header"], [1, "payload-path-icon", "downstream"], [1, "fa-solid", "fa-arrow-down"], [1, "payload-path-info"], [1, "payload-path-content"], [1, "json-editor-container"], ["language", "json", 2, "height", "100px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "payload-path-hint"], [1, "fa-solid", "fa-info-circle"], [1, "payload-path-icon", "upstream"], [1, "fa-solid", "fa-arrow-up"], [1, "payload-path-icon", "self-read"], [1, "fa-solid", "fa-eye"], [1, "payload-path-icon", "self-write"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-shield-check"], [1, "payload-validation-container"], [1, "payload-validation-settings"], [1, "validation-field-group"], [1, "validation-field-label"], [1, "validation-field-description"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], [1, "payload-validation-schema"], [1, "validation-schema-label"], [1, "fa-solid", "fa-code"], [1, "validation-schema-description"], [1, "validation-schema-editor"], ["language", "json", 2, "height", "200px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-shield-halved"], [1, "form-fields-grid"], ["FieldName", "MaxCostPerRun", "Type", "numerictextbox", "Caption", "Max Cost ($)", "Description", "Maximum cost per run", 3, "EditMode", "record"], ["FieldName", "MaxTokensPerRun", "Type", "numerictextbox", "Caption", "Max Tokens", "Description", "Maximum tokens per run", 3, "EditMode", "record"], ["FieldName", "MaxIterationsPerRun", "Type", "numerictextbox", "Caption", "Max Iterations", "Description", "Maximum prompt iterations", 3, "EditMode", "record"], ["FieldName", "MaxTimePerRun", "Type", "numerictextbox", "Caption", "Max Time (seconds)", "Description", "Maximum execution time", 3, "EditMode", "record"], [1, "fa-solid", "fa-cogs"], [1, "config-section"], [1, "config-section-title"], [1, "fa-solid", "fa-id-card"], [1, "config-grid"], [1, "config-card"], [1, "config-card-header"], [1, "config-card-icon"], [1, "fa-solid", "fa-toggle-on"], [1, "config-card-info"], [1, "config-card-content"], ["textField", "text", "valueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModel", "data", "valuePrimitive"], [1, "config-field-display"], ["textField", "Name", "valueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModel", "data", "valuePrimitive"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "", 3, "EditMode", "record"], [1, "config-card", "full-width"], [1, "fa-solid", "fa-align-left"], ["FieldName", "Description", "Type", "textarea", "Caption", "", 2, "width", "100%", 3, "EditMode", "record"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-sort-numeric-down"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-tachometer-alt"], ["FieldName", "DefaultPromptEffortLevel", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "config-card-hint"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-icons"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-image"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "", 3, "valueChange", "EditMode", "record"], ["textField", "text", "valueField", "value", "name", "agentStatus", 1, "config-field-input", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], ["textField", "Name", "valueField", "ID", "name", "agentTypeID", 1, "config-field-input", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "fa-solid", "fa-hashtag"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "fa-solid", "fa-save"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "", 3, "EditMode", "record"], [1, "prompt-selector-container"], [1, "prompt-display"], [1, "prompt-name"], [1, "no-prompt"], [1, "prompt-actions"], ["type", "button", "kendoButton", "", "fillMode", "outline", "size", "small", 1, "prompt-select-btn", 3, "click"], [1, "fa-solid", "fa-search"], ["type", "button", "kendoButton", "", "fillMode", "flat", "size", "small", "title", "Clear selection", 1, "prompt-clear-btn"], ["type", "button", "kendoButton", "", "fillMode", "flat", "size", "small", "title", "Clear selection", 1, "prompt-clear-btn", 3, "click"], [1, "fa-solid", "fa-times"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3787
4045
|
i0.ɵɵelementStart(0, "div", 2);
|
|
3788
4046
|
i0.ɵɵelement(1, "div", 3)(2, "div", 4);
|
|
3789
4047
|
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_3_Template, 38, 18, "form", 5);
|
|
@@ -3791,7 +4049,7 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
3791
4049
|
} if (rf & 2) {
|
|
3792
4050
|
i0.ɵɵadvance(3);
|
|
3793
4051
|
i0.ɵɵproperty("ngIf", ctx.record);
|
|
3794
|
-
} }, dependencies: [i6.NgIf, i7.ɵNgNoValidate, i7.NgControlStatus, i7.NgControlStatusGroup, i7.NgModel, i7.NgForm, i8.PanelBarComponent, i8.PanelBarItemComponent, i8.PanelBarContentDirective, i8.PanelBarItemTitleDirective, i3.DialogContainerDirective, i3.WindowContainerDirective, i9.TextBoxComponent, i10.DropDownListComponent, i11.ButtonComponent, i12.MJFormField, i13.FormToolbarComponent, i14.CodeEditorComponent, i6.DatePipe], styles: ["\n\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] img.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\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.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n\n\n.prompt-controls[_ngcontent-%COMP%] {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: #5a6268;\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n\n\n .k-panelbar {\n border: none;\n background: transparent;\n}\n\n .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: white;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; \n\n}\n\n\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #64748b;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #2196f3;\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #94a3b8;\n}\n\n.empty-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 font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.item-icon[_ngcontent-%COMP%] img.sub-agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.payload-config-section[_ngcontent-%COMP%], \n.payload-paths-section[_ngcontent-%COMP%], \n.payload-validation-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.subsection-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.subsection-divider[_ngcontent-%COMP%] {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: #2196f3;\n}\n\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: #6c757d;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n\n.timeline-expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.result-content[_ngcontent-%COMP%], \n.error-content[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n\n\n.result-section[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n \n \n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n \n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n \n\n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n \n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n \n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n \n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n \n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n \n \n\n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n \n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n \n \n\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n\n\n.execution-history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.execution-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded[_ngcontent-%COMP%] {\n border-color: #2196f3;\n box-shadow: 0 6px 20px rgba(33, 150, 243, 0.15);\n}\n\n.execution-header[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n.execution-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; \n\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: #f8f9fa;\n padding: 6px 10px;\n border-radius: 6px;\n color: #495057;\n white-space: nowrap;\n}\n\n.metric-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 12px;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #2c3e50;\n}\n\n.execution-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: #f8f9fa;\n border-radius: 6px;\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.action-btn[_ngcontent-%COMP%]:hover {\n background: #2196f3;\n color: white;\n transform: translateY(-1px);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n color: #6c757d;\n margin-right: 4px;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.execution-expanded-content[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid #f0f4f8;\n background: #fafbfc;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n}\n\n.metric-detail[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.result-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #721c24;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n\n\n@media (max-width: 768px) {\n .execution-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .execution-left-section[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .execution-metrics[_ngcontent-%COMP%] {\n margin-left: 0; \n\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n \n .metric-item[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 4px 8px;\n }\n \n .metrics-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.payload-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.payload-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n\n\n.payload-field-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.payload-field-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: #6c757d;\n background: #f8f9fa;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.payload-field-example[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #ffc107;\n font-size: 0.9rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: #495057;\n}\n\n\n\n.payload-paths-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.payload-path-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.payload-path-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #28a745, #20c997);\n}\n\n.payload-path-icon.upstream[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #007bff, #6610f2);\n}\n\n.payload-path-icon.self-read[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #17a2b8, #20c997);\n}\n\n.payload-path-icon.self-write[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #fd7e14);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 1.2rem;\n}\n\n.payload-path-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.payload-path-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n\n.payload-validation-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.validation-field-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.validation-schema-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n\n\n.config-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.config-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.config-card.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 1.2rem;\n}\n\n.config-card-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.config-card-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.config-card-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n\n\n.config-field-input[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 250px;\n}\n\n\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-field-display[_ngcontent-%COMP%] {\n color: #495057;\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n\n\n.prompt-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n color: #6c757d;\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.prompt-clear-btn[_ngcontent-%COMP%] {\n min-width: 32px;\n}\n\n.config-card-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n\n\n@media (max-width: 768px) {\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n \n .payload-paths-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .payload-section-title[_ngcontent-%COMP%], \n .config-section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .payload-path-header[_ngcontent-%COMP%], \n .config-card-header[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n \n .payload-path-content[_ngcontent-%COMP%], \n .config-card-content[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n \n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n}"] }); }
|
|
4052
|
+
} }, dependencies: [i6.NgIf, i7.ɵNgNoValidate, i7.NgControlStatus, i7.NgControlStatusGroup, i7.NgModel, i7.NgForm, i8.PanelBarComponent, i8.PanelBarItemComponent, i8.PanelBarContentDirective, i8.PanelBarItemTitleDirective, i3.DialogContainerDirective, i3.WindowContainerDirective, i9.TextBoxComponent, i10.DropDownListComponent, i11.ButtonGroupComponent, i11.ButtonComponent, i12.MJFormField, i13.FormToolbarComponent, i14.CodeEditorComponent, i6.DatePipe], styles: ["\n\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] img.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\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.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:hover {\n background: #e3e7ed;\n color: #2196f3;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.parent-agent.clickable[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n}\n\n\n\n.prompt-controls[_ngcontent-%COMP%] {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: #5a6268;\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n\n\n .k-panelbar {\n border: none;\n background: transparent;\n}\n\n .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: white;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; \n\n}\n\n\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #64748b;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #2196f3;\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #94a3b8;\n}\n\n.empty-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 font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.item-icon[_ngcontent-%COMP%] img.sub-agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.payload-config-section[_ngcontent-%COMP%], \n.payload-paths-section[_ngcontent-%COMP%], \n.payload-validation-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.subsection-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.subsection-divider[_ngcontent-%COMP%] {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n\n\n.payload-field-group[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: #2196f3;\n}\n\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: #6c757d;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n\n.timeline-expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.result-content[_ngcontent-%COMP%], \n.error-content[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n\n\n.result-section[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n \n \n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n \n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n \n\n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n \n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n \n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n \n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n \n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n \n \n\n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n \n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n \n \n\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n\n\n.execution-history-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.execution-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded[_ngcontent-%COMP%] {\n border-color: #2196f3;\n box-shadow: 0 6px 20px rgba(33, 150, 243, 0.15);\n}\n\n.execution-header[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n.execution-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; \n\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: #f8f9fa;\n padding: 6px 10px;\n border-radius: 6px;\n color: #495057;\n white-space: nowrap;\n}\n\n.metric-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 12px;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #2c3e50;\n}\n\n.execution-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: #f8f9fa;\n border-radius: 6px;\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.action-btn[_ngcontent-%COMP%]:hover {\n background: #2196f3;\n color: white;\n transform: translateY(-1px);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n color: #6c757d;\n margin-right: 4px;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n\n\n.execution-expanded-content[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid #f0f4f8;\n background: #fafbfc;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n}\n\n.metric-detail[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.result-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #721c24;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n\n\n@media (max-width: 768px) {\n .execution-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .execution-left-section[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .execution-metrics[_ngcontent-%COMP%] {\n margin-left: 0; \n\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n \n .metric-item[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 4px 8px;\n }\n \n .metrics-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n.payload-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.payload-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n\n\n.payload-field-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.payload-field-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: #6c757d;\n background: #f8f9fa;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.payload-field-example[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #ffc107;\n font-size: 0.9rem;\n}\n\n.payload-field-example[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: #495057;\n}\n\n\n\n.payload-paths-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.payload-path-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.payload-path-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #28a745, #20c997);\n}\n\n.payload-path-icon.upstream[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #007bff, #6610f2);\n}\n\n.payload-path-icon.self-read[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #17a2b8, #20c997);\n}\n\n.payload-path-icon.self-write[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #fd7e14);\n}\n\n.payload-path-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 1.2rem;\n}\n\n.payload-path-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.payload-path-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n\n.payload-validation-container[_ngcontent-%COMP%] {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.validation-field-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.validation-schema-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%] {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n}\n\n\n\n.config-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.config-section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.config-card.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.config-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 1.2rem;\n}\n\n.config-card-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.config-card-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.config-card-content[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n\n\n.config-field-input[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 250px;\n}\n\n\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content[_ngcontent-%COMP%] mj-form-field kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-field-display[_ngcontent-%COMP%] {\n color: #495057;\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n\n\n.prompt-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n}\n\n.prompt-name[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n color: #6c757d;\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.prompt-clear-btn[_ngcontent-%COMP%] {\n min-width: 32px;\n}\n\n.config-card-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n\n\n@media (max-width: 768px) {\n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n \n .payload-paths-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .config-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .payload-section-title[_ngcontent-%COMP%], \n .config-section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .payload-path-header[_ngcontent-%COMP%], \n .config-card-header[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n \n .payload-path-content[_ngcontent-%COMP%], \n .config-card-content[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n \n .payload-field-container[_ngcontent-%COMP%], \n .payload-validation-container[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n}\n\n\n\n\n\n\n\n\n.sub-agent-filter-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.filter-controls[_ngcontent-%COMP%] kendo-buttongroup[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n}\n\n\n\n.sub-agent-type-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n\n\n.sub-agent-item[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid #2196F3;\n}\n\n.sub-agent-item.related-sub-agent[_ngcontent-%COMP%] {\n border-left: 4px solid #9C27B0;\n}\n\n.sub-agent-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n\n\n.payload-info[_ngcontent-%COMP%] {\n background: #f5f5f5;\n color: #666;\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n\n\n.empty-state-info[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card[_ngcontent-%COMP%] {\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: #666;\n}\n\n.empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .sub-agent-filter-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls[_ngcontent-%COMP%], \n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: center;\n }\n \n .empty-state-info[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] }); }
|
|
3795
4053
|
};
|
|
3796
4054
|
AIAgentFormComponentExtended = __decorate([
|
|
3797
4055
|
RegisterClass(BaseFormComponent, 'AI Agents')
|
|
@@ -3799,12 +4057,12 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
3799
4057
|
export { AIAgentFormComponentExtended };
|
|
3800
4058
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
3801
4059
|
type: Component,
|
|
3802
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <!-- Window container for Kendo windows -->\n <div kendoWindowContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Compact Header with Agent Overview -->\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n class=\"agent-name-input\">\n </kendo-textbox>\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.Type) {\n <span class=\"execution-mode\">\n Agent Type: {{ record.Type }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button kendoButton themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n <button kendoButton size=\"large\" \n (click)=\"openPermissionsDialog()\" \n title=\"Manage permissions\"\n >\n <i class=\"fa-solid fa-lock\"></i>\n Permissions\n </button>\n }\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <!-- Custom Agent Type Section (if defined) -->\n @if (record.ID && agentType && agentType.UIFormSectionKey) {\n <kendo-panelbar-item \n [expanded]=\"agentType.UIFormSectionExpandedByDefault\" \n (stateChange)=\"onCustomSectionStateChange($event)\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-puzzle-piece\"></i> {{ agentType.Name }} Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content custom-agent-type-section\" [style.display]=\"'block'\">\n <ng-container #customSectionContainer></ng-container>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.executionHistory\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History\n @if (loadingStates.executionHistory) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (executionHistoryCount > 0) {\n <span> ({{ executionHistoryCount }})@if(executionHistoryCount < totalExecutionHistoryCount){ of {{ totalExecutionHistoryCount }} }</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n \n @if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\n } @else {\n <div class=\"execution-history-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"execution-card\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n </div>\n <div class=\"execution-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n \n <div class=\"execution-metrics\">\n @if (execution.Configuration) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <span class=\"metric-label\">Config:</span>\n <span class=\"metric-value\">{{ execution.Configuration }}</span>\n </div>\n }\n \n @if (execution.CompletedAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}</span>\n </div>\n } @else if (execution.Status === 'Running') {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span class=\"metric-label\">Running:</span>\n <!-- <span class=\"metric-value\">{{ execution.StartedAt | runningTime }}</span> -->\n </div>\n }\n \n @if (execution.TotalTokensUsedRollup || execution.TotalTokensUsed) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"metric-label\">Tokens:</span>\n <span class=\"metric-value\">{{ formatTokenCount(execution.TotalTokensUsedRollup || execution.TotalTokensUsed) }}</span>\n </div>\n }\n \n @if (execution.TotalCostRollup || execution.TotalCost) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <span class=\"metric-label\">Cost:</span>\n <span class=\"metric-value\">${{ formatCost(execution.TotalCostRollup || execution.TotalCost) }}</span>\n </div>\n }\n </div>\n </div>\n \n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\" title=\"View details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"execution-expanded-content\">\n <!-- Detailed Metrics -->\n <div class=\"detailed-metrics\">\n <div class=\"metrics-grid\">\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Started</span>\n <span class=\"metric-data\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n </div>\n \n @if (execution.CompletedAt) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Completed</span>\n <span class=\"metric-data\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-microchip\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Tokens</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsed) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalTokensUsedRollup && execution.TotalTokensUsedRollup !== execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsedRollup) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Cost</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCost) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalCostRollup && execution.TotalCostRollup !== execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-calculator\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCostRollup) }}</span>\n </div>\n </div>\n }\n \n @if (execution.ConversationID) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-comments\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Conversation</span>\n <span class=\"metric-data\">{{ execution.ConversationID.substring(0, 8) }}...</span>\n </div>\n </div>\n }\n </div>\n </div>\n \n @if (execution.Result) {\n <div class=\"result-section\">\n <h5><i class=\"fa-solid fa-file-text\"></i> Result</h5>\n <mj-code-editor \n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n \n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n </div>\n }\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\">\n <span>View all {{ executionHistoryCount }} executions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Actions -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.actions\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions\n @if (loadingStates.actions) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (actionCount > 0) {\n <span> ({{ actionCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (loadingStates.actions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading actions...</p>\n </div>\n } @else {\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n \n @if (actionCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.subAgents\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents\n @if (loadingStates.subAgents) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (subAgentCount > 0) {\n <span> ({{ subAgentCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage hierarchical relationships with child agents that work under this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create Sub-Agent\n </button>\n }\n </div>\n </div>\n \n @if (subAgentCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Create sub-agents to build a hierarchical structure for complex workflows.</p>\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (subAgent of subAgents; track subAgent.ID) {\n <div class=\"entity-item sub-agent-item\" (click)=\"navigateToEntity('AI Agents', subAgent.ID)\">\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(subAgent)) {\n <img [src]=\"subAgent.LogoURL\" [alt]=\"subAgent.Name + ' logo'\" class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(subAgent)\"></i>\n }\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ subAgent.Name || 'Untitled Sub-Agent' }}</div>\n @if (subAgent.Description) {\n <div class=\"item-preview\">{{ subAgent.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (subAgent.Status) {\n <span class=\"status-tag\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ subAgent.Status }}\n </span>\n }\n @if (subAgent.ExecutionMode) {\n <span class=\"meta-tag\">{{ subAgent.ExecutionMode }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openSubAgentAdvancedSettings(subAgent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeleteSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeSubAgent(subAgent, $event)\"\n title=\"Remove sub-agent\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (subAgentCount > subAgents.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agents', '')\">\n <span>View all {{ subAgentCount }} sub-agents...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.prompts\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts\n @if (loadingStates.prompts) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (promptCount > 0) {\n <span> ({{ promptCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [data]=\"modelSelectionModes\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n \n @if (promptCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.learningCycles\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\n @if (loadingStates.learningCycles) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n \n @if (learningCycleCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.notes\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\n @if (loadingStates.notes) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n \n @if (noteCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n\n <!-- Payload -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-exchange-alt\"></i> Payload Management\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads, path routing, and validation between parent and child agents.\n </div>\n </div>\n \n <!-- Payload Scope Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-target\"></i>\n Payload Scope\n </h3>\n \n <div class=\"payload-field-container\">\n <div class=\"payload-field-info\">\n <label class=\"payload-field-label\">Payload Scope Path</label>\n <p class=\"payload-field-description\">\n Specify a path within the parent payload that this sub-agent should operate on. \n Leave empty to receive the entire payload.\n </p>\n </div>\n \n <div class=\"payload-field-input\">\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n <div class=\"payload-field-example\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Example: <code>/customer/profile</code> or <code>/analysis/results</code></span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Path Configuration Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-route\"></i>\n Path Configuration\n </h3>\n \n <div class=\"payload-paths-grid\">\n <!-- Downstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon downstream\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Downstream Paths</h4>\n <p>JSON array of paths to pass to sub-agents</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to pass entire payload or specify paths like <code>[\"user.id\", \"order.*\"]</code>\n </div>\n </div>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon upstream\">\n <i class=\"fa-solid fa-arrow-up\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Upstream Paths</h4>\n <p>JSON array of paths sub-agents can write back</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to allow all writes or limit to specific paths\n </div>\n </div>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-read\">\n <i class=\"fa-solid fa-eye\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Read Paths</h4>\n <p>JSON array of paths this agent can read</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can read from the payload\n </div>\n </div>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-write\">\n <i class=\"fa-solid fa-pen\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Write Paths</h4>\n <p>JSON array of paths this agent can write to</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can write back to the payload\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Validation Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Final Payload Validation\n </h3>\n \n <div class=\"payload-validation-container\">\n <div class=\"payload-validation-settings\">\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Validation Mode</label>\n <p class=\"validation-field-description\">How to handle validation failures</p>\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n \n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Max Retries</label>\n <p class=\"validation-field-description\">Maximum validation retry attempts</p>\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n \n <div class=\"payload-validation-schema\">\n <label class=\"validation-schema-label\">\n <i class=\"fa-solid fa-code\"></i>\n Validation Schema\n </label>\n <p class=\"validation-schema-description\">\n JSON schema or validation rules for the final payload structure\n </p>\n <div class=\"validation-schema-editor\">\n <mj-code-editor \n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n <!-- Execution Guardrails (New Separate Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"MaxCostPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTokensPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxIterationsPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTimePerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n <!-- Configuration (Settings Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-cogs\"></i> Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure agent behavior, execution settings, and advanced features.\n </div>\n </div>\n \n <!-- Identity & Behavior Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-id-card\"></i>\n Identity & Behavior\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Status</h4>\n <p>Current availability and operational status</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <kendo-dropdownlist \n [(ngModel)]=\"record.Status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n name=\"agentStatus\"\n class=\"config-field-input\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"config-field-display\">{{ record.Status || 'Not Set' }}</span>\n }\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Type</h4>\n <p>Category and system-level behavior</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <kendo-dropdownlist \n [(ngModel)]=\"record.TypeID\"\n [data]=\"agentTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n name=\"agentTypeID\"\n class=\"config-field-input\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"config-field-display\">{{ record.Type || 'Not Set' }}</span>\n }\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Expose as Action</h4>\n <p>Make available as an action for other agents</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-align-left\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Description</h4>\n <p>Detailed agent description and purpose</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Execution Settings Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Settings\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Mode</h4>\n <p>How sub-agents are executed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sort-numeric-down\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Order</h4>\n <p>Order when run with siblings</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Default Effort Level</h4>\n <p>Default effort level for all prompts (1-100)</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"DefaultPromptEffortLevel\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Higher values request more thorough reasoning (1=minimal, 100=maximum)\n </div>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-code\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Driver Class</h4>\n <p>Custom implementation class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Visual Identity Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-palette\"></i>\n Visual Identity\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-icons\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Icon Class</h4>\n <p>Font Awesome icon class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Example: <code>fa-solid fa-robot</code>\n </div>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-image\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Logo URL</h4>\n <p>URL for agent logo image</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Takes precedence over Icon Class\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Context Compression Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-compress\"></i>\n Context Compression\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Enable Context Compression</h4>\n <p>Automatically compress conversation context when message threshold is reached</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n </div>\n </div>\n\n @if (record.EnableContextCompression) {\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-hashtag\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Message Threshold</h4>\n <p>Messages before compression triggers</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-save\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Messages to Keep</h4>\n <p>Recent messages to retain uncompressed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Compression Prompt</h4>\n <p>Prompt used for summarization</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <div class=\"prompt-selector-container\">\n <div class=\"prompt-display\">\n @if (selectedContextCompressionPrompt) {\n <span class=\"prompt-name\">{{ selectedContextCompressionPrompt.Name }}</span>\n } @else {\n <span class=\"no-prompt\">No prompt selected</span>\n }\n </div>\n <div class=\"prompt-actions\">\n <button type=\"button\" \n kendoButton \n fillMode=\"outline\" \n size=\"small\"\n (click)=\"openContextCompressionPromptSelector()\"\n class=\"prompt-select-btn\">\n <i class=\"fa-solid fa-search\"></i>\n {{ selectedContextCompressionPrompt ? 'Change' : 'Select' }} Prompt\n </button>\n @if (selectedContextCompressionPrompt) {\n <button type=\"button\" \n kendoButton \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"clearContextCompressionPrompt()\"\n class=\"prompt-clear-btn\"\n title=\"Clear selection\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n } @else {\n <span class=\"config-field-display\">{{ selectedContextCompressionPrompt?.Name || record.ContextCompressionPrompt || 'Not Set' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n\n </kendo-panelbar>\n </div>\n </form>\n\n</div>", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper i {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\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.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary:hover {\n background: #1976d2;\n}\n\n.action-button.secondary {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary:hover {\n background: #5a6268;\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n/* Kendo PanelBar Styling */\n::ng-deep .k-panelbar {\n border: none;\n background: transparent;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n::ng-deep .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n::ng-deep .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: white;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n color: #64748b;\n}\n\n.loading-state i {\n font-size: 36px;\n color: #2196f3;\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 14px;\n color: #94a3b8;\n}\n\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item .item-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item .item-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item .item-icon {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item .item-icon {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item .item-icon {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon i {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: white;\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: #2196f3;\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: #2196f3;\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker i {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card .card-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card .card-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon i {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: white;\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: #2196f3;\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: #6c757d;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.result-content,\n.error-content {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n \n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button {\n flex: 1;\n justify-content: center;\n }\n \n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n \n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content {\n padding: 20px 16px;\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon {\n width: 36px;\n height: 36px;\n }\n \n .item-icon i {\n font-size: 16px;\n }\n \n .item-title {\n font-size: 15px;\n }\n \n .item-preview {\n font-size: 13px;\n }\n \n .item-meta {\n gap: 8px;\n }\n \n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker i {\n font-size: 12px;\n }\n \n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date {\n align-self: flex-start;\n }\n \n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n/* New Execution History Card Design */\n.execution-history-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.execution-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded {\n border-color: #2196f3;\n box-shadow: 0 6px 20px rgba(33, 150, 243, 0.15);\n}\n\n.execution-header {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.status-indicator i {\n color: white;\n font-size: 14px;\n}\n\n.execution-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date {\n font-size: 12px;\n color: #6c757d;\n}\n\n.execution-metrics {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; /* Align with execution title text, accounting for status indicator + gap */\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: #f8f9fa;\n padding: 6px 10px;\n border-radius: 6px;\n color: #495057;\n white-space: nowrap;\n}\n\n.metric-item i {\n color: #6c757d;\n font-size: 12px;\n}\n\n.metric-label {\n font-weight: 500;\n}\n\n.metric-value {\n font-weight: 600;\n color: #2c3e50;\n}\n\n.execution-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: #f8f9fa;\n border-radius: 6px;\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.action-btn:hover {\n background: #2196f3;\n color: white;\n transform: translateY(-1px);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.expand-icon {\n transition: transform 0.2s ease;\n color: #6c757d;\n margin-right: 4px;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n/* Execution Expanded Content */\n.execution-expanded-content {\n padding: 16px;\n border-top: 1px solid #f0f4f8;\n background: #fafbfc;\n animation: slideDown 0.2s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics {\n margin-bottom: 20px;\n}\n\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n}\n\n.metric-detail i {\n color: #2196f3;\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title {\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.result-section {\n margin-top: 16px;\n}\n\n.result-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.error-content {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #721c24;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n/* Responsive adjustments for execution history */\n@media (max-width: 768px) {\n .execution-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .execution-left-section {\n width: 100%;\n }\n \n .execution-metrics {\n margin-left: 0; /* Remove left margin on mobile */\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n \n .metric-item {\n font-size: 11px;\n padding: 4px 8px;\n }\n \n .metrics-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* === PAYLOAD MANAGEMENT SECTION === */\n.payload-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.payload-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title i {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n/* Payload Scope Styling */\n.payload-field-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.payload-field-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: #6c757d;\n background: #f8f9fa;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.payload-field-example i {\n color: #ffc107;\n font-size: 0.9rem;\n}\n\n.payload-field-example code {\n background: #e9ecef;\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: #495057;\n}\n\n/* Path Configuration Grid */\n.payload-paths-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.payload-path-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.payload-path-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream {\n background: linear-gradient(135deg, #28a745, #20c997);\n}\n\n.payload-path-icon.upstream {\n background: linear-gradient(135deg, #007bff, #6610f2);\n}\n\n.payload-path-icon.self-read {\n background: linear-gradient(135deg, #17a2b8, #20c997);\n}\n\n.payload-path-icon.self-write {\n background: linear-gradient(135deg, #ffc107, #fd7e14);\n}\n\n.payload-path-icon i {\n color: white;\n font-size: 1.2rem;\n}\n\n.payload-path-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.payload-path-info p {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-content {\n padding: 1rem;\n}\n\n.json-editor-container {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container:hover {\n border-color: #2196f3;\n}\n\n.payload-path-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-hint i {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint code {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n/* Payload Validation Container */\n.payload-validation-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.validation-field-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label i {\n color: #2196f3;\n}\n\n.validation-schema-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor:hover {\n border-color: #2196f3;\n}\n\n/* === CONFIGURATION SECTION === */\n.config-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.config-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title i {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.config-card.full-width {\n grid-column: 1 / -1;\n}\n\n.config-card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.config-card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon i {\n color: white;\n font-size: 1.2rem;\n}\n\n.config-card-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.config-card-info p {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.config-card-content {\n padding: 1rem;\n}\n\n/* Custom field styling for config cards */\n.config-field-input {\n width: 100%;\n min-width: 250px;\n}\n\n/* Fix numeric textbox cutoff issue */\n.config-card-content ::ng-deep kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-card-content ::ng-deep mj-form-field {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-field-display {\n color: #495057;\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n/* Prompt selector styling */\n.prompt-selector-container {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n}\n\n.prompt-name {\n color: #495057;\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt {\n color: #6c757d;\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn {\n white-space: nowrap;\n}\n\n.prompt-clear-btn {\n min-width: 32px;\n}\n\n.config-card-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint i {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint code {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n/* === RESPONSIVE DESIGN === */\n@media (max-width: 768px) {\n .payload-field-container,\n .payload-validation-container {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n \n .payload-paths-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .config-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .payload-section-title,\n .config-section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .payload-path-header,\n .config-card-header {\n padding: 0.75rem;\n }\n \n .payload-path-content,\n .config-card-content {\n padding: 0.75rem;\n }\n \n .payload-field-container,\n .payload-validation-container {\n padding: 1rem;\n }\n}\n\n"] }]
|
|
4060
|
+
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <!-- Window container for Kendo windows -->\n <div kendoWindowContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Compact Header with Agent Overview -->\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n class=\"agent-name-input\">\n </kendo-textbox>\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.Type) {\n <span class=\"execution-mode\">\n Agent Type: {{ record.Type }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent clickable\"\n (click)=\"navigateToParentAgent()\"\n title=\"Open parent agent: {{ record.Parent }}\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n <i class=\"fa-solid fa-external-link\" style=\"margin-left: 4px; font-size: 10px;\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button kendoButton themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n <button kendoButton size=\"large\" \n (click)=\"openPermissionsDialog()\" \n title=\"Manage permissions\"\n >\n <i class=\"fa-solid fa-lock\"></i>\n Permissions\n </button>\n }\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <!-- Custom Agent Type Section (if defined) -->\n @if (record.ID && agentType && agentType.UIFormSectionKey) {\n <kendo-panelbar-item \n [expanded]=\"agentType.UIFormSectionExpandedByDefault\" \n (stateChange)=\"onCustomSectionStateChange($event)\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-puzzle-piece\"></i> {{ agentType.Name }} Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content custom-agent-type-section\" [style.display]=\"'block'\">\n <ng-container #customSectionContainer></ng-container>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.executionHistory\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History\n @if (loadingStates.executionHistory) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (executionHistoryCount > 0) {\n <span> ({{ executionHistoryCount }})@if(executionHistoryCount < totalExecutionHistoryCount){ of {{ totalExecutionHistoryCount }} }</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n \n @if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\n } @else {\n <div class=\"execution-history-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"execution-card\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div class=\"execution-left-section\">\n <div class=\"execution-status\">\n <div class=\"status-indicator\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n </div>\n <div class=\"execution-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</div>\n </div>\n </div>\n \n <div class=\"execution-metrics\">\n @if (execution.Configuration) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <span class=\"metric-label\">Config:</span>\n <span class=\"metric-value\">{{ execution.Configuration }}</span>\n </div>\n }\n \n @if (execution.CompletedAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span class=\"metric-label\">Duration:</span>\n <span class=\"metric-value\">{{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}</span>\n </div>\n } @else if (execution.Status === 'Running') {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span class=\"metric-label\">Running:</span>\n <!-- <span class=\"metric-value\">{{ execution.StartedAt | runningTime }}</span> -->\n </div>\n }\n \n @if (execution.TotalTokensUsedRollup || execution.TotalTokensUsed) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-microchip\"></i>\n <span class=\"metric-label\">Tokens:</span>\n <span class=\"metric-value\">{{ formatTokenCount(execution.TotalTokensUsedRollup || execution.TotalTokensUsed) }}</span>\n </div>\n }\n \n @if (execution.TotalCostRollup || execution.TotalCost) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <span class=\"metric-label\">Cost:</span>\n <span class=\"metric-value\">${{ formatCost(execution.TotalCostRollup || execution.TotalCost) }}</span>\n </div>\n }\n </div>\n </div>\n \n <div class=\"execution-actions\">\n <button class=\"action-btn\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\" title=\"View details\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"execution-expanded-content\">\n <!-- Detailed Metrics -->\n <div class=\"detailed-metrics\">\n <div class=\"metrics-grid\">\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Started</span>\n <span class=\"metric-data\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n </div>\n \n @if (execution.CompletedAt) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Completed</span>\n <span class=\"metric-data\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-microchip\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Tokens</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsed) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalTokensUsedRollup && execution.TotalTokensUsedRollup !== execution.TotalTokensUsed) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">{{ formatTokenCount(execution.TotalTokensUsedRollup) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Direct Cost</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCost) }}</span>\n </div>\n </div>\n }\n \n @if (execution.TotalCostRollup && execution.TotalCostRollup !== execution.TotalCost) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-calculator\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Total + Sub-agents</span>\n <span class=\"metric-data\">${{ formatCost(execution.TotalCostRollup) }}</span>\n </div>\n </div>\n }\n \n @if (execution.ConversationID) {\n <div class=\"metric-detail\">\n <i class=\"fa-solid fa-comments\"></i>\n <div class=\"metric-info\">\n <span class=\"metric-title\">Conversation</span>\n <span class=\"metric-data\">{{ execution.ConversationID.substring(0, 8) }}...</span>\n </div>\n </div>\n }\n </div>\n </div>\n \n @if (execution.Result) {\n <div class=\"result-section\">\n <h5><i class=\"fa-solid fa-file-text\"></i> Result</h5>\n <mj-code-editor \n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n \n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n </div>\n }\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\">\n <span>View all {{ executionHistoryCount }} executions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Actions -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.actions\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions\n @if (loadingStates.actions) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (actionCount > 0) {\n <span> ({{ actionCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (loadingStates.actions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading actions...</p>\n </div>\n } @else {\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n \n @if (actionCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents (Unified View with Filter) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.subAgents\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents\n @if (loadingStates.subAgents) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (totalSubAgentCount > 0) {\n <span> ({{ totalSubAgentCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n\n <!-- Filter Controls -->\n <div class=\"section-header sub-agent-filter-header\">\n <div class=\"filter-controls\">\n <kendo-buttongroup selection=\"single\">\n <button kendoButton\n [toggleable]=\"true\"\n [selected]=\"subAgentFilter === 'all'\"\n (click)=\"setSubAgentFilter('all')\"\n size=\"small\">\n <i class=\"fa-solid fa-layer-group\"></i>\n All ({{ totalSubAgentCount }})\n </button>\n <button kendoButton\n [toggleable]=\"true\"\n [selected]=\"subAgentFilter === 'child'\"\n (click)=\"setSubAgentFilter('child')\"\n size=\"small\">\n <i class=\"fa-solid fa-link\"></i>\n Child ({{ childSubAgentCount }})\n </button>\n <button kendoButton\n [toggleable]=\"true\"\n [selected]=\"subAgentFilter === 'related'\"\n (click)=\"setSubAgentFilter('related')\"\n size=\"small\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Related ({{ relatedSubAgentCount }})\n </button>\n </kendo-buttongroup>\n </div>\n\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton\n themeColor=\"primary\"\n size=\"small\"\n (click)=\"createChildSubAgent()\"\n title=\"Create a new child sub-agent that shares this agent's payload\">\n <i class=\"fa-solid fa-plus\"></i>\n <i class=\"fa-solid fa-link\"></i>\n Create Child\n </button>\n <button kendoButton\n themeColor=\"secondary\"\n size=\"small\"\n (click)=\"linkRelatedSubAgent()\"\n title=\"Link an existing agent as a related sub-agent with payload mapping\">\n <i class=\"fa-solid fa-plus\"></i>\n <i class=\"fa-solid fa-share-nodes\"></i>\n Link Related\n </button>\n }\n </div>\n </div>\n\n <!-- Empty State -->\n @if (totalSubAgentCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Sub-agents help build complex workflows through hierarchical orchestration.</p>\n <div class=\"empty-state-info\">\n <div class=\"info-card\">\n <i class=\"fa-solid fa-link\" style=\"color: #2196F3;\"></i>\n <strong>Child Sub-Agents</strong>\n <p>Share payload structure, dedicated to parent</p>\n </div>\n <div class=\"info-card\">\n <i class=\"fa-solid fa-share-nodes\" style=\"color: #9C27B0;\"></i>\n <strong>Related Sub-Agents</strong>\n <p>Reusable agents with payload mapping</p>\n </div>\n </div>\n @if (EditMode && UserCanCreateSubAgents) {\n <div class=\"empty-state-actions\">\n <button kendoButton themeColor=\"primary\" (click)=\"createChildSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create Child Sub-Agent\n </button>\n <button kendoButton themeColor=\"secondary\" (click)=\"linkRelatedSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Link Related Sub-Agent\n </button>\n </div>\n }\n </div>\n } @else {\n <!-- Unified Sub-Agent List -->\n <div class=\"entity-list\">\n @for (item of filteredSubAgents; track item.agent.ID) {\n <div class=\"entity-item sub-agent-item\"\n [class.child-sub-agent]=\"item.type === 'child'\"\n [class.related-sub-agent]=\"item.type === 'related'\"\n (click)=\"navigateToEntity('AI Agents', item.agent.ID)\">\n\n <!-- Type Badge -->\n <div class=\"sub-agent-type-badge\"\n [style.background-color]=\"getSubAgentBadgeColor(item)\">\n <i [class]=\"getSubAgentBadgeIcon(item)\"></i>\n {{ getSubAgentBadgeText(item) }}\n </div>\n\n <!-- Agent Icon -->\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(item.agent)) {\n <img [src]=\"item.agent.LogoURL\"\n [alt]=\"item.agent.Name + ' logo'\"\n class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(item.agent)\"></i>\n }\n </div>\n\n <!-- Agent Content -->\n <div class=\"item-content\">\n <div class=\"item-title\">{{ item.agent.Name || 'Untitled Sub-Agent' }}</div>\n\n @if (item.agent.Description) {\n <div class=\"item-preview\">{{ item.agent.Description }}</div>\n }\n\n <div class=\"item-meta\">\n <!-- Payload Info -->\n <span class=\"meta-tag payload-info\">\n <i class=\"fa-solid fa-database\"></i>\n {{ getSubAgentPayloadInfo(item) }}\n </span>\n\n <!-- Status -->\n @if (item.agent.Status) {\n <span class=\"status-tag\"\n [style.background-color]=\"getStatusBadgeColor()\">\n {{ item.agent.Status }}\n </span>\n }\n\n <!-- Agent Type -->\n @if (item.agent.Type) {\n <span class=\"meta-tag\">{{ item.agent.Type }}</span>\n }\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"item-actions\">\n @if (EditMode) {\n <!-- Output Mapping Config (Related only) -->\n @if (item.type === 'related') {\n <button kendoButton\n fillMode=\"flat\"\n themeColor=\"primary\"\n size=\"small\"\n (click)=\"configureOutputMapping(item, $event)\"\n title=\"Configure output mapping\">\n <i class=\"fa-solid fa-exchange-alt\"></i>\n </button>\n }\n\n <!-- Advanced Settings (Child only) -->\n @if (item.type === 'child' && UserCanCreateSubAgents) {\n <button kendoButton\n fillMode=\"flat\"\n themeColor=\"primary\"\n size=\"small\"\n (click)=\"openSubAgentAdvancedSettings(item.agent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n\n <!-- Remove/Unlink -->\n @if (UserCanDeleteSubAgents) {\n <button kendoButton\n fillMode=\"flat\"\n themeColor=\"error\"\n size=\"small\"\n (click)=\"item.type === 'child' ? removeChildSubAgent(item, $event) : unlinkRelatedSubAgent(item, $event)\"\n [title]=\"item.type === 'child' ? 'Delete child sub-agent' : 'Unlink related sub-agent'\">\n <i [class]=\"item.type === 'child' ? 'fa-solid fa-trash' : 'fa-solid fa-unlink'\"></i>\n </button>\n }\n }\n\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.prompts\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts\n @if (loadingStates.prompts) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n } @else if (promptCount > 0) {\n <span> ({{ promptCount }})</span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [data]=\"modelSelectionModes\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n \n @if (promptCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.learningCycles\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\n @if (loadingStates.learningCycles) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n \n @if (learningCycleCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\" [disabled]=\"loadingStates.notes\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\n @if (loadingStates.notes) {\n <span style=\"margin-left: 8px;\"><i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 12px;\"></i></span>\n }\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n \n @if (noteCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n\n <!-- Payload -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-exchange-alt\"></i> Payload Management\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads, path routing, and validation between parent and child agents.\n </div>\n </div>\n \n <!-- Payload Scope Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-target\"></i>\n Payload Scope\n </h3>\n \n <div class=\"payload-field-container\">\n <div class=\"payload-field-info\">\n <label class=\"payload-field-label\">Payload Scope Path</label>\n <p class=\"payload-field-description\">\n Specify a path within the parent payload that this sub-agent should operate on. \n Leave empty to receive the entire payload.\n </p>\n </div>\n \n <div class=\"payload-field-input\">\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n <div class=\"payload-field-example\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Example: <code>/customer/profile</code> or <code>/analysis/results</code></span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Path Configuration Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-route\"></i>\n Path Configuration\n </h3>\n \n <div class=\"payload-paths-grid\">\n <!-- Downstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon downstream\">\n <i class=\"fa-solid fa-arrow-down\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Downstream Paths</h4>\n <p>JSON array of paths to pass to sub-agents</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to pass entire payload or specify paths like <code>[\"user.id\", \"order.*\"]</code>\n </div>\n </div>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon upstream\">\n <i class=\"fa-solid fa-arrow-up\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Upstream Paths</h4>\n <p>JSON array of paths sub-agents can write back</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '["*"]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Use <code>[\"*\"]</code> to allow all writes or limit to specific paths\n </div>\n </div>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-read\">\n <i class=\"fa-solid fa-eye\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Read Paths</h4>\n <p>JSON array of paths this agent can read</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can read from the payload\n </div>\n </div>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-path-card\">\n <div class=\"payload-path-header\">\n <div class=\"payload-path-icon self-write\">\n <i class=\"fa-solid fa-pen\"></i>\n </div>\n <div class=\"payload-path-info\">\n <h4>Self Write Paths</h4>\n <p>JSON array of paths this agent can write to</p>\n </div>\n </div>\n <div class=\"payload-path-content\">\n <div class=\"json-editor-container\">\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 100px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n <div class=\"payload-path-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Paths this agent's prompts can write back to the payload\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Validation Section -->\n <div class=\"payload-section\">\n <h3 class=\"payload-section-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Final Payload Validation\n </h3>\n \n <div class=\"payload-validation-container\">\n <div class=\"payload-validation-settings\">\n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Validation Mode</label>\n <p class=\"validation-field-description\">How to handle validation failures</p>\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n \n <div class=\"validation-field-group\">\n <label class=\"validation-field-label\">Max Retries</label>\n <p class=\"validation-field-description\">Maximum validation retry attempts</p>\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n \n <div class=\"payload-validation-schema\">\n <label class=\"validation-schema-label\">\n <i class=\"fa-solid fa-code\"></i>\n Validation Schema\n </label>\n <p class=\"validation-schema-description\">\n JSON schema or validation rules for the final payload structure\n </p>\n <div class=\"validation-schema-editor\">\n <mj-code-editor \n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n <!-- Execution Guardrails (New Separate Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"MaxCostPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTokensPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxIterationsPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTimePerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n <!-- Configuration (Settings Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-cogs\"></i> Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure agent behavior, execution settings, and advanced features.\n </div>\n </div>\n \n <!-- Identity & Behavior Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-id-card\"></i>\n Identity & Behavior\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Status</h4>\n <p>Current availability and operational status</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <kendo-dropdownlist \n [(ngModel)]=\"record.Status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n name=\"agentStatus\"\n class=\"config-field-input\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"config-field-display\">{{ record.Status || 'Not Set' }}</span>\n }\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Agent Type</h4>\n <p>Category and system-level behavior</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <kendo-dropdownlist \n [(ngModel)]=\"record.TypeID\"\n [data]=\"agentTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n name=\"agentTypeID\"\n class=\"config-field-input\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"config-field-display\">{{ record.Type || 'Not Set' }}</span>\n }\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Expose as Action</h4>\n <p>Make available as an action for other agents</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-align-left\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Description</h4>\n <p>Detailed agent description and purpose</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"width: 100%;\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Execution Settings Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-play\"></i>\n Execution Settings\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-layer-group\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Mode</h4>\n <p>How sub-agents are executed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-sort-numeric-down\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Execution Order</h4>\n <p>Order when run with siblings</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Default Effort Level</h4>\n <p>Default effort level for all prompts (1-100)</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"DefaultPromptEffortLevel\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Higher values request more thorough reasoning (1=minimal, 100=maximum)\n </div>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-code\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Driver Class</h4>\n <p>Custom implementation class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Visual Identity Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-palette\"></i>\n Visual Identity\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-icons\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Icon Class</h4>\n <p>Font Awesome icon class</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Example: <code>fa-solid fa-robot</code>\n </div>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-image\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Logo URL</h4>\n <p>URL for agent logo image</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n <div class=\"config-card-hint\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Takes precedence over Icon Class\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Context Compression Section -->\n <div class=\"config-section\">\n <h3 class=\"config-section-title\">\n <i class=\"fa-solid fa-compress\"></i>\n Context Compression\n </h3>\n \n <div class=\"config-grid\">\n <div class=\"config-card full-width\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Enable Context Compression</h4>\n <p>Automatically compress conversation context when message threshold is reached</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n </div>\n </div>\n\n @if (record.EnableContextCompression) {\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-hashtag\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Message Threshold</h4>\n <p>Messages before compression triggers</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-save\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Messages to Keep</h4>\n <p>Recent messages to retain uncompressed</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <div class=\"config-card\">\n <div class=\"config-card-header\">\n <div class=\"config-card-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"config-card-info\">\n <h4>Compression Prompt</h4>\n <p>Prompt used for summarization</p>\n </div>\n </div>\n <div class=\"config-card-content\">\n @if (EditMode) {\n <div class=\"prompt-selector-container\">\n <div class=\"prompt-display\">\n @if (selectedContextCompressionPrompt) {\n <span class=\"prompt-name\">{{ selectedContextCompressionPrompt.Name }}</span>\n } @else {\n <span class=\"no-prompt\">No prompt selected</span>\n }\n </div>\n <div class=\"prompt-actions\">\n <button type=\"button\" \n kendoButton \n fillMode=\"outline\" \n size=\"small\"\n (click)=\"openContextCompressionPromptSelector()\"\n class=\"prompt-select-btn\">\n <i class=\"fa-solid fa-search\"></i>\n {{ selectedContextCompressionPrompt ? 'Change' : 'Select' }} Prompt\n </button>\n @if (selectedContextCompressionPrompt) {\n <button type=\"button\" \n kendoButton \n fillMode=\"flat\" \n size=\"small\"\n (click)=\"clearContextCompressionPrompt()\"\n class=\"prompt-clear-btn\"\n title=\"Clear selection\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n } @else {\n <span class=\"config-field-display\">{{ selectedContextCompressionPrompt?.Name || record.ContextCompressionPrompt || 'Not Set' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n\n </kendo-panelbar>\n </div>\n </form>\n\n</div>", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper i {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\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.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.parent-agent.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.parent-agent.clickable:hover {\n background: #e3e7ed;\n color: #2196f3;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.parent-agent.clickable:active {\n transform: translateY(0);\n box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary:hover {\n background: #1976d2;\n}\n\n.action-button.secondary {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary:hover {\n background: #5a6268;\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n/* Kendo PanelBar Styling */\n::ng-deep .k-panelbar {\n border: none;\n background: transparent;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n::ng-deep .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n::ng-deep .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: white;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n color: #64748b;\n}\n\n.loading-state i {\n font-size: 36px;\n color: #2196f3;\n margin-bottom: 16px;\n display: block;\n}\n\n.loading-state p {\n margin: 0;\n font-size: 14px;\n color: #94a3b8;\n}\n\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item .item-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item .item-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item .item-icon {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item .item-icon {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item .item-icon {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon i {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: white;\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: #2196f3;\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: #2196f3;\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker i {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card .card-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card .card-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon i {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: white;\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: #2196f3;\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: #6c757d;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.result-content,\n.error-content {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n \n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button {\n flex: 1;\n justify-content: center;\n }\n \n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n \n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content {\n padding: 20px 16px;\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon {\n width: 36px;\n height: 36px;\n }\n \n .item-icon i {\n font-size: 16px;\n }\n \n .item-title {\n font-size: 15px;\n }\n \n .item-preview {\n font-size: 13px;\n }\n \n .item-meta {\n gap: 8px;\n }\n \n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker i {\n font-size: 12px;\n }\n \n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date {\n align-self: flex-start;\n }\n \n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n/* New Execution History Card Design */\n.execution-history-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.execution-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n\n.execution-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n}\n\n.execution-card.expanded {\n border-color: #2196f3;\n box-shadow: 0 6px 20px rgba(33, 150, 243, 0.15);\n}\n\n.execution-header {\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.execution-left-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.execution-status {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.status-indicator {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.status-indicator i {\n color: white;\n font-size: 14px;\n}\n\n.execution-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.execution-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-date {\n font-size: 12px;\n color: #6c757d;\n}\n\n.execution-metrics {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex-wrap: wrap;\n margin-left: 44px; /* Align with execution title text, accounting for status indicator + gap */\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n background: #f8f9fa;\n padding: 6px 10px;\n border-radius: 6px;\n color: #495057;\n white-space: nowrap;\n}\n\n.metric-item i {\n color: #6c757d;\n font-size: 12px;\n}\n\n.metric-label {\n font-weight: 500;\n}\n\n.metric-value {\n font-weight: 600;\n color: #2c3e50;\n}\n\n.execution-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: #f8f9fa;\n border-radius: 6px;\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.action-btn:hover {\n background: #2196f3;\n color: white;\n transform: translateY(-1px);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.expand-icon {\n transition: transform 0.2s ease;\n color: #6c757d;\n margin-right: 4px;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n/* Execution Expanded Content */\n.execution-expanded-content {\n padding: 16px;\n border-top: 1px solid #f0f4f8;\n background: #fafbfc;\n animation: slideDown 0.2s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n padding-top: 16px;\n padding-bottom: 16px;\n }\n}\n\n.detailed-metrics {\n margin-bottom: 20px;\n}\n\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.metric-detail {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n}\n\n.metric-detail i {\n color: #2196f3;\n font-size: 16px;\n width: 20px;\n text-align: center;\n}\n\n.metric-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n}\n\n.metric-title {\n font-size: 11px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-data {\n font-size: 14px;\n font-weight: 600;\n color: #2c3e50;\n}\n\n.result-section {\n margin-top: 16px;\n}\n\n.result-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.error-content {\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #721c24;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 150px;\n overflow-y: auto;\n}\n\n/* Responsive adjustments for execution history */\n@media (max-width: 768px) {\n .execution-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .execution-left-section {\n width: 100%;\n }\n \n .execution-metrics {\n margin-left: 0; /* Remove left margin on mobile */\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n }\n \n .metric-item {\n font-size: 11px;\n padding: 4px 8px;\n }\n \n .metrics-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* === PAYLOAD MANAGEMENT SECTION === */\n.payload-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.payload-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.payload-section-title i {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n/* Payload Scope Styling */\n.payload-field-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-field-info {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.payload-field-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.payload-field-input {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.payload-field-example {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.85rem;\n color: #6c757d;\n background: #f8f9fa;\n padding: 0.5rem 0.75rem;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.payload-field-example i {\n color: #ffc107;\n font-size: 0.9rem;\n}\n\n.payload-field-example code {\n background: #e9ecef;\n padding: 0.2rem 0.4rem;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.8rem;\n color: #495057;\n}\n\n/* Path Configuration Grid */\n.payload-paths-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.payload-path-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.payload-path-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.payload-path-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.payload-path-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.payload-path-icon.downstream {\n background: linear-gradient(135deg, #28a745, #20c997);\n}\n\n.payload-path-icon.upstream {\n background: linear-gradient(135deg, #007bff, #6610f2);\n}\n\n.payload-path-icon.self-read {\n background: linear-gradient(135deg, #17a2b8, #20c997);\n}\n\n.payload-path-icon.self-write {\n background: linear-gradient(135deg, #ffc107, #fd7e14);\n}\n\n.payload-path-icon i {\n color: white;\n font-size: 1.2rem;\n}\n\n.payload-path-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.payload-path-info p {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-content {\n padding: 1rem;\n}\n\n.json-editor-container {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 0.75rem;\n}\n\n.json-editor-container:hover {\n border-color: #2196f3;\n}\n\n.payload-path-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.payload-path-hint i {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.payload-path-hint code {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n/* Payload Validation Container */\n.payload-validation-container {\n padding: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 2rem;\n align-items: start;\n}\n\n.payload-validation-settings {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.validation-field-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.validation-field-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n}\n\n.validation-field-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0 0 0.5rem 0;\n}\n\n.payload-validation-schema {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.validation-schema-label {\n font-weight: 600;\n color: #495057;\n font-size: 0.95rem;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.validation-schema-label i {\n color: #2196f3;\n}\n\n.validation-schema-description {\n color: #6c757d;\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.validation-schema-editor {\n border: 1px solid #dee2e6;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.validation-schema-editor:hover {\n border-color: #2196f3;\n}\n\n/* === CONFIGURATION SECTION === */\n.config-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 12px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.config-section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.config-section-title i {\n color: #2196f3;\n font-size: 1.2rem;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 1.5rem;\n padding: 1.5rem;\n width: 100%;\n}\n\n.config-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n}\n\n.config-card.full-width {\n grid-column: 1 / -1;\n}\n\n.config-card-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-bottom: 1px solid #e0e0e0;\n}\n\n.config-card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: linear-gradient(135deg, #2196f3, #1976d2);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.config-card-icon i {\n color: white;\n font-size: 1.2rem;\n}\n\n.config-card-info h4 {\n margin: 0 0 0.25rem 0;\n font-size: 1rem;\n font-weight: 600;\n color: #495057;\n}\n\n.config-card-info p {\n margin: 0;\n font-size: 0.85rem;\n color: #6c757d;\n line-height: 1.4;\n}\n\n.config-card-content {\n padding: 1rem;\n}\n\n/* Custom field styling for config cards */\n.config-field-input {\n width: 100%;\n min-width: 250px;\n}\n\n/* Fix numeric textbox cutoff issue */\n.config-card-content ::ng-deep kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-card-content ::ng-deep mj-form-field {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox .k-numerictextbox {\n width: 100% !important;\n}\n\n.config-card-content ::ng-deep mj-form-field kendo-numerictextbox .k-input {\n width: 100% !important;\n min-width: 200px !important;\n}\n\n.config-field-display {\n color: #495057;\n font-size: 14px;\n font-weight: 500;\n padding: 8px 0;\n display: block;\n min-height: 20px;\n}\n\n/* Prompt selector styling */\n.prompt-selector-container {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n.prompt-display {\n flex: 1;\n min-width: 0;\n padding: 8px 12px;\n background: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n}\n\n.prompt-name {\n color: #495057;\n font-weight: 500;\n font-size: 14px;\n}\n\n.no-prompt {\n color: #6c757d;\n font-style: italic;\n font-size: 14px;\n}\n\n.prompt-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.prompt-select-btn {\n white-space: nowrap;\n}\n\n.prompt-clear-btn {\n min-width: 32px;\n}\n\n.config-card-hint {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 0.8rem;\n color: #6c757d;\n line-height: 1.4;\n margin-top: 0.5rem;\n}\n\n.config-card-hint i {\n color: #17a2b8;\n margin-top: 0.1rem;\n flex-shrink: 0;\n}\n\n.config-card-hint code {\n background: #e9ecef;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 0.75rem;\n color: #495057;\n}\n\n\n/* === RESPONSIVE DESIGN === */\n@media (max-width: 768px) {\n .payload-field-container,\n .payload-validation-container {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n \n .payload-paths-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .config-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .payload-section-title,\n .config-section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .payload-path-header,\n .config-card-header {\n padding: 0.75rem;\n }\n \n .payload-path-content,\n .config-card-content {\n padding: 0.75rem;\n }\n \n .payload-field-container,\n .payload-validation-container {\n padding: 1rem;\n }\n}\n\n/* ===================================\n Unified Sub-Agents with Filtering\n =================================== */\n\n/* Filter Controls */\n.sub-agent-filter-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.filter-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.filter-controls kendo-buttongroup {\n flex: 0 0 auto;\n}\n\n/* Sub-Agent Type Badge */\n.sub-agent-type-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n gap: 4px;\n z-index: 1;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n/* Sub-Agent Item Styling */\n.sub-agent-item {\n position: relative;\n padding-left: 8px;\n transition: all 0.2s ease;\n}\n\n.sub-agent-item.child-sub-agent {\n border-left: 4px solid #2196F3;\n}\n\n.sub-agent-item.related-sub-agent {\n border-left: 4px solid #9C27B0;\n}\n\n.sub-agent-item:hover {\n transform: translateX(4px);\n}\n\n/* Payload Info Tag */\n.payload-info {\n background: #f5f5f5;\n color: #666;\n font-family: 'Roboto Mono', monospace;\n font-size: 11px;\n}\n\n/* Empty State Info Cards */\n.empty-state-info {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n margin: 24px 0;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n}\n\n.info-card {\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 16px;\n text-align: left;\n}\n\n.info-card i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.info-card strong {\n display: block;\n margin-bottom: 4px;\n font-size: 14px;\n}\n\n.info-card p {\n margin: 0;\n font-size: 12px;\n color: #666;\n}\n\n.empty-state-actions {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 16px;\n}\n\n/* Responsive adjustments for sub-agent filters */\n@media (max-width: 768px) {\n .sub-agent-filter-header {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls,\n .header-actions {\n width: 100%;\n justify-content: center;\n }\n \n .empty-state-info {\n grid-template-columns: 1fr;\n }\n}\n"] }]
|
|
3803
4061
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }, { type: i4.AIAgentManagementService }, { type: i5.AITestHarnessDialogService }], { customSectionContainer: [{
|
|
3804
4062
|
type: ViewChild,
|
|
3805
4063
|
args: ['customSectionContainer', { read: ViewContainerRef }]
|
|
3806
4064
|
}] }); })();
|
|
3807
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
4065
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 73 }); })();
|
|
3808
4066
|
export function LoadAIAgentFormComponentExtended() {
|
|
3809
4067
|
// This function is called to ensure the component is loaded and registered
|
|
3810
4068
|
}
|