@memberjunction/ng-core-entity-forms 2.72.0 → 2.74.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.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +592 -580
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.d.ts +33 -0
- package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Queries/query-category-dialog.component.js +241 -0
- package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts +135 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Queries/query-form.component.js +1563 -0
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -0
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +66 -0
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Queries/query-run-dialog.component.js +788 -0
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +162 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +2091 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +1 -1
- 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 -8
- 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 +122 -128
- 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.d.ts +6 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +218 -156
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +26 -22
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +23 -3
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/Query/query.form.component.js +14 -4
- package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Query/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Query/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Query/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js +22 -4
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/QueryField/sections/details.component.js +22 -4
- package/dist/lib/generated/Entities/QueryField/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +59 -0
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js +172 -0
- package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +265 -263
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +74 -66
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +18 -16
|
@@ -107,110 +107,317 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Templa
|
|
|
107
107
|
} if (rf & 2) {
|
|
108
108
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
109
109
|
i0.ɵɵadvance();
|
|
110
|
-
i0.ɵɵtextInterpolate1("
|
|
110
|
+
i0.ɵɵtextInterpolate1(" Execution History", ctx_r1.executionHistoryCount > 0 ? " (" + ctx_r1.executionHistoryCount + ")" : "", " ");
|
|
111
|
+
} }
|
|
112
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
114
|
+
i0.ɵɵelement(1, "i", 33);
|
|
115
|
+
i0.ɵɵelementStart(2, "h4");
|
|
116
|
+
i0.ɵɵtext(3, "No Execution History");
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
i0.ɵɵelementStart(4, "p");
|
|
119
|
+
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
120
|
+
i0.ɵɵelementEnd()();
|
|
121
|
+
} }
|
|
122
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "span", 49);
|
|
124
|
+
i0.ɵɵelement(1, "i", 55);
|
|
125
|
+
i0.ɵɵtext(2);
|
|
126
|
+
i0.ɵɵelementEnd();
|
|
127
|
+
} if (rf & 2) {
|
|
128
|
+
const execution_r6 = i0.ɵɵnextContext().$implicit;
|
|
129
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
130
|
+
i0.ɵɵadvance(2);
|
|
131
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatExecutionTimeFromDates(execution_r6.StartedAt, execution_r6.CompletedAt), " ");
|
|
132
|
+
} }
|
|
133
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
+
i0.ɵɵelementStart(0, "div", 53);
|
|
135
|
+
i0.ɵɵtext(1);
|
|
136
|
+
i0.ɵɵelementEnd();
|
|
137
|
+
} if (rf & 2) {
|
|
138
|
+
const execution_r6 = i0.ɵɵnextContext().$implicit;
|
|
139
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
140
|
+
i0.ɵɵadvance();
|
|
141
|
+
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultPreview(execution_r6, true));
|
|
142
|
+
} }
|
|
143
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "h5");
|
|
145
|
+
i0.ɵɵtext(2, "Result");
|
|
146
|
+
i0.ɵɵelementEnd();
|
|
147
|
+
i0.ɵɵelement(3, "mj-code-editor", 62);
|
|
148
|
+
i0.ɵɵelementEnd();
|
|
149
|
+
} if (rf & 2) {
|
|
150
|
+
const execution_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
151
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
152
|
+
i0.ɵɵadvance(3);
|
|
153
|
+
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r6, false))("readonly", true)("lineWrapping", true);
|
|
154
|
+
} }
|
|
155
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "h5");
|
|
157
|
+
i0.ɵɵelement(2, "i", 63);
|
|
158
|
+
i0.ɵɵtext(3, " Error");
|
|
159
|
+
i0.ɵɵelementEnd();
|
|
160
|
+
i0.ɵɵelementStart(4, "div", 64);
|
|
161
|
+
i0.ɵɵtext(5);
|
|
162
|
+
i0.ɵɵelementEnd()();
|
|
163
|
+
} if (rf & 2) {
|
|
164
|
+
const execution_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
165
|
+
i0.ɵɵadvance(5);
|
|
166
|
+
i0.ɵɵtextInterpolate(execution_r6.ErrorMessage);
|
|
167
|
+
} }
|
|
168
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
|
|
170
|
+
i0.ɵɵtext(2, "Completed:");
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
i0.ɵɵelementStart(3, "span", 61);
|
|
173
|
+
i0.ɵɵtext(4);
|
|
174
|
+
i0.ɵɵpipe(5, "date");
|
|
175
|
+
i0.ɵɵelementEnd()();
|
|
176
|
+
} if (rf & 2) {
|
|
177
|
+
const execution_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
178
|
+
i0.ɵɵadvance(4);
|
|
179
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, execution_r6.CompletedAt, "medium"));
|
|
111
180
|
} }
|
|
112
|
-
function
|
|
181
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "span", 60);
|
|
183
|
+
i0.ɵɵtext(2, "Conversation:");
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementStart(3, "span", 61);
|
|
186
|
+
i0.ɵɵtext(4);
|
|
187
|
+
i0.ɵɵelementEnd()();
|
|
188
|
+
} if (rf & 2) {
|
|
189
|
+
const execution_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
190
|
+
i0.ɵɵadvance(4);
|
|
191
|
+
i0.ɵɵtextInterpolate(execution_r6.ConversationID);
|
|
192
|
+
} }
|
|
193
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
194
|
+
i0.ɵɵelementStart(0, "div", 54);
|
|
195
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template, 4, 3, "div", 56)(2, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template, 6, 1, "div", 57);
|
|
196
|
+
i0.ɵɵelementStart(3, "div", 58)(4, "div", 59)(5, "span", 60);
|
|
197
|
+
i0.ɵɵtext(6, "Started:");
|
|
198
|
+
i0.ɵɵelementEnd();
|
|
199
|
+
i0.ɵɵelementStart(7, "span", 61);
|
|
200
|
+
i0.ɵɵtext(8);
|
|
201
|
+
i0.ɵɵpipe(9, "date");
|
|
202
|
+
i0.ɵɵelementEnd()();
|
|
203
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template, 6, 4, "div", 59)(11, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template, 5, 1, "div", 59);
|
|
204
|
+
i0.ɵɵelementEnd()();
|
|
205
|
+
} if (rf & 2) {
|
|
206
|
+
const execution_r6 = i0.ɵɵnextContext().$implicit;
|
|
207
|
+
i0.ɵɵadvance();
|
|
208
|
+
i0.ɵɵconditional(execution_r6.Result ? 1 : -1);
|
|
209
|
+
i0.ɵɵadvance();
|
|
210
|
+
i0.ɵɵconditional(execution_r6.ErrorMessage ? 2 : -1);
|
|
211
|
+
i0.ɵɵadvance(6);
|
|
212
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, execution_r6.StartedAt, "medium"));
|
|
213
|
+
i0.ɵɵadvance(2);
|
|
214
|
+
i0.ɵɵconditional(execution_r6.CompletedAt ? 10 : -1);
|
|
215
|
+
i0.ɵɵadvance();
|
|
216
|
+
i0.ɵɵconditional(execution_r6.ConversationID ? 11 : -1);
|
|
217
|
+
} }
|
|
218
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
113
219
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
114
|
-
i0.ɵɵelementStart(0, "
|
|
115
|
-
i0.ɵɵ
|
|
116
|
-
i0.ɵɵ
|
|
220
|
+
i0.ɵɵelementStart(0, "div", 41)(1, "div")(2, "div", 42);
|
|
221
|
+
i0.ɵɵelement(3, "i");
|
|
222
|
+
i0.ɵɵelementEnd();
|
|
223
|
+
i0.ɵɵelementStart(4, "div", 43)(5, "div", 44);
|
|
224
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template_div_click_5_listener() { const execution_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r6.ID)); });
|
|
225
|
+
i0.ɵɵelementStart(6, "div")(7, "div", 45);
|
|
226
|
+
i0.ɵɵelement(8, "i", 46);
|
|
227
|
+
i0.ɵɵtext(9);
|
|
228
|
+
i0.ɵɵelementStart(10, "span", 47);
|
|
229
|
+
i0.ɵɵtext(11);
|
|
230
|
+
i0.ɵɵpipe(12, "date");
|
|
231
|
+
i0.ɵɵelementEnd()();
|
|
232
|
+
i0.ɵɵelementStart(13, "div", 48)(14, "span", 28);
|
|
233
|
+
i0.ɵɵtext(15);
|
|
234
|
+
i0.ɵɵelementEnd();
|
|
235
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_16_Template, 3, 1, "span", 49);
|
|
236
|
+
i0.ɵɵelementStart(17, "div", 50)(18, "button", 51);
|
|
237
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template_button_click_18_listener($event) { const execution_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r6.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
238
|
+
i0.ɵɵelement(19, "i", 52);
|
|
239
|
+
i0.ɵɵelementEnd()()();
|
|
240
|
+
i0.ɵɵtemplate(20, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_20_Template, 2, 1, "div", 53);
|
|
241
|
+
i0.ɵɵelementEnd()();
|
|
242
|
+
i0.ɵɵtemplate(21, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_21_Template, 12, 8, "div", 54);
|
|
243
|
+
i0.ɵɵelementEnd()()();
|
|
244
|
+
} if (rf & 2) {
|
|
245
|
+
const execution_r6 = ctx.$implicit;
|
|
246
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
247
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r6.ID]);
|
|
248
|
+
i0.ɵɵadvance(2);
|
|
249
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r6.Status));
|
|
250
|
+
i0.ɵɵadvance();
|
|
251
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r6.Status));
|
|
252
|
+
i0.ɵɵadvance(5);
|
|
253
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r6.ID]);
|
|
254
|
+
i0.ɵɵadvance();
|
|
255
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r6.ID.substring(0, 8), " ");
|
|
256
|
+
i0.ɵɵadvance(2);
|
|
257
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16, execution_r6.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
258
|
+
i0.ɵɵadvance(3);
|
|
259
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r6.Status));
|
|
260
|
+
i0.ɵɵadvance();
|
|
261
|
+
i0.ɵɵtextInterpolate1(" ", execution_r6.Status || "Unknown", " ");
|
|
262
|
+
i0.ɵɵadvance();
|
|
263
|
+
i0.ɵɵconditional(execution_r6.CompletedAt ? 16 : -1);
|
|
264
|
+
i0.ɵɵadvance(4);
|
|
265
|
+
i0.ɵɵconditional(execution_r6.Result && !ctx_r1.expandedExecutions[execution_r6.ID] ? 20 : -1);
|
|
266
|
+
i0.ɵɵadvance();
|
|
267
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r6.ID] ? 21 : -1);
|
|
268
|
+
} }
|
|
269
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
271
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
272
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
273
|
+
i0.ɵɵelementStart(1, "span");
|
|
274
|
+
i0.ɵɵtext(2);
|
|
275
|
+
i0.ɵɵelementEnd()();
|
|
276
|
+
} if (rf & 2) {
|
|
277
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
278
|
+
i0.ɵɵadvance(2);
|
|
279
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.executionHistoryCount, " executions...");
|
|
280
|
+
} }
|
|
281
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
283
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template, 22, 19, "div", 39, _forTrack0);
|
|
284
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 40);
|
|
285
|
+
i0.ɵɵelementEnd();
|
|
286
|
+
} if (rf & 2) {
|
|
287
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
288
|
+
i0.ɵɵadvance();
|
|
289
|
+
i0.ɵɵrepeater(ctx_r1.recentExecutions);
|
|
290
|
+
i0.ɵɵadvance(2);
|
|
291
|
+
i0.ɵɵconditional(ctx_r1.executionHistoryCount > ctx_r1.recentExecutions.length ? 3 : -1);
|
|
292
|
+
} }
|
|
293
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
|
|
295
|
+
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
296
|
+
i0.ɵɵelementEnd()();
|
|
297
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template, 6, 0, "div", 37)(5, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template, 4, 1, "div", 38);
|
|
298
|
+
i0.ɵɵelementEnd();
|
|
299
|
+
} if (rf & 2) {
|
|
300
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
301
|
+
i0.ɵɵadvance(4);
|
|
302
|
+
i0.ɵɵconditional(ctx_r1.executionHistoryCount === 0 ? 4 : 5);
|
|
303
|
+
} }
|
|
304
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
306
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template, 6, 1, "ng-template", 26);
|
|
307
|
+
i0.ɵɵelementEnd();
|
|
308
|
+
} if (rf & 2) {
|
|
309
|
+
i0.ɵɵproperty("expanded", false);
|
|
310
|
+
} }
|
|
311
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
312
|
+
i0.ɵɵelement(0, "i", 66);
|
|
313
|
+
i0.ɵɵtext(1);
|
|
314
|
+
} if (rf & 2) {
|
|
315
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
|
+
i0.ɵɵadvance();
|
|
317
|
+
i0.ɵɵtextInterpolate1(" Actions", ctx_r1.actionCount > 0 ? " (" + ctx_r1.actionCount + ")" : "", " ");
|
|
318
|
+
} }
|
|
319
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
320
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
321
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
322
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
323
|
+
i0.ɵɵelement(1, "i", 72);
|
|
117
324
|
i0.ɵɵtext(2, " Add Action ");
|
|
118
325
|
i0.ɵɵelementEnd();
|
|
119
326
|
} }
|
|
120
|
-
function
|
|
121
|
-
const
|
|
122
|
-
i0.ɵɵelementStart(0, "button",
|
|
123
|
-
i0.ɵɵlistener("click", function
|
|
124
|
-
i0.ɵɵelement(1, "i",
|
|
327
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
328
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
329
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
330
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
331
|
+
i0.ɵɵelement(1, "i", 72);
|
|
125
332
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
126
333
|
i0.ɵɵelementEnd();
|
|
127
334
|
} }
|
|
128
|
-
function
|
|
129
|
-
i0.ɵɵelementStart(0, "div",
|
|
130
|
-
i0.ɵɵelement(1, "i",
|
|
335
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
337
|
+
i0.ɵɵelement(1, "i", 66);
|
|
131
338
|
i0.ɵɵelementStart(2, "h4");
|
|
132
339
|
i0.ɵɵtext(3, "No Actions Configured");
|
|
133
340
|
i0.ɵɵelementEnd();
|
|
134
341
|
i0.ɵɵelementStart(4, "p");
|
|
135
342
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
136
343
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵtemplate(6,
|
|
344
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "button", 73);
|
|
138
345
|
i0.ɵɵelementEnd();
|
|
139
346
|
} if (rf & 2) {
|
|
140
347
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
141
348
|
i0.ɵɵadvance(6);
|
|
142
349
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? 6 : -1);
|
|
143
350
|
} }
|
|
144
|
-
function
|
|
145
|
-
i0.ɵɵelementStart(0, "div",
|
|
351
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
352
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
146
353
|
i0.ɵɵtext(1);
|
|
147
354
|
i0.ɵɵelementEnd();
|
|
148
355
|
} if (rf & 2) {
|
|
149
|
-
const
|
|
356
|
+
const action_r11 = i0.ɵɵnextContext().$implicit;
|
|
150
357
|
i0.ɵɵadvance();
|
|
151
|
-
i0.ɵɵtextInterpolate(
|
|
358
|
+
i0.ɵɵtextInterpolate(action_r11.Description);
|
|
152
359
|
} }
|
|
153
|
-
function
|
|
154
|
-
i0.ɵɵelementStart(0, "span",
|
|
360
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
155
362
|
i0.ɵɵtext(1);
|
|
156
363
|
i0.ɵɵelementEnd();
|
|
157
364
|
} if (rf & 2) {
|
|
158
|
-
const
|
|
365
|
+
const action_r11 = i0.ɵɵnextContext().$implicit;
|
|
159
366
|
i0.ɵɵadvance();
|
|
160
|
-
i0.ɵɵtextInterpolate(
|
|
367
|
+
i0.ɵɵtextInterpolate(action_r11.Type);
|
|
161
368
|
} }
|
|
162
|
-
function
|
|
163
|
-
const
|
|
164
|
-
i0.ɵɵelementStart(0, "button",
|
|
165
|
-
i0.ɵɵlistener("click", function
|
|
166
|
-
i0.ɵɵelement(1, "i",
|
|
369
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
370
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
371
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
372
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const action_r11 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeAction(action_r11, $event)); });
|
|
373
|
+
i0.ɵɵelement(1, "i", 89);
|
|
167
374
|
i0.ɵɵelementEnd();
|
|
168
375
|
} }
|
|
169
|
-
function
|
|
170
|
-
const
|
|
171
|
-
i0.ɵɵelementStart(0, "div",
|
|
172
|
-
i0.ɵɵlistener("click", function
|
|
173
|
-
i0.ɵɵelementStart(1, "div",
|
|
376
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
378
|
+
i0.ɵɵelementStart(0, "div", 76);
|
|
379
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const action_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("Actions", action_r11.ID)); });
|
|
380
|
+
i0.ɵɵelementStart(1, "div", 77);
|
|
174
381
|
i0.ɵɵelement(2, "i");
|
|
175
382
|
i0.ɵɵelementEnd();
|
|
176
|
-
i0.ɵɵelementStart(3, "div",
|
|
383
|
+
i0.ɵɵelementStart(3, "div", 78)(4, "div", 79);
|
|
177
384
|
i0.ɵɵtext(5);
|
|
178
385
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵtemplate(6,
|
|
180
|
-
i0.ɵɵelementStart(7, "div",
|
|
181
|
-
i0.ɵɵtemplate(8,
|
|
182
|
-
i0.ɵɵelementStart(9, "span",
|
|
183
|
-
i0.ɵɵelement(10, "i",
|
|
386
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 1, "div", 80);
|
|
387
|
+
i0.ɵɵelementStart(7, "div", 81);
|
|
388
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 82);
|
|
389
|
+
i0.ɵɵelementStart(9, "span", 83);
|
|
390
|
+
i0.ɵɵelement(10, "i", 84);
|
|
184
391
|
i0.ɵɵtext(11);
|
|
185
392
|
i0.ɵɵelementEnd()()();
|
|
186
|
-
i0.ɵɵelementStart(12, "div",
|
|
187
|
-
i0.ɵɵtemplate(13,
|
|
188
|
-
i0.ɵɵelement(14, "i",
|
|
393
|
+
i0.ɵɵelementStart(12, "div", 85);
|
|
394
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 0, "button", 86);
|
|
395
|
+
i0.ɵɵelement(14, "i", 87);
|
|
189
396
|
i0.ɵɵelementEnd()();
|
|
190
397
|
} if (rf & 2) {
|
|
191
|
-
const
|
|
398
|
+
const action_r11 = ctx.$implicit;
|
|
192
399
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
193
400
|
i0.ɵɵadvance(2);
|
|
194
|
-
i0.ɵɵclassMap(ctx_r1.getActionIcon(
|
|
401
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r11));
|
|
195
402
|
i0.ɵɵadvance(3);
|
|
196
|
-
i0.ɵɵtextInterpolate(
|
|
403
|
+
i0.ɵɵtextInterpolate(action_r11.Name || "Untitled Action");
|
|
197
404
|
i0.ɵɵadvance();
|
|
198
|
-
i0.ɵɵconditional(
|
|
405
|
+
i0.ɵɵconditional(action_r11.Description ? 6 : -1);
|
|
199
406
|
i0.ɵɵadvance(2);
|
|
200
|
-
i0.ɵɵconditional(
|
|
407
|
+
i0.ɵɵconditional(action_r11.Type ? 8 : -1);
|
|
201
408
|
i0.ɵɵadvance();
|
|
202
|
-
i0.ɵɵclassProp("active",
|
|
409
|
+
i0.ɵɵclassProp("active", action_r11.Status === "Active")("inactive", action_r11.Status !== "Active");
|
|
203
410
|
i0.ɵɵadvance();
|
|
204
|
-
i0.ɵɵclassProp("fa-check-circle",
|
|
411
|
+
i0.ɵɵclassProp("fa-check-circle", action_r11.Status === "Active")("fa-times-circle", action_r11.Status !== "Active");
|
|
205
412
|
i0.ɵɵadvance();
|
|
206
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
413
|
+
i0.ɵɵtextInterpolate1(" ", action_r11.Status, " ");
|
|
207
414
|
i0.ɵɵadvance(2);
|
|
208
415
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteActions ? 13 : -1);
|
|
209
416
|
} }
|
|
210
|
-
function
|
|
211
|
-
const
|
|
212
|
-
i0.ɵɵelementStart(0, "div",
|
|
213
|
-
i0.ɵɵlistener("click", function
|
|
417
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
419
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
420
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Actions", "")); });
|
|
214
421
|
i0.ɵɵelementStart(1, "span");
|
|
215
422
|
i0.ɵɵtext(2);
|
|
216
423
|
i0.ɵɵelementEnd()();
|
|
@@ -219,10 +426,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Condit
|
|
|
219
426
|
i0.ɵɵadvance(2);
|
|
220
427
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
221
428
|
} }
|
|
222
|
-
function
|
|
223
|
-
i0.ɵɵelementStart(0, "div",
|
|
224
|
-
i0.ɵɵrepeaterCreate(1,
|
|
225
|
-
i0.ɵɵtemplate(3,
|
|
429
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
431
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template, 15, 15, "div", 75, _forTrack0);
|
|
432
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 40);
|
|
226
433
|
i0.ɵɵelementEnd();
|
|
227
434
|
} if (rf & 2) {
|
|
228
435
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -231,11 +438,11 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Condit
|
|
|
231
438
|
i0.ɵɵadvance(2);
|
|
232
439
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
233
440
|
} }
|
|
234
|
-
function
|
|
235
|
-
i0.ɵɵelementStart(0, "div",
|
|
236
|
-
i0.ɵɵtemplate(3,
|
|
441
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 68);
|
|
443
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template, 3, 0, "button", 69);
|
|
237
444
|
i0.ɵɵelementEnd()();
|
|
238
|
-
i0.ɵɵtemplate(4,
|
|
445
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template, 7, 1, "div", 37)(5, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template, 4, 1, "div", 70);
|
|
239
446
|
i0.ɵɵelementEnd();
|
|
240
447
|
} if (rf & 2) {
|
|
241
448
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -244,15 +451,14 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Templa
|
|
|
244
451
|
i0.ɵɵadvance();
|
|
245
452
|
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 4 : 5);
|
|
246
453
|
} }
|
|
247
|
-
function
|
|
454
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
248
455
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
249
|
-
i0.ɵɵtemplate(1,
|
|
456
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template, 6, 2, "ng-template", 26);
|
|
250
457
|
i0.ɵɵelementEnd();
|
|
251
458
|
} if (rf & 2) {
|
|
252
|
-
|
|
253
|
-
i0.ɵɵproperty("expanded", ctx_r1.actionCount > 0);
|
|
459
|
+
i0.ɵɵproperty("expanded", false);
|
|
254
460
|
} }
|
|
255
|
-
function
|
|
461
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
256
462
|
i0.ɵɵelement(0, "i", 30);
|
|
257
463
|
i0.ɵɵtext(1);
|
|
258
464
|
} if (rf & 2) {
|
|
@@ -260,34 +466,34 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Templa
|
|
|
260
466
|
i0.ɵɵadvance();
|
|
261
467
|
i0.ɵɵtextInterpolate1(" Sub-Agents", ctx_r1.subAgentCount > 0 ? " (" + ctx_r1.subAgentCount + ")" : "", " ");
|
|
262
468
|
} }
|
|
263
|
-
function
|
|
264
|
-
const
|
|
265
|
-
i0.ɵɵelementStart(0, "button",
|
|
266
|
-
i0.ɵɵlistener("click", function
|
|
267
|
-
i0.ɵɵelement(1, "i",
|
|
469
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
470
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
471
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
472
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addSubAgents()); });
|
|
473
|
+
i0.ɵɵelement(1, "i", 72);
|
|
268
474
|
i0.ɵɵtext(2, " Add Subagent ");
|
|
269
475
|
i0.ɵɵelementEnd();
|
|
270
|
-
i0.ɵɵelementStart(3, "button",
|
|
271
|
-
i0.ɵɵlistener("click", function
|
|
272
|
-
i0.ɵɵelement(4, "i",
|
|
476
|
+
i0.ɵɵelementStart(3, "button", 90);
|
|
477
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
478
|
+
i0.ɵɵelement(4, "i", 72);
|
|
273
479
|
i0.ɵɵtext(5, " Create Sub-Agent ");
|
|
274
480
|
i0.ɵɵelementEnd();
|
|
275
481
|
} }
|
|
276
|
-
function
|
|
277
|
-
const
|
|
278
|
-
i0.ɵɵelementStart(0, "button",
|
|
279
|
-
i0.ɵɵlistener("click", function
|
|
280
|
-
i0.ɵɵelement(1, "i",
|
|
482
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
483
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
484
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
485
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addSubAgents()); });
|
|
486
|
+
i0.ɵɵelement(1, "i", 72);
|
|
281
487
|
i0.ɵɵtext(2, " Add Subagent ");
|
|
282
488
|
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵelementStart(3, "button",
|
|
284
|
-
i0.ɵɵlistener("click", function
|
|
285
|
-
i0.ɵɵelement(4, "i",
|
|
489
|
+
i0.ɵɵelementStart(3, "button", 91);
|
|
490
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
491
|
+
i0.ɵɵelement(4, "i", 72);
|
|
286
492
|
i0.ɵɵtext(5, " Create First Sub-Agent ");
|
|
287
493
|
i0.ɵɵelementEnd();
|
|
288
494
|
} }
|
|
289
|
-
function
|
|
290
|
-
i0.ɵɵelementStart(0, "div",
|
|
495
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
496
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
291
497
|
i0.ɵɵelement(1, "i", 30);
|
|
292
498
|
i0.ɵɵelementStart(2, "h4");
|
|
293
499
|
i0.ɵɵtext(3, "No Sub-Agents");
|
|
@@ -295,109 +501,109 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Condit
|
|
|
295
501
|
i0.ɵɵelementStart(4, "p");
|
|
296
502
|
i0.ɵɵtext(5, "Create sub-agents to build a hierarchical structure for complex workflows.");
|
|
297
503
|
i0.ɵɵelementEnd();
|
|
298
|
-
i0.ɵɵtemplate(6,
|
|
504
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template, 6, 0);
|
|
299
505
|
i0.ɵɵelementEnd();
|
|
300
506
|
} if (rf & 2) {
|
|
301
507
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
302
508
|
i0.ɵɵadvance(6);
|
|
303
509
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 6 : -1);
|
|
304
510
|
} }
|
|
305
|
-
function
|
|
306
|
-
i0.ɵɵelement(0, "img",
|
|
511
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
i0.ɵɵelement(0, "img", 94);
|
|
307
513
|
} if (rf & 2) {
|
|
308
|
-
const
|
|
309
|
-
i0.ɵɵproperty("src",
|
|
514
|
+
const subAgent_r17 = i0.ɵɵnextContext().$implicit;
|
|
515
|
+
i0.ɵɵproperty("src", subAgent_r17.LogoURL, i0.ɵɵsanitizeUrl)("alt", subAgent_r17.Name + " logo");
|
|
310
516
|
} }
|
|
311
|
-
function
|
|
517
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
312
518
|
i0.ɵɵelement(0, "i");
|
|
313
519
|
} if (rf & 2) {
|
|
314
|
-
const
|
|
520
|
+
const subAgent_r17 = i0.ɵɵnextContext().$implicit;
|
|
315
521
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
316
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(
|
|
522
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(subAgent_r17));
|
|
317
523
|
} }
|
|
318
|
-
function
|
|
319
|
-
i0.ɵɵelementStart(0, "div",
|
|
524
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
525
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
320
526
|
i0.ɵɵtext(1);
|
|
321
527
|
i0.ɵɵelementEnd();
|
|
322
528
|
} if (rf & 2) {
|
|
323
|
-
const
|
|
529
|
+
const subAgent_r17 = i0.ɵɵnextContext().$implicit;
|
|
324
530
|
i0.ɵɵadvance();
|
|
325
|
-
i0.ɵɵtextInterpolate(
|
|
531
|
+
i0.ɵɵtextInterpolate(subAgent_r17.Description);
|
|
326
532
|
} }
|
|
327
|
-
function
|
|
328
|
-
i0.ɵɵelementStart(0, "span",
|
|
533
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
534
|
+
i0.ɵɵelementStart(0, "span", 83);
|
|
329
535
|
i0.ɵɵtext(1);
|
|
330
536
|
i0.ɵɵelementEnd();
|
|
331
537
|
} if (rf & 2) {
|
|
332
|
-
const
|
|
538
|
+
const subAgent_r17 = i0.ɵɵnextContext().$implicit;
|
|
333
539
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
334
540
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
335
541
|
i0.ɵɵadvance();
|
|
336
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
542
|
+
i0.ɵɵtextInterpolate1(" ", subAgent_r17.Status, " ");
|
|
337
543
|
} }
|
|
338
|
-
function
|
|
339
|
-
i0.ɵɵelementStart(0, "span",
|
|
544
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
545
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
340
546
|
i0.ɵɵtext(1);
|
|
341
547
|
i0.ɵɵelementEnd();
|
|
342
548
|
} if (rf & 2) {
|
|
343
|
-
const
|
|
549
|
+
const subAgent_r17 = i0.ɵɵnextContext().$implicit;
|
|
344
550
|
i0.ɵɵadvance();
|
|
345
|
-
i0.ɵɵtextInterpolate(
|
|
551
|
+
i0.ɵɵtextInterpolate(subAgent_r17.ExecutionMode);
|
|
346
552
|
} }
|
|
347
|
-
function
|
|
348
|
-
const
|
|
349
|
-
i0.ɵɵelementStart(0, "button",
|
|
350
|
-
i0.ɵɵlistener("click", function
|
|
351
|
-
i0.ɵɵelement(1, "i",
|
|
553
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
554
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
555
|
+
i0.ɵɵelementStart(0, "button", 98);
|
|
556
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const subAgent_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(subAgent_r17, $event)); });
|
|
557
|
+
i0.ɵɵelement(1, "i", 99);
|
|
352
558
|
i0.ɵɵelementEnd();
|
|
353
559
|
} }
|
|
354
|
-
function
|
|
355
|
-
const
|
|
356
|
-
i0.ɵɵelementStart(0, "button",
|
|
357
|
-
i0.ɵɵlistener("click", function
|
|
358
|
-
i0.ɵɵelement(1, "i",
|
|
560
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
561
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
562
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
563
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r19); const subAgent_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeSubAgent(subAgent_r17, $event)); });
|
|
564
|
+
i0.ɵɵelement(1, "i", 89);
|
|
359
565
|
i0.ɵɵelementEnd();
|
|
360
566
|
} }
|
|
361
|
-
function
|
|
362
|
-
const
|
|
363
|
-
i0.ɵɵelementStart(0, "div",
|
|
364
|
-
i0.ɵɵlistener("click", function
|
|
365
|
-
i0.ɵɵelementStart(1, "div",
|
|
366
|
-
i0.ɵɵtemplate(2,
|
|
567
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
568
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
569
|
+
i0.ɵɵelementStart(0, "div", 93);
|
|
570
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const subAgent_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", subAgent_r17.ID)); });
|
|
571
|
+
i0.ɵɵelementStart(1, "div", 77);
|
|
572
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_2_Template, 1, 2, "img", 94)(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_3_Template, 1, 2, "i", 11);
|
|
367
573
|
i0.ɵɵelementEnd();
|
|
368
|
-
i0.ɵɵelementStart(4, "div",
|
|
574
|
+
i0.ɵɵelementStart(4, "div", 78)(5, "div", 79);
|
|
369
575
|
i0.ɵɵtext(6);
|
|
370
576
|
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵtemplate(7,
|
|
372
|
-
i0.ɵɵelementStart(8, "div",
|
|
373
|
-
i0.ɵɵtemplate(9,
|
|
577
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_7_Template, 2, 1, "div", 80);
|
|
578
|
+
i0.ɵɵelementStart(8, "div", 81);
|
|
579
|
+
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_9_Template, 2, 3, "span", 95)(10, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_10_Template, 2, 1, "span", 82);
|
|
374
580
|
i0.ɵɵelementEnd()();
|
|
375
|
-
i0.ɵɵelementStart(11, "div",
|
|
376
|
-
i0.ɵɵtemplate(12,
|
|
377
|
-
i0.ɵɵelement(14, "i",
|
|
581
|
+
i0.ɵɵelementStart(11, "div", 85);
|
|
582
|
+
i0.ɵɵtemplate(12, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_12_Template, 2, 0, "button", 96)(13, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_13_Template, 2, 0, "button", 97);
|
|
583
|
+
i0.ɵɵelement(14, "i", 87);
|
|
378
584
|
i0.ɵɵelementEnd()();
|
|
379
585
|
} if (rf & 2) {
|
|
380
|
-
const
|
|
586
|
+
const subAgent_r17 = ctx.$implicit;
|
|
381
587
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
382
588
|
i0.ɵɵadvance(2);
|
|
383
|
-
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(
|
|
589
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(subAgent_r17) ? 2 : 3);
|
|
384
590
|
i0.ɵɵadvance(4);
|
|
385
|
-
i0.ɵɵtextInterpolate(
|
|
591
|
+
i0.ɵɵtextInterpolate(subAgent_r17.Name || "Untitled Sub-Agent");
|
|
386
592
|
i0.ɵɵadvance();
|
|
387
|
-
i0.ɵɵconditional(
|
|
593
|
+
i0.ɵɵconditional(subAgent_r17.Description ? 7 : -1);
|
|
388
594
|
i0.ɵɵadvance(2);
|
|
389
|
-
i0.ɵɵconditional(
|
|
595
|
+
i0.ɵɵconditional(subAgent_r17.Status ? 9 : -1);
|
|
390
596
|
i0.ɵɵadvance();
|
|
391
|
-
i0.ɵɵconditional(
|
|
597
|
+
i0.ɵɵconditional(subAgent_r17.ExecutionMode ? 10 : -1);
|
|
392
598
|
i0.ɵɵadvance(2);
|
|
393
599
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 12 : -1);
|
|
394
600
|
i0.ɵɵadvance();
|
|
395
601
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteSubAgents ? 13 : -1);
|
|
396
602
|
} }
|
|
397
|
-
function
|
|
398
|
-
const
|
|
399
|
-
i0.ɵɵelementStart(0, "div",
|
|
400
|
-
i0.ɵɵlistener("click", function
|
|
603
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
604
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
605
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
606
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", "")); });
|
|
401
607
|
i0.ɵɵelementStart(1, "span");
|
|
402
608
|
i0.ɵɵtext(2);
|
|
403
609
|
i0.ɵɵelementEnd()();
|
|
@@ -406,10 +612,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Condit
|
|
|
406
612
|
i0.ɵɵadvance(2);
|
|
407
613
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.subAgentCount, " sub-agents...");
|
|
408
614
|
} }
|
|
409
|
-
function
|
|
410
|
-
i0.ɵɵelementStart(0, "div",
|
|
411
|
-
i0.ɵɵrepeaterCreate(1,
|
|
412
|
-
i0.ɵɵtemplate(3,
|
|
615
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
617
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template, 15, 7, "div", 92, _forTrack0);
|
|
618
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 40);
|
|
413
619
|
i0.ɵɵelementEnd();
|
|
414
620
|
} if (rf & 2) {
|
|
415
621
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -418,14 +624,14 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Condit
|
|
|
418
624
|
i0.ɵɵadvance(2);
|
|
419
625
|
i0.ɵɵconditional(ctx_r1.subAgentCount > ctx_r1.subAgents.length ? 3 : -1);
|
|
420
626
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵelementStart(0, "div",
|
|
627
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
628
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
423
629
|
i0.ɵɵtext(3, " Manage hierarchical relationships with child agents that work under this agent. ");
|
|
424
630
|
i0.ɵɵelementEnd();
|
|
425
|
-
i0.ɵɵelementStart(4, "div",
|
|
426
|
-
i0.ɵɵtemplate(5,
|
|
631
|
+
i0.ɵɵelementStart(4, "div", 68);
|
|
632
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template, 6, 0);
|
|
427
633
|
i0.ɵɵelementEnd()();
|
|
428
|
-
i0.ɵɵtemplate(6,
|
|
634
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Template, 7, 1, "div", 37)(7, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Template, 4, 1, "div", 70);
|
|
429
635
|
i0.ɵɵelementEnd();
|
|
430
636
|
} if (rf & 2) {
|
|
431
637
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -434,34 +640,33 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Templa
|
|
|
434
640
|
i0.ɵɵadvance();
|
|
435
641
|
i0.ɵɵconditional(ctx_r1.subAgentCount === 0 ? 6 : 7);
|
|
436
642
|
} }
|
|
437
|
-
function
|
|
643
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
438
644
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
439
|
-
i0.ɵɵtemplate(1,
|
|
645
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template, 8, 2, "ng-template", 26);
|
|
440
646
|
i0.ɵɵelementEnd();
|
|
441
647
|
} if (rf & 2) {
|
|
442
|
-
|
|
443
|
-
i0.ɵɵproperty("expanded", ctx_r1.subAgentCount > 0);
|
|
648
|
+
i0.ɵɵproperty("expanded", false);
|
|
444
649
|
} }
|
|
445
|
-
function
|
|
446
|
-
i0.ɵɵelement(0, "i",
|
|
650
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
651
|
+
i0.ɵɵelement(0, "i", 101);
|
|
447
652
|
i0.ɵɵtext(1);
|
|
448
653
|
} if (rf & 2) {
|
|
449
654
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
450
655
|
i0.ɵɵadvance();
|
|
451
656
|
i0.ɵɵtextInterpolate1(" Prompts", ctx_r1.promptCount > 0 ? " (" + ctx_r1.promptCount + ")" : "", " ");
|
|
452
657
|
} }
|
|
453
|
-
function
|
|
454
|
-
const
|
|
455
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
456
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
658
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
659
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
660
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 108);
|
|
661
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
457
662
|
i0.ɵɵelementEnd();
|
|
458
663
|
} if (rf & 2) {
|
|
459
664
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
460
665
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.ModelSelectionMode);
|
|
461
666
|
i0.ɵɵproperty("data", ctx_r1.modelSelectionModes)("valuePrimitive", true);
|
|
462
667
|
} }
|
|
463
|
-
function
|
|
464
|
-
i0.ɵɵelementStart(0, "span",
|
|
668
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
669
|
+
i0.ɵɵelementStart(0, "span", 107);
|
|
465
670
|
i0.ɵɵtext(1);
|
|
466
671
|
i0.ɵɵelementEnd();
|
|
467
672
|
} if (rf & 2) {
|
|
@@ -469,106 +674,106 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Condit
|
|
|
469
674
|
i0.ɵɵadvance();
|
|
470
675
|
i0.ɵɵtextInterpolate(ctx_r1.record.ModelSelectionMode || "Agent Type");
|
|
471
676
|
} }
|
|
472
|
-
function
|
|
473
|
-
const
|
|
474
|
-
i0.ɵɵelementStart(0, "button",
|
|
475
|
-
i0.ɵɵlistener("click", function
|
|
476
|
-
i0.ɵɵelement(1, "i",
|
|
677
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
678
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
679
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
680
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
681
|
+
i0.ɵɵelement(1, "i", 72);
|
|
477
682
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
478
683
|
i0.ɵɵelementEnd();
|
|
479
684
|
} }
|
|
480
|
-
function
|
|
481
|
-
const
|
|
482
|
-
i0.ɵɵelementStart(0, "button",
|
|
483
|
-
i0.ɵɵlistener("click", function
|
|
484
|
-
i0.ɵɵelement(1, "i",
|
|
685
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
686
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
687
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
688
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
689
|
+
i0.ɵɵelement(1, "i", 72);
|
|
485
690
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
486
691
|
i0.ɵɵelementEnd();
|
|
487
692
|
} }
|
|
488
|
-
function
|
|
489
|
-
i0.ɵɵelementStart(0, "div",
|
|
490
|
-
i0.ɵɵelement(1, "i",
|
|
693
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
694
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
695
|
+
i0.ɵɵelement(1, "i", 101);
|
|
491
696
|
i0.ɵɵelementStart(2, "h4");
|
|
492
697
|
i0.ɵɵtext(3, "No Prompts Configured");
|
|
493
698
|
i0.ɵɵelementEnd();
|
|
494
699
|
i0.ɵɵelementStart(4, "p");
|
|
495
700
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
496
701
|
i0.ɵɵelementEnd();
|
|
497
|
-
i0.ɵɵtemplate(6,
|
|
702
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_11_Conditional_6_Template, 3, 0, "button", 73);
|
|
498
703
|
i0.ɵɵelementEnd();
|
|
499
704
|
} if (rf & 2) {
|
|
500
705
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
501
706
|
i0.ɵɵadvance(6);
|
|
502
707
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? 6 : -1);
|
|
503
708
|
} }
|
|
504
|
-
function
|
|
505
|
-
i0.ɵɵelementStart(0, "div",
|
|
709
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
710
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
506
711
|
i0.ɵɵtext(1);
|
|
507
712
|
i0.ɵɵelementEnd();
|
|
508
713
|
} if (rf & 2) {
|
|
509
|
-
const
|
|
714
|
+
const prompt_r25 = i0.ɵɵnextContext().$implicit;
|
|
510
715
|
i0.ɵɵadvance();
|
|
511
|
-
i0.ɵɵtextInterpolate2("",
|
|
716
|
+
i0.ɵɵtextInterpolate2("", prompt_r25.TemplateText.substring(0, 120), "", prompt_r25.TemplateText.length > 120 ? "..." : "", "");
|
|
512
717
|
} }
|
|
513
|
-
function
|
|
514
|
-
i0.ɵɵelementStart(0, "span",
|
|
718
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
719
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
515
720
|
i0.ɵɵtext(1);
|
|
516
721
|
i0.ɵɵelementEnd();
|
|
517
722
|
} if (rf & 2) {
|
|
518
|
-
const
|
|
723
|
+
const prompt_r25 = i0.ɵɵnextContext().$implicit;
|
|
519
724
|
i0.ɵɵadvance();
|
|
520
|
-
i0.ɵɵtextInterpolate(
|
|
725
|
+
i0.ɵɵtextInterpolate(prompt_r25.PromptRole);
|
|
521
726
|
} }
|
|
522
|
-
function
|
|
523
|
-
const
|
|
524
|
-
i0.ɵɵelementStart(0, "button",
|
|
525
|
-
i0.ɵɵlistener("click", function
|
|
526
|
-
i0.ɵɵelement(1, "i",
|
|
727
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
728
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
729
|
+
i0.ɵɵelementStart(0, "button", 98);
|
|
730
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r26); const prompt_r25 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r25, $event)); });
|
|
731
|
+
i0.ɵɵelement(1, "i", 99);
|
|
527
732
|
i0.ɵɵelementEnd();
|
|
528
733
|
} }
|
|
529
|
-
function
|
|
530
|
-
const
|
|
531
|
-
i0.ɵɵelementStart(0, "button",
|
|
532
|
-
i0.ɵɵlistener("click", function
|
|
533
|
-
i0.ɵɵelement(1, "i",
|
|
734
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
735
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
736
|
+
i0.ɵɵelementStart(0, "button", 113);
|
|
737
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r27); const prompt_r25 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r25, $event)); });
|
|
738
|
+
i0.ɵɵelement(1, "i", 89);
|
|
534
739
|
i0.ɵɵelementEnd();
|
|
535
740
|
} }
|
|
536
|
-
function
|
|
537
|
-
const
|
|
538
|
-
i0.ɵɵelementStart(0, "div",
|
|
539
|
-
i0.ɵɵlistener("click", function
|
|
540
|
-
i0.ɵɵelementStart(1, "div",
|
|
541
|
-
i0.ɵɵelement(2, "i",
|
|
741
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
742
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
743
|
+
i0.ɵɵelementStart(0, "div", 110);
|
|
744
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Template_div_click_0_listener() { const prompt_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", prompt_r25.ID)); });
|
|
745
|
+
i0.ɵɵelementStart(1, "div", 77);
|
|
746
|
+
i0.ɵɵelement(2, "i", 111);
|
|
542
747
|
i0.ɵɵelementEnd();
|
|
543
|
-
i0.ɵɵelementStart(3, "div",
|
|
748
|
+
i0.ɵɵelementStart(3, "div", 78)(4, "div", 79);
|
|
544
749
|
i0.ɵɵtext(5);
|
|
545
750
|
i0.ɵɵelementEnd();
|
|
546
|
-
i0.ɵɵtemplate(6,
|
|
547
|
-
i0.ɵɵelementStart(7, "div",
|
|
548
|
-
i0.ɵɵtemplate(8,
|
|
751
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_6_Template, 2, 2, "div", 80);
|
|
752
|
+
i0.ɵɵelementStart(7, "div", 81);
|
|
753
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_8_Template, 2, 1, "span", 82);
|
|
549
754
|
i0.ɵɵelementEnd()();
|
|
550
|
-
i0.ɵɵelementStart(9, "div",
|
|
551
|
-
i0.ɵɵtemplate(10,
|
|
552
|
-
i0.ɵɵelement(12, "i",
|
|
755
|
+
i0.ɵɵelementStart(9, "div", 85);
|
|
756
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_10_Template, 2, 0, "button", 96)(11, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Conditional_11_Template, 2, 0, "button", 112);
|
|
757
|
+
i0.ɵɵelement(12, "i", 87);
|
|
553
758
|
i0.ɵɵelementEnd()();
|
|
554
759
|
} if (rf & 2) {
|
|
555
|
-
const
|
|
760
|
+
const prompt_r25 = ctx.$implicit;
|
|
556
761
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
557
762
|
i0.ɵɵadvance(5);
|
|
558
|
-
i0.ɵɵtextInterpolate(
|
|
763
|
+
i0.ɵɵtextInterpolate(prompt_r25.Name);
|
|
559
764
|
i0.ɵɵadvance();
|
|
560
|
-
i0.ɵɵconditional(
|
|
765
|
+
i0.ɵɵconditional(prompt_r25.TemplateText ? 6 : -1);
|
|
561
766
|
i0.ɵɵadvance(2);
|
|
562
|
-
i0.ɵɵconditional(
|
|
767
|
+
i0.ɵɵconditional(prompt_r25.PromptRole ? 8 : -1);
|
|
563
768
|
i0.ɵɵadvance(2);
|
|
564
769
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePrompts ? 10 : -1);
|
|
565
770
|
i0.ɵɵadvance();
|
|
566
771
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeletePrompts ? 11 : -1);
|
|
567
772
|
} }
|
|
568
|
-
function
|
|
569
|
-
const
|
|
570
|
-
i0.ɵɵelementStart(0, "div",
|
|
571
|
-
i0.ɵɵlistener("click", function
|
|
773
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
774
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
775
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
776
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", "")); });
|
|
572
777
|
i0.ɵɵelementStart(1, "span");
|
|
573
778
|
i0.ɵɵtext(2);
|
|
574
779
|
i0.ɵɵelementEnd()();
|
|
@@ -577,10 +782,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Condit
|
|
|
577
782
|
i0.ɵɵadvance(2);
|
|
578
783
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
579
784
|
} }
|
|
580
|
-
function
|
|
581
|
-
i0.ɵɵelementStart(0, "div",
|
|
582
|
-
i0.ɵɵrepeaterCreate(1,
|
|
583
|
-
i0.ɵɵtemplate(3,
|
|
785
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
786
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
787
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_For_2_Template, 13, 5, "div", 109, _forTrack0);
|
|
788
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_Conditional_3_Template, 3, 1, "div", 40);
|
|
584
789
|
i0.ɵɵelementEnd();
|
|
585
790
|
} if (rf & 2) {
|
|
586
791
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -589,17 +794,17 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Condit
|
|
|
589
794
|
i0.ɵɵadvance(2);
|
|
590
795
|
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
591
796
|
} }
|
|
592
|
-
function
|
|
593
|
-
i0.ɵɵelementStart(0, "div",
|
|
594
|
-
i0.ɵɵelement(5, "i",
|
|
797
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
798
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 102)(3, "div", 103)(4, "label", 104);
|
|
799
|
+
i0.ɵɵelement(5, "i", 105);
|
|
595
800
|
i0.ɵɵtext(6, " Model Selection: ");
|
|
596
801
|
i0.ɵɵelementEnd();
|
|
597
|
-
i0.ɵɵtemplate(7,
|
|
802
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist", 106)(8, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_8_Template, 2, 1, "span", 107);
|
|
598
803
|
i0.ɵɵelementEnd()();
|
|
599
|
-
i0.ɵɵelementStart(9, "div",
|
|
600
|
-
i0.ɵɵtemplate(10,
|
|
804
|
+
i0.ɵɵelementStart(9, "div", 68);
|
|
805
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_10_Template, 3, 0, "button", 69);
|
|
601
806
|
i0.ɵɵelementEnd()();
|
|
602
|
-
i0.ɵɵtemplate(11,
|
|
807
|
+
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_11_Template, 7, 1, "div", 37)(12, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_12_Template, 4, 1, "div", 70);
|
|
603
808
|
i0.ɵɵelementEnd();
|
|
604
809
|
} if (rf & 2) {
|
|
605
810
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -610,24 +815,24 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Templa
|
|
|
610
815
|
i0.ɵɵadvance();
|
|
611
816
|
i0.ɵɵconditional(ctx_r1.promptCount === 0 ? 11 : 12);
|
|
612
817
|
} }
|
|
613
|
-
function
|
|
818
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
614
819
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
615
|
-
i0.ɵɵtemplate(1,
|
|
820
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template, 13, 3, "ng-template", 26);
|
|
616
821
|
i0.ɵɵelementEnd();
|
|
617
822
|
} if (rf & 2) {
|
|
618
|
-
i0.ɵɵproperty("expanded",
|
|
823
|
+
i0.ɵɵproperty("expanded", false);
|
|
619
824
|
} }
|
|
620
|
-
function
|
|
621
|
-
i0.ɵɵelement(0, "i",
|
|
825
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
826
|
+
i0.ɵɵelement(0, "i", 114);
|
|
622
827
|
i0.ɵɵtext(1);
|
|
623
828
|
} if (rf & 2) {
|
|
624
829
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
625
830
|
i0.ɵɵadvance();
|
|
626
831
|
i0.ɵɵtextInterpolate1(" Learning Cycles", ctx_r1.learningCycleCount > 0 ? " (" + ctx_r1.learningCycleCount + ")" : "", " ");
|
|
627
832
|
} }
|
|
628
|
-
function
|
|
629
|
-
i0.ɵɵelementStart(0, "div",
|
|
630
|
-
i0.ɵɵelement(1, "i",
|
|
833
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
834
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
835
|
+
i0.ɵɵelement(1, "i", 114);
|
|
631
836
|
i0.ɵɵelementStart(2, "h4");
|
|
632
837
|
i0.ɵɵtext(3, "No Learning Cycles");
|
|
633
838
|
i0.ɵɵelementEnd();
|
|
@@ -635,55 +840,55 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
635
840
|
i0.ɵɵtext(5, "Learning cycles will appear here as the agent processes requests and improves over time.");
|
|
636
841
|
i0.ɵɵelementEnd()();
|
|
637
842
|
} }
|
|
638
|
-
function
|
|
639
|
-
i0.ɵɵelementStart(0, "span",
|
|
640
|
-
i0.ɵɵelement(1, "i",
|
|
843
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
844
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
845
|
+
i0.ɵɵelement(1, "i", 117);
|
|
641
846
|
i0.ɵɵtext(2);
|
|
642
847
|
i0.ɵɵpipe(3, "date");
|
|
643
848
|
i0.ɵɵelementEnd();
|
|
644
849
|
} if (rf & 2) {
|
|
645
|
-
const
|
|
850
|
+
const cycle_r30 = i0.ɵɵnextContext().$implicit;
|
|
646
851
|
i0.ɵɵadvance(2);
|
|
647
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
852
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r30.StartedAt, "short"), " ");
|
|
648
853
|
} }
|
|
649
|
-
function
|
|
650
|
-
i0.ɵɵelementStart(0, "span",
|
|
854
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
855
|
+
i0.ɵɵelementStart(0, "span", 83);
|
|
651
856
|
i0.ɵɵtext(1);
|
|
652
857
|
i0.ɵɵelementEnd();
|
|
653
858
|
} if (rf & 2) {
|
|
654
|
-
const
|
|
859
|
+
const cycle_r30 = i0.ɵɵnextContext().$implicit;
|
|
655
860
|
i0.ɵɵadvance();
|
|
656
|
-
i0.ɵɵtextInterpolate(
|
|
861
|
+
i0.ɵɵtextInterpolate(cycle_r30.Status);
|
|
657
862
|
} }
|
|
658
|
-
function
|
|
659
|
-
const
|
|
660
|
-
i0.ɵɵelementStart(0, "div",
|
|
661
|
-
i0.ɵɵlistener("click", function
|
|
662
|
-
i0.ɵɵelementStart(1, "div",
|
|
663
|
-
i0.ɵɵelement(2, "i",
|
|
863
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
864
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
865
|
+
i0.ɵɵelementStart(0, "div", 116);
|
|
866
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", cycle_r30.ID)); });
|
|
867
|
+
i0.ɵɵelementStart(1, "div", 77);
|
|
868
|
+
i0.ɵɵelement(2, "i", 114);
|
|
664
869
|
i0.ɵɵelementEnd();
|
|
665
|
-
i0.ɵɵelementStart(3, "div",
|
|
870
|
+
i0.ɵɵelementStart(3, "div", 78)(4, "div", 79);
|
|
666
871
|
i0.ɵɵtext(5);
|
|
667
872
|
i0.ɵɵelementEnd();
|
|
668
|
-
i0.ɵɵelementStart(6, "div",
|
|
669
|
-
i0.ɵɵtemplate(7,
|
|
873
|
+
i0.ɵɵelementStart(6, "div", 81);
|
|
874
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 82)(8, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 83);
|
|
670
875
|
i0.ɵɵelementEnd()();
|
|
671
|
-
i0.ɵɵelementStart(9, "div",
|
|
672
|
-
i0.ɵɵelement(10, "i",
|
|
876
|
+
i0.ɵɵelementStart(9, "div", 85);
|
|
877
|
+
i0.ɵɵelement(10, "i", 87);
|
|
673
878
|
i0.ɵɵelementEnd()();
|
|
674
879
|
} if (rf & 2) {
|
|
675
|
-
const
|
|
880
|
+
const cycle_r30 = ctx.$implicit;
|
|
676
881
|
i0.ɵɵadvance(5);
|
|
677
|
-
i0.ɵɵtextInterpolate1("Learning Cycle ",
|
|
882
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r30.ID.substring(0, 8), "");
|
|
678
883
|
i0.ɵɵadvance(2);
|
|
679
|
-
i0.ɵɵconditional(
|
|
884
|
+
i0.ɵɵconditional(cycle_r30.StartedAt ? 7 : -1);
|
|
680
885
|
i0.ɵɵadvance();
|
|
681
|
-
i0.ɵɵconditional(
|
|
886
|
+
i0.ɵɵconditional(cycle_r30.Status ? 8 : -1);
|
|
682
887
|
} }
|
|
683
|
-
function
|
|
684
|
-
const
|
|
685
|
-
i0.ɵɵelementStart(0, "div",
|
|
686
|
-
i0.ɵɵlistener("click", function
|
|
888
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
889
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
890
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
891
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
687
892
|
i0.ɵɵelementStart(1, "span");
|
|
688
893
|
i0.ɵɵtext(2);
|
|
689
894
|
i0.ɵɵelementEnd()();
|
|
@@ -692,10 +897,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
692
897
|
i0.ɵɵadvance(2);
|
|
693
898
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
694
899
|
} }
|
|
695
|
-
function
|
|
696
|
-
i0.ɵɵelementStart(0, "div",
|
|
697
|
-
i0.ɵɵrepeaterCreate(1,
|
|
698
|
-
i0.ɵɵtemplate(3,
|
|
900
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
901
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
902
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 115, _forTrack0);
|
|
903
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 40);
|
|
699
904
|
i0.ɵɵelementEnd();
|
|
700
905
|
} if (rf & 2) {
|
|
701
906
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -704,114 +909,114 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
704
909
|
i0.ɵɵadvance(2);
|
|
705
910
|
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
706
911
|
} }
|
|
707
|
-
function
|
|
708
|
-
i0.ɵɵelementStart(0, "div",
|
|
912
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
913
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
709
914
|
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
710
915
|
i0.ɵɵelementEnd()();
|
|
711
|
-
i0.ɵɵtemplate(4,
|
|
916
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_4_Template, 6, 0, "div", 37)(5, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template, 4, 1, "div", 70);
|
|
712
917
|
i0.ɵɵelementEnd();
|
|
713
918
|
} if (rf & 2) {
|
|
714
919
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
715
920
|
i0.ɵɵadvance(4);
|
|
716
921
|
i0.ɵɵconditional(ctx_r1.learningCycleCount === 0 ? 4 : 5);
|
|
717
922
|
} }
|
|
718
|
-
function
|
|
923
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
719
924
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
720
|
-
i0.ɵɵtemplate(1,
|
|
925
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template, 6, 1, "ng-template", 26);
|
|
721
926
|
i0.ɵɵelementEnd();
|
|
722
927
|
} if (rf & 2) {
|
|
723
928
|
i0.ɵɵproperty("expanded", false);
|
|
724
929
|
} }
|
|
725
|
-
function
|
|
726
|
-
i0.ɵɵelement(0, "i",
|
|
930
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
931
|
+
i0.ɵɵelement(0, "i", 118);
|
|
727
932
|
i0.ɵɵtext(1);
|
|
728
933
|
} if (rf & 2) {
|
|
729
934
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
730
935
|
i0.ɵɵadvance();
|
|
731
936
|
i0.ɵɵtextInterpolate1(" Notes", ctx_r1.noteCount > 0 ? " (" + ctx_r1.noteCount + ")" : "", " ");
|
|
732
937
|
} }
|
|
733
|
-
function
|
|
734
|
-
const
|
|
735
|
-
i0.ɵɵelementStart(0, "button",
|
|
736
|
-
i0.ɵɵlistener("click", function
|
|
737
|
-
i0.ɵɵelement(1, "i",
|
|
938
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
939
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
940
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
941
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
942
|
+
i0.ɵɵelement(1, "i", 72);
|
|
738
943
|
i0.ɵɵtext(2, " Add Note ");
|
|
739
944
|
i0.ɵɵelementEnd();
|
|
740
945
|
} }
|
|
741
|
-
function
|
|
742
|
-
const
|
|
743
|
-
i0.ɵɵelementStart(0, "button",
|
|
744
|
-
i0.ɵɵlistener("click", function
|
|
745
|
-
i0.ɵɵelement(1, "i",
|
|
946
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
947
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
948
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
949
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
950
|
+
i0.ɵɵelement(1, "i", 72);
|
|
746
951
|
i0.ɵɵtext(2, " Create First Note ");
|
|
747
952
|
i0.ɵɵelementEnd();
|
|
748
953
|
} }
|
|
749
|
-
function
|
|
750
|
-
i0.ɵɵelementStart(0, "div",
|
|
751
|
-
i0.ɵɵelement(1, "i",
|
|
954
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
955
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
956
|
+
i0.ɵɵelement(1, "i", 118);
|
|
752
957
|
i0.ɵɵelementStart(2, "h4");
|
|
753
958
|
i0.ɵɵtext(3, "No Notes");
|
|
754
959
|
i0.ɵɵelementEnd();
|
|
755
960
|
i0.ɵɵelementStart(4, "p");
|
|
756
961
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
757
962
|
i0.ɵɵelementEnd();
|
|
758
|
-
i0.ɵɵtemplate(6,
|
|
963
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "button", 73);
|
|
759
964
|
i0.ɵɵelementEnd();
|
|
760
965
|
} if (rf & 2) {
|
|
761
966
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
762
967
|
i0.ɵɵadvance(6);
|
|
763
968
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? 6 : -1);
|
|
764
969
|
} }
|
|
765
|
-
function
|
|
766
|
-
i0.ɵɵelementStart(0, "div",
|
|
970
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
971
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
767
972
|
i0.ɵɵtext(1);
|
|
768
973
|
i0.ɵɵelementEnd();
|
|
769
974
|
} if (rf & 2) {
|
|
770
|
-
const
|
|
975
|
+
const note_r35 = i0.ɵɵnextContext().$implicit;
|
|
771
976
|
i0.ɵɵadvance();
|
|
772
|
-
i0.ɵɵtextInterpolate2("",
|
|
977
|
+
i0.ɵɵtextInterpolate2("", note_r35.Note.substring(0, 100), "", note_r35.Note.length > 100 ? "..." : "", "");
|
|
773
978
|
} }
|
|
774
|
-
function
|
|
775
|
-
i0.ɵɵelementStart(0, "span",
|
|
776
|
-
i0.ɵɵelement(1, "i",
|
|
979
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
980
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
981
|
+
i0.ɵɵelement(1, "i", 117);
|
|
777
982
|
i0.ɵɵtext(2);
|
|
778
983
|
i0.ɵɵpipe(3, "date");
|
|
779
984
|
i0.ɵɵelementEnd();
|
|
780
985
|
} if (rf & 2) {
|
|
781
|
-
const
|
|
986
|
+
const note_r35 = i0.ɵɵnextContext().$implicit;
|
|
782
987
|
i0.ɵɵadvance(2);
|
|
783
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
988
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r35.__mj_CreatedAt, "short"), " ");
|
|
784
989
|
} }
|
|
785
|
-
function
|
|
786
|
-
const
|
|
787
|
-
i0.ɵɵelementStart(0, "div",
|
|
788
|
-
i0.ɵɵlistener("click", function
|
|
789
|
-
i0.ɵɵelementStart(1, "div",
|
|
790
|
-
i0.ɵɵelement(2, "i",
|
|
990
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
991
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
992
|
+
i0.ɵɵelementStart(0, "div", 120);
|
|
993
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r35 = i0.ɵɵrestoreView(_r34).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", note_r35.ID)); });
|
|
994
|
+
i0.ɵɵelementStart(1, "div", 77);
|
|
995
|
+
i0.ɵɵelement(2, "i", 118);
|
|
791
996
|
i0.ɵɵelementEnd();
|
|
792
|
-
i0.ɵɵelementStart(3, "div",
|
|
997
|
+
i0.ɵɵelementStart(3, "div", 78)(4, "div", 79);
|
|
793
998
|
i0.ɵɵtext(5);
|
|
794
999
|
i0.ɵɵelementEnd();
|
|
795
|
-
i0.ɵɵtemplate(6,
|
|
796
|
-
i0.ɵɵelementStart(7, "div",
|
|
797
|
-
i0.ɵɵtemplate(8,
|
|
1000
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 80);
|
|
1001
|
+
i0.ɵɵelementStart(7, "div", 81);
|
|
1002
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 82);
|
|
798
1003
|
i0.ɵɵelementEnd()();
|
|
799
|
-
i0.ɵɵelementStart(9, "div",
|
|
800
|
-
i0.ɵɵelement(10, "i",
|
|
1004
|
+
i0.ɵɵelementStart(9, "div", 85);
|
|
1005
|
+
i0.ɵɵelement(10, "i", 87);
|
|
801
1006
|
i0.ɵɵelementEnd()();
|
|
802
1007
|
} if (rf & 2) {
|
|
803
|
-
const
|
|
1008
|
+
const note_r35 = ctx.$implicit;
|
|
804
1009
|
i0.ɵɵadvance(5);
|
|
805
|
-
i0.ɵɵtextInterpolate(
|
|
1010
|
+
i0.ɵɵtextInterpolate(note_r35.Type || "Note");
|
|
806
1011
|
i0.ɵɵadvance();
|
|
807
|
-
i0.ɵɵconditional(
|
|
1012
|
+
i0.ɵɵconditional(note_r35.Note ? 6 : -1);
|
|
808
1013
|
i0.ɵɵadvance(2);
|
|
809
|
-
i0.ɵɵconditional(
|
|
1014
|
+
i0.ɵɵconditional(note_r35.__mj_CreatedAt ? 8 : -1);
|
|
810
1015
|
} }
|
|
811
|
-
function
|
|
812
|
-
const
|
|
813
|
-
i0.ɵɵelementStart(0, "div",
|
|
814
|
-
i0.ɵɵlistener("click", function
|
|
1016
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1017
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
1018
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
1019
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", "")); });
|
|
815
1020
|
i0.ɵɵelementStart(1, "span");
|
|
816
1021
|
i0.ɵɵtext(2);
|
|
817
1022
|
i0.ɵɵelementEnd()();
|
|
@@ -820,10 +1025,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Condit
|
|
|
820
1025
|
i0.ɵɵadvance(2);
|
|
821
1026
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
822
1027
|
} }
|
|
823
|
-
function
|
|
824
|
-
i0.ɵɵelementStart(0, "div",
|
|
825
|
-
i0.ɵɵrepeaterCreate(1,
|
|
826
|
-
i0.ɵɵtemplate(3,
|
|
1028
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1029
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
1030
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 119, _forTrack0);
|
|
1031
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 40);
|
|
827
1032
|
i0.ɵɵelementEnd();
|
|
828
1033
|
} if (rf & 2) {
|
|
829
1034
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -832,14 +1037,14 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Condit
|
|
|
832
1037
|
i0.ɵɵadvance(2);
|
|
833
1038
|
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
834
1039
|
} }
|
|
835
|
-
function
|
|
836
|
-
i0.ɵɵelementStart(0, "div",
|
|
1040
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1041
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
837
1042
|
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
838
1043
|
i0.ɵɵelementEnd();
|
|
839
|
-
i0.ɵɵelementStart(4, "div",
|
|
840
|
-
i0.ɵɵtemplate(5,
|
|
1044
|
+
i0.ɵɵelementStart(4, "div", 68);
|
|
1045
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template, 3, 0, "button", 69);
|
|
841
1046
|
i0.ɵɵelementEnd()();
|
|
842
|
-
i0.ɵɵtemplate(6,
|
|
1047
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_6_Template, 7, 1, "div", 37)(7, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_7_Template, 4, 1, "div", 70);
|
|
843
1048
|
i0.ɵɵelementEnd();
|
|
844
1049
|
} if (rf & 2) {
|
|
845
1050
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -848,216 +1053,9 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Templa
|
|
|
848
1053
|
i0.ɵɵadvance();
|
|
849
1054
|
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 6 : 7);
|
|
850
1055
|
} }
|
|
851
|
-
function AIAgentFormComponentExtended_form_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
852
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
853
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template, 8, 2, "ng-template", 26);
|
|
854
|
-
i0.ɵɵelementEnd();
|
|
855
|
-
} if (rf & 2) {
|
|
856
|
-
i0.ɵɵproperty("expanded", false);
|
|
857
|
-
} }
|
|
858
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
859
|
-
i0.ɵɵelement(0, "i", 93);
|
|
860
|
-
i0.ɵɵtext(1);
|
|
861
|
-
} if (rf & 2) {
|
|
862
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
863
|
-
i0.ɵɵadvance();
|
|
864
|
-
i0.ɵɵtextInterpolate1(" Execution History", ctx_r1.executionHistoryCount > 0 ? " (" + ctx_r1.executionHistoryCount + ")" : "", " ");
|
|
865
|
-
} }
|
|
866
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
867
|
-
i0.ɵɵelementStart(0, "div", 38);
|
|
868
|
-
i0.ɵɵelement(1, "i", 93);
|
|
869
|
-
i0.ɵɵelementStart(2, "h4");
|
|
870
|
-
i0.ɵɵtext(3, "No Execution History");
|
|
871
|
-
i0.ɵɵelementEnd();
|
|
872
|
-
i0.ɵɵelementStart(4, "p");
|
|
873
|
-
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
874
|
-
i0.ɵɵelementEnd()();
|
|
875
|
-
} }
|
|
876
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
877
|
-
i0.ɵɵelementStart(0, "span", 105);
|
|
878
|
-
i0.ɵɵelement(1, "i", 111);
|
|
879
|
-
i0.ɵɵtext(2);
|
|
880
|
-
i0.ɵɵelementEnd();
|
|
881
|
-
} if (rf & 2) {
|
|
882
|
-
const execution_r35 = i0.ɵɵnextContext().$implicit;
|
|
883
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
884
|
-
i0.ɵɵadvance(2);
|
|
885
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatExecutionTimeFromDates(execution_r35.StartedAt, execution_r35.CompletedAt), " ");
|
|
886
|
-
} }
|
|
887
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
888
|
-
i0.ɵɵelementStart(0, "div", 109);
|
|
889
|
-
i0.ɵɵtext(1);
|
|
890
|
-
i0.ɵɵelementEnd();
|
|
891
|
-
} if (rf & 2) {
|
|
892
|
-
const execution_r35 = i0.ɵɵnextContext().$implicit;
|
|
893
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
894
|
-
i0.ɵɵadvance();
|
|
895
|
-
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultPreview(execution_r35, true));
|
|
896
|
-
} }
|
|
897
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
898
|
-
i0.ɵɵelementStart(0, "div", 112)(1, "h5");
|
|
899
|
-
i0.ɵɵtext(2, "Result");
|
|
900
|
-
i0.ɵɵelementEnd();
|
|
901
|
-
i0.ɵɵelement(3, "mj-code-editor", 118);
|
|
902
|
-
i0.ɵɵelementEnd();
|
|
903
|
-
} if (rf & 2) {
|
|
904
|
-
const execution_r35 = i0.ɵɵnextContext(2).$implicit;
|
|
905
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
906
|
-
i0.ɵɵadvance(3);
|
|
907
|
-
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r35, false))("readonly", true)("lineWrapping", true);
|
|
908
|
-
} }
|
|
909
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
910
|
-
i0.ɵɵelementStart(0, "div", 113)(1, "h5");
|
|
911
|
-
i0.ɵɵelement(2, "i", 119);
|
|
912
|
-
i0.ɵɵtext(3, " Error");
|
|
913
|
-
i0.ɵɵelementEnd();
|
|
914
|
-
i0.ɵɵelementStart(4, "div", 120);
|
|
915
|
-
i0.ɵɵtext(5);
|
|
916
|
-
i0.ɵɵelementEnd()();
|
|
917
|
-
} if (rf & 2) {
|
|
918
|
-
const execution_r35 = i0.ɵɵnextContext(2).$implicit;
|
|
919
|
-
i0.ɵɵadvance(5);
|
|
920
|
-
i0.ɵɵtextInterpolate(execution_r35.ErrorMessage);
|
|
921
|
-
} }
|
|
922
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
923
|
-
i0.ɵɵelementStart(0, "div", 115)(1, "span", 116);
|
|
924
|
-
i0.ɵɵtext(2, "Completed:");
|
|
925
|
-
i0.ɵɵelementEnd();
|
|
926
|
-
i0.ɵɵelementStart(3, "span", 117);
|
|
927
|
-
i0.ɵɵtext(4);
|
|
928
|
-
i0.ɵɵpipe(5, "date");
|
|
929
|
-
i0.ɵɵelementEnd()();
|
|
930
|
-
} if (rf & 2) {
|
|
931
|
-
const execution_r35 = i0.ɵɵnextContext(2).$implicit;
|
|
932
|
-
i0.ɵɵadvance(4);
|
|
933
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, execution_r35.CompletedAt, "medium"));
|
|
934
|
-
} }
|
|
935
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
936
|
-
i0.ɵɵelementStart(0, "div", 115)(1, "span", 116);
|
|
937
|
-
i0.ɵɵtext(2, "Conversation:");
|
|
938
|
-
i0.ɵɵelementEnd();
|
|
939
|
-
i0.ɵɵelementStart(3, "span", 117);
|
|
940
|
-
i0.ɵɵtext(4);
|
|
941
|
-
i0.ɵɵelementEnd()();
|
|
942
|
-
} if (rf & 2) {
|
|
943
|
-
const execution_r35 = i0.ɵɵnextContext(2).$implicit;
|
|
944
|
-
i0.ɵɵadvance(4);
|
|
945
|
-
i0.ɵɵtextInterpolate(execution_r35.ConversationID);
|
|
946
|
-
} }
|
|
947
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
948
|
-
i0.ɵɵelementStart(0, "div", 110);
|
|
949
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template, 4, 3, "div", 112)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template, 6, 1, "div", 113);
|
|
950
|
-
i0.ɵɵelementStart(3, "div", 114)(4, "div", 115)(5, "span", 116);
|
|
951
|
-
i0.ɵɵtext(6, "Started:");
|
|
952
|
-
i0.ɵɵelementEnd();
|
|
953
|
-
i0.ɵɵelementStart(7, "span", 117);
|
|
954
|
-
i0.ɵɵtext(8);
|
|
955
|
-
i0.ɵɵpipe(9, "date");
|
|
956
|
-
i0.ɵɵelementEnd()();
|
|
957
|
-
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template, 6, 4, "div", 115)(11, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template, 5, 1, "div", 115);
|
|
958
|
-
i0.ɵɵelementEnd()();
|
|
959
|
-
} if (rf & 2) {
|
|
960
|
-
const execution_r35 = i0.ɵɵnextContext().$implicit;
|
|
961
|
-
i0.ɵɵadvance();
|
|
962
|
-
i0.ɵɵconditional(execution_r35.Result ? 1 : -1);
|
|
963
|
-
i0.ɵɵadvance();
|
|
964
|
-
i0.ɵɵconditional(execution_r35.ErrorMessage ? 2 : -1);
|
|
965
|
-
i0.ɵɵadvance(6);
|
|
966
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, execution_r35.StartedAt, "medium"));
|
|
967
|
-
i0.ɵɵadvance(2);
|
|
968
|
-
i0.ɵɵconditional(execution_r35.CompletedAt ? 10 : -1);
|
|
969
|
-
i0.ɵɵadvance();
|
|
970
|
-
i0.ɵɵconditional(execution_r35.ConversationID ? 11 : -1);
|
|
971
|
-
} }
|
|
972
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
973
|
-
const _r34 = i0.ɵɵgetCurrentView();
|
|
974
|
-
i0.ɵɵelementStart(0, "div", 97)(1, "div")(2, "div", 98);
|
|
975
|
-
i0.ɵɵelement(3, "i");
|
|
976
|
-
i0.ɵɵelementEnd();
|
|
977
|
-
i0.ɵɵelementStart(4, "div", 99)(5, "div", 100);
|
|
978
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template_div_click_5_listener() { const execution_r35 = i0.ɵɵrestoreView(_r34).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r35.ID)); });
|
|
979
|
-
i0.ɵɵelementStart(6, "div")(7, "div", 101);
|
|
980
|
-
i0.ɵɵelement(8, "i", 102);
|
|
981
|
-
i0.ɵɵtext(9);
|
|
982
|
-
i0.ɵɵelementStart(10, "span", 103);
|
|
983
|
-
i0.ɵɵtext(11);
|
|
984
|
-
i0.ɵɵpipe(12, "date");
|
|
985
|
-
i0.ɵɵelementEnd()();
|
|
986
|
-
i0.ɵɵelementStart(13, "div", 104)(14, "span", 28);
|
|
987
|
-
i0.ɵɵtext(15);
|
|
988
|
-
i0.ɵɵelementEnd();
|
|
989
|
-
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_16_Template, 3, 1, "span", 105);
|
|
990
|
-
i0.ɵɵelementStart(17, "div", 106)(18, "button", 107);
|
|
991
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template_button_click_18_listener($event) { const execution_r35 = i0.ɵɵrestoreView(_r34).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r35.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
992
|
-
i0.ɵɵelement(19, "i", 108);
|
|
993
|
-
i0.ɵɵelementEnd()()();
|
|
994
|
-
i0.ɵɵtemplate(20, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_20_Template, 2, 1, "div", 109);
|
|
995
|
-
i0.ɵɵelementEnd()();
|
|
996
|
-
i0.ɵɵtemplate(21, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_21_Template, 12, 8, "div", 110);
|
|
997
|
-
i0.ɵɵelementEnd()()();
|
|
998
|
-
} if (rf & 2) {
|
|
999
|
-
const execution_r35 = ctx.$implicit;
|
|
1000
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1001
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r35.ID]);
|
|
1002
|
-
i0.ɵɵadvance(2);
|
|
1003
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r35.Status));
|
|
1004
|
-
i0.ɵɵadvance();
|
|
1005
|
-
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r35.Status));
|
|
1006
|
-
i0.ɵɵadvance(5);
|
|
1007
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r35.ID]);
|
|
1008
|
-
i0.ɵɵadvance();
|
|
1009
|
-
i0.ɵɵtextInterpolate1(" Execution #", execution_r35.ID.substring(0, 8), " ");
|
|
1010
|
-
i0.ɵɵadvance(2);
|
|
1011
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16, execution_r35.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
1012
|
-
i0.ɵɵadvance(3);
|
|
1013
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r35.Status));
|
|
1014
|
-
i0.ɵɵadvance();
|
|
1015
|
-
i0.ɵɵtextInterpolate1(" ", execution_r35.Status || "Unknown", " ");
|
|
1016
|
-
i0.ɵɵadvance();
|
|
1017
|
-
i0.ɵɵconditional(execution_r35.CompletedAt ? 16 : -1);
|
|
1018
|
-
i0.ɵɵadvance(4);
|
|
1019
|
-
i0.ɵɵconditional(execution_r35.Result && !ctx_r1.expandedExecutions[execution_r35.ID] ? 20 : -1);
|
|
1020
|
-
i0.ɵɵadvance();
|
|
1021
|
-
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r35.ID] ? 21 : -1);
|
|
1022
|
-
} }
|
|
1023
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1024
|
-
const _r36 = i0.ɵɵgetCurrentView();
|
|
1025
|
-
i0.ɵɵelementStart(0, "div", 60);
|
|
1026
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
1027
|
-
i0.ɵɵelementStart(1, "span");
|
|
1028
|
-
i0.ɵɵtext(2);
|
|
1029
|
-
i0.ɵɵelementEnd()();
|
|
1030
|
-
} if (rf & 2) {
|
|
1031
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1032
|
-
i0.ɵɵadvance(2);
|
|
1033
|
-
i0.ɵɵtextInterpolate1("View all ", ctx_r1.executionHistoryCount, " executions...");
|
|
1034
|
-
} }
|
|
1035
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1036
|
-
i0.ɵɵelementStart(0, "div", 95);
|
|
1037
|
-
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template, 22, 19, "div", 96, _forTrack0);
|
|
1038
|
-
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
1039
|
-
i0.ɵɵelementEnd();
|
|
1040
|
-
} if (rf & 2) {
|
|
1041
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1042
|
-
i0.ɵɵadvance();
|
|
1043
|
-
i0.ɵɵrepeater(ctx_r1.recentExecutions);
|
|
1044
|
-
i0.ɵɵadvance(2);
|
|
1045
|
-
i0.ɵɵconditional(ctx_r1.executionHistoryCount > ctx_r1.recentExecutions.length ? 3 : -1);
|
|
1046
|
-
} }
|
|
1047
|
-
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1048
|
-
i0.ɵɵelementStart(0, "div", 94)(1, "div", 35)(2, "div", 61);
|
|
1049
|
-
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
1050
|
-
i0.ɵɵelementEnd()();
|
|
1051
|
-
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template, 6, 0, "div", 38)(5, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template, 4, 1, "div", 95);
|
|
1052
|
-
i0.ɵɵelementEnd();
|
|
1053
|
-
} if (rf & 2) {
|
|
1054
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1055
|
-
i0.ɵɵadvance(4);
|
|
1056
|
-
i0.ɵɵconditional(ctx_r1.executionHistoryCount === 0 ? 4 : 5);
|
|
1057
|
-
} }
|
|
1058
1056
|
function AIAgentFormComponentExtended_form_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1059
1057
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
1060
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template,
|
|
1058
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template, 8, 2, "ng-template", 26);
|
|
1061
1059
|
i0.ɵɵelementEnd();
|
|
1062
1060
|
} if (rf & 2) {
|
|
1063
1061
|
i0.ɵɵproperty("expanded", false);
|
|
@@ -1068,11 +1066,11 @@ function AIAgentFormComponentExtended_form_2_ng_template_29_Template(rf, ctx) {
|
|
|
1068
1066
|
} }
|
|
1069
1067
|
function AIAgentFormComponentExtended_form_2_ng_template_30_Template(rf, ctx) { if (rf & 1) {
|
|
1070
1068
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
1071
|
-
i0.ɵɵelementStart(0, "div",
|
|
1069
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
1072
1070
|
i0.ɵɵtext(3, " Configure how this agent handles data payloads and validation. ");
|
|
1073
1071
|
i0.ɵɵelementEnd()();
|
|
1074
1072
|
i0.ɵɵelementStart(4, "div", 122)(5, "h4", 123);
|
|
1075
|
-
i0.ɵɵelement(6, "i",
|
|
1073
|
+
i0.ɵɵelement(6, "i", 99);
|
|
1076
1074
|
i0.ɵɵtext(7, " Configuration ");
|
|
1077
1075
|
i0.ɵɵelementEnd();
|
|
1078
1076
|
i0.ɵɵelementStart(8, "div", 124);
|
|
@@ -1152,7 +1150,7 @@ function AIAgentFormComponentExtended_form_2_ng_template_32_Template(rf, ctx) {
|
|
|
1152
1150
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1153
1151
|
} }
|
|
1154
1152
|
function AIAgentFormComponentExtended_form_2_ng_template_33_Template(rf, ctx) { if (rf & 1) {
|
|
1155
|
-
i0.ɵɵelementStart(0, "div",
|
|
1153
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
1156
1154
|
i0.ɵɵtext(3, " Set limits to prevent runaway agent executions and control resource usage. ");
|
|
1157
1155
|
i0.ɵɵelementEnd()();
|
|
1158
1156
|
i0.ɵɵelementStart(4, "div", 142);
|
|
@@ -1170,12 +1168,12 @@ function AIAgentFormComponentExtended_form_2_ng_template_33_Template(rf, ctx) {
|
|
|
1170
1168
|
i0.ɵɵproperty("EditMode", ctx_r1.EditMode)("record", ctx_r1.record);
|
|
1171
1169
|
} }
|
|
1172
1170
|
function AIAgentFormComponentExtended_form_2_ng_template_35_Template(rf, ctx) { if (rf & 1) {
|
|
1173
|
-
i0.ɵɵelement(0, "i",
|
|
1171
|
+
i0.ɵɵelement(0, "i", 99);
|
|
1174
1172
|
i0.ɵɵtext(1, " Configuration ");
|
|
1175
1173
|
} }
|
|
1176
1174
|
function AIAgentFormComponentExtended_form_2_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
1177
1175
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
1178
|
-
i0.ɵɵelementStart(0, "div",
|
|
1176
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 35)(2, "div", 36);
|
|
1179
1177
|
i0.ɵɵtext(3, " Advanced configuration settings for agent behavior and execution. ");
|
|
1180
1178
|
i0.ɵɵelementEnd()();
|
|
1181
1179
|
i0.ɵɵelementStart(4, "div", 142);
|
|
@@ -1508,50 +1506,64 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1508
1506
|
return;
|
|
1509
1507
|
try {
|
|
1510
1508
|
const rv = new RunView();
|
|
1511
|
-
//
|
|
1512
|
-
const
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1509
|
+
// Execute all queries in a single batch for better performance
|
|
1510
|
+
const results = await rv.RunViews([
|
|
1511
|
+
// Sub-agents
|
|
1512
|
+
{
|
|
1513
|
+
EntityName: 'AI Agents',
|
|
1514
|
+
ExtraFilter: `ParentID='${this.record.ID}'`,
|
|
1515
|
+
OrderBy: 'Name ASC'
|
|
1516
|
+
},
|
|
1517
|
+
// Prompts
|
|
1518
|
+
{
|
|
1519
|
+
EntityName: 'AI Prompts',
|
|
1520
|
+
ExtraFilter: `ID IN (SELECT PromptID FROM __mj.vwAIAgentPrompts WHERE AgentID='${this.record.ID}')`
|
|
1521
|
+
},
|
|
1522
|
+
// Actions
|
|
1523
|
+
{
|
|
1524
|
+
EntityName: 'Actions',
|
|
1525
|
+
ExtraFilter: `ID IN (SELECT ActionID FROM __mj.vwAIAgentActions WHERE AgentID='${this.record.ID}')`,
|
|
1526
|
+
OrderBy: 'Name ASC'
|
|
1527
|
+
},
|
|
1528
|
+
// Learning cycles
|
|
1529
|
+
{
|
|
1530
|
+
EntityName: 'AI Agent Learning Cycles',
|
|
1531
|
+
ExtraFilter: `AgentID='${this.record.ID}'`,
|
|
1532
|
+
OrderBy: 'StartedAt DESC'
|
|
1533
|
+
},
|
|
1534
|
+
// Notes
|
|
1535
|
+
{
|
|
1536
|
+
EntityName: 'AI Agent Notes',
|
|
1537
|
+
ExtraFilter: `AgentID='${this.record.ID}'`
|
|
1538
|
+
},
|
|
1539
|
+
// Execution history
|
|
1540
|
+
{
|
|
1541
|
+
EntityName: 'MJ: AI Agent Runs',
|
|
1542
|
+
ExtraFilter: `AgentID='${this.record.ID}'`,
|
|
1543
|
+
OrderBy: '__mj_CreatedAt DESC'
|
|
1544
|
+
}
|
|
1545
|
+
]);
|
|
1546
|
+
// Process results in the same order as queries
|
|
1547
|
+
if (results.length >= 6) {
|
|
1548
|
+
// Sub-agents (index 0)
|
|
1549
|
+
this.subAgents = results[0].Results || [];
|
|
1550
|
+
this.subAgentCount = results[0].TotalRowCount || 0;
|
|
1551
|
+
// Prompts (index 1)
|
|
1552
|
+
this.agentPrompts = results[1].Results || [];
|
|
1553
|
+
this.promptCount = results[1].TotalRowCount || 0;
|
|
1554
|
+
// Actions (index 2)
|
|
1555
|
+
this.agentActions = results[2].Results || [];
|
|
1556
|
+
this.actionCount = results[2].TotalRowCount || 0;
|
|
1557
|
+
// Learning cycles (index 3)
|
|
1558
|
+
this.learningCycles = results[3].Results || [];
|
|
1559
|
+
this.learningCycleCount = results[3].TotalRowCount || 0;
|
|
1560
|
+
// Notes (index 4)
|
|
1561
|
+
this.agentNotes = results[4].Results || [];
|
|
1562
|
+
this.noteCount = results[4].TotalRowCount || 0;
|
|
1563
|
+
// Execution history (index 5)
|
|
1564
|
+
this.recentExecutions = results[5].Results || [];
|
|
1565
|
+
this.executionHistoryCount = results[5].TotalRowCount || 0;
|
|
1566
|
+
}
|
|
1555
1567
|
// Create snapshot for cancel/revert functionality
|
|
1556
1568
|
this.createOriginalSnapshot();
|
|
1557
1569
|
}
|
|
@@ -2821,7 +2833,7 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
2821
2833
|
}
|
|
2822
2834
|
}
|
|
2823
2835
|
static { this.ɵfac = function AIAgentFormComponentExtended_Factory(t) { return new (t || AIAgentFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.DialogService), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i4.AIAgentManagementService), i0.ɵɵdirectiveInject(i5.AITestHarnessDialogService)); }; }
|
|
2824
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["form", "ngForm"], [1, "record-form-container"], ["kendoDialogContainer", ""], ["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", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "disabled"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "expanded"], ["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"], [1, "fa-solid", "fa-
|
|
2836
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["form", "ngForm"], [1, "record-form-container"], ["kendoDialogContainer", ""], ["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", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "disabled"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "expanded"], ["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"], [1, "fa-solid", "fa-history"], [1, "panel-content", "execution-history-panel"], [1, "section-header"], [1, "section-description"], [1, "empty-state"], [1, "timeline-list"], [1, "timeline-item", 3, "expanded"], [1, "view-more-item"], [1, "timeline-item"], [1, "timeline-marker"], [1, "timeline-content"], [1, "timeline-header", 3, "click"], [1, "timeline-title"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "timeline-date"], [1, "timeline-meta"], [1, "execution-time"], [1, "timeline-actions"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "timeline-preview"], [1, "timeline-expanded-content"], [1, "fa-solid", "fa-stopwatch"], [1, "result-section"], [1, "error-section"], [1, "execution-details"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], ["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, "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"], ["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"], [1, "fa-solid", "fa-cog"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove sub-agent", 3, "click"], [1, "fa-solid", "fa-comments"], [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-box"], [1, "payload-config-section"], [1, "subsection-title"], [1, "payload-config-grid"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "Payload Scope", "Description", "Path to narrow payload (e.g., /functionalRequirements)", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "Validation Mode", "Description", "Action on validation failure", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "Max Retries", "Description", "Maximum validation retry attempts", 3, "EditMode", "record"], [1, "payload-paths-section"], [1, "fa-solid", "fa-route"], [1, "payload-field-group"], [1, "payload-field-label"], [1, "fa-solid", "fa-arrow-down"], [1, "field-description"], ["language", "json", 2, "height", "120px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-arrow-up"], [1, "fa-solid", "fa-eye"], [1, "fa-solid", "fa-pen"], [1, "payload-validation-section"], [1, "fa-solid", "fa-shield-check"], ["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"], ["FieldName", "Status", "Type", "dropdownlist", "Caption", "Status", "Description", "Agent availability status", 3, "EditMode", "record"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "Execution Mode", "Description", "How sub-agents are executed", 3, "EditMode", "record"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "Execution Order", "Description", "Order when run with siblings", 3, "EditMode", "record"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "Expose as Action", "Description", "Make available as an action", 3, "EditMode", "record"], ["FieldName", "TypeID", "Type", "dropdownlist", "Caption", "Agent Type", "Description", "Category of this agent", "LinkType", "Record", "LinkEntityName", "MJ: AI Agent Types", 3, "EditMode", "record"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "Driver Class", "Description", "Custom implementation class", 3, "EditMode", "record"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "Icon Class", "Description", "Font Awesome icon class", 3, "EditMode", "record"], ["FieldName", "Description", "Type", "textarea", "Caption", "Description", "Description", "Detailed agent description", 2, "grid-column", "span 2", 3, "EditMode", "record"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "Logo URL", "Description", "URL for agent logo image", 2, "grid-column", "span 2", 3, "EditMode", "record"], [1, "subsection-divider"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "Enable Compression", "Description", "Compress long conversations", 3, "valueChange", "EditMode", "record"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "Message Threshold", "Description", "Messages before compression", 3, "EditMode", "record"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "Messages to Keep", "Description", "Recent messages to retain", 3, "EditMode", "record"], ["FieldName", "ContextCompressionPromptID", "Type", "dropdownlist", "Caption", "Compression Prompt", "Description", "Prompt for summarization", "LinkType", "Record", "LinkEntityName", "AI Prompts", 3, "EditMode", "record"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
2825
2837
|
i0.ɵɵelementStart(0, "div", 1);
|
|
2826
2838
|
i0.ɵɵelement(1, "div", 2);
|
|
2827
2839
|
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Template, 37, 16, "form", 3);
|
|
@@ -2837,7 +2849,7 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
2837
2849
|
export { AIAgentFormComponentExtended };
|
|
2838
2850
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
2839
2851
|
type: Component,
|
|
2840
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></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.ExecutionMode) {\n <span class=\"execution-mode\">\n <i [class]=\"getExecutionModeIcon(record.ExecutionMode)\"></i>\n {{ record.ExecutionMode }}\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 }\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>\n\n <!-- Actions (First Panel - Expanded by default) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"actionCount > 0\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions{{ actionCount > 0 ? ' (' + actionCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\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 </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents (Second Panel) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"subAgentCount > 0\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents{{ subAgentCount > 0 ? ' (' + subAgentCount + ')' : '' }}\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 (Third Panel - With Model Selection) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"true\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts{{ promptCount > 0 ? ' (' + promptCount + ')' : '' }}\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\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 <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History{{ executionHistoryCount > 0 ? ' (' + executionHistoryCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Review execution history, requests, and performance metrics for this agent.\n </div>\n </div>\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=\"timeline-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"timeline-item\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div>\n <div class=\"timeline-marker\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div>\n <div class=\"timeline-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 <span class=\"timeline-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</span>\n </div>\n <div class=\"timeline-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n {{ execution.Status || 'Unknown' }}\n </span>\n @if (execution.CompletedAt) {\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n {{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}\n </span>\n }\n <div class=\"timeline-actions\">\n <button class=\"btn-primary\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (execution.Result && !expandedExecutions[execution.ID]) {\n <div class=\"timeline-preview\">{{ getExecutionResultPreview(execution, true) }}</div>\n }\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"timeline-expanded-content\">\n @if (execution.Result) {\n <div class=\"result-section\">\n <h5>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 @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 class=\"execution-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Started:</span>\n <span class=\"detail-value\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Completed:</span>\n <span class=\"detail-value\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Conversation:</span>\n <span class=\"detail-value\">{{ execution.ConversationID }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\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\n <!-- Payload (Third Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-box\"></i> Payload\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 and validation.\n </div>\n </div>\n \n <!-- Configuration Fields -->\n <div class=\"payload-config-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </h4>\n <div class=\"payload-config-grid\">\n <!-- Payload Scope -->\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"Payload Scope\"\n Description=\"Path to narrow payload (e.g., /functionalRequirements)\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Mode -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"Validation Mode\"\n Description=\"Action on validation failure\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Max Retries -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"Max Retries\"\n Description=\"Maximum validation retry attempts\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <!-- Path Configuration -->\n <div class=\"payload-paths-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-route\"></i> Path Configuration\n </h4>\n \n <!-- Downstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-down\"></i> Downstream Paths\n <span class=\"field-description\">JSON array of paths to pass to sub-agents</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-up\"></i> Upstream Paths\n <span class=\"field-description\">JSON array of paths to return to parent agent</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-eye\"></i> Self Read Paths\n <span class=\"field-description\">JSON array of paths this agent can read</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-pen\"></i> Self Write Paths\n <span class=\"field-description\">JSON array of paths this agent can write to</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Validation Rules -->\n <div class=\"payload-validation-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-shield-check\"></i> Final Payload Validation\n </h4>\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <span class=\"field-description\">JSON validation rules or schema for final payload validation</span>\n </label>\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 </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-cog\"></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 Advanced configuration settings for agent behavior and execution.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <!-- Core Settings -->\n <mj-form-field \n FieldName=\"Status\" \n Type=\"dropdownlist\"\n Caption=\"Status\"\n Description=\"Agent availability status\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"Execution Mode\"\n Description=\"How sub-agents are executed\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"Execution Order\"\n Description=\"Order when run with siblings\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"Expose as Action\"\n Description=\"Make available as an action\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"TypeID\" \n Type=\"dropdownlist\"\n Caption=\"Agent Type\"\n Description=\"Category of this agent\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"MJ: AI Agent Types\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"Driver Class\"\n Description=\"Custom implementation class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"Icon Class\"\n Description=\"Font Awesome icon class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"Description\"\n Description=\"Detailed agent description\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"Logo URL\"\n Description=\"URL for agent logo image\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n </div>\n\n <!-- Context Compression Settings -->\n <div class=\"subsection-divider\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-compress\"></i> Context Compression\n </h4>\n </div>\n\n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"Enable Compression\"\n Description=\"Compress long conversations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"Message Threshold\"\n Description=\"Messages before compression\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"Messages to Keep\"\n Description=\"Recent messages to retain\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionPromptID\" \n Type=\"dropdownlist\"\n Caption=\"Compression Prompt\"\n Description=\"Prompt for summarization\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"AI Prompts\">\n </mj-form-field>\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.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"] }]
|
|
2852
|
+
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></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.ExecutionMode) {\n <span class=\"execution-mode\">\n <i [class]=\"getExecutionModeIcon(record.ExecutionMode)\"></i>\n {{ record.ExecutionMode }}\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 }\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>\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History{{ executionHistoryCount > 0 ? ' (' + executionHistoryCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Review execution history, requests, and performance metrics for this agent.\n </div>\n </div>\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=\"timeline-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"timeline-item\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div>\n <div class=\"timeline-marker\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div>\n <div class=\"timeline-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 <span class=\"timeline-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</span>\n </div>\n <div class=\"timeline-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n {{ execution.Status || 'Unknown' }}\n </span>\n @if (execution.CompletedAt) {\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n {{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}\n </span>\n }\n <div class=\"timeline-actions\">\n <button class=\"btn-primary\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (execution.Result && !expandedExecutions[execution.ID]) {\n <div class=\"timeline-preview\">{{ getExecutionResultPreview(execution, true) }}</div>\n }\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"timeline-expanded-content\">\n @if (execution.Result) {\n <div class=\"result-section\">\n <h5>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 @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 class=\"execution-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Started:</span>\n <span class=\"detail-value\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Completed:</span>\n <span class=\"detail-value\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Conversation:</span>\n <span class=\"detail-value\">{{ execution.ConversationID }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions{{ actionCount > 0 ? ' (' + actionCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\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 </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents{{ subAgentCount > 0 ? ' (' + subAgentCount + ')' : '' }}\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts{{ promptCount > 0 ? ' (' + promptCount + ')' : '' }}\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\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\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\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-box\"></i> Payload\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 and validation.\n </div>\n </div>\n \n <!-- Configuration Fields -->\n <div class=\"payload-config-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </h4>\n <div class=\"payload-config-grid\">\n <!-- Payload Scope -->\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"Payload Scope\"\n Description=\"Path to narrow payload (e.g., /functionalRequirements)\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Mode -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"Validation Mode\"\n Description=\"Action on validation failure\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Max Retries -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"Max Retries\"\n Description=\"Maximum validation retry attempts\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <!-- Path Configuration -->\n <div class=\"payload-paths-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-route\"></i> Path Configuration\n </h4>\n \n <!-- Downstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-down\"></i> Downstream Paths\n <span class=\"field-description\">JSON array of paths to pass to sub-agents</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-up\"></i> Upstream Paths\n <span class=\"field-description\">JSON array of paths to return to parent agent</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-eye\"></i> Self Read Paths\n <span class=\"field-description\">JSON array of paths this agent can read</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-pen\"></i> Self Write Paths\n <span class=\"field-description\">JSON array of paths this agent can write to</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Validation Rules -->\n <div class=\"payload-validation-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-shield-check\"></i> Final Payload Validation\n </h4>\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <span class=\"field-description\">JSON validation rules or schema for final payload validation</span>\n </label>\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 </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-cog\"></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 Advanced configuration settings for agent behavior and execution.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <!-- Core Settings -->\n <mj-form-field \n FieldName=\"Status\" \n Type=\"dropdownlist\"\n Caption=\"Status\"\n Description=\"Agent availability status\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"Execution Mode\"\n Description=\"How sub-agents are executed\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"Execution Order\"\n Description=\"Order when run with siblings\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"Expose as Action\"\n Description=\"Make available as an action\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"TypeID\" \n Type=\"dropdownlist\"\n Caption=\"Agent Type\"\n Description=\"Category of this agent\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"MJ: AI Agent Types\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"Driver Class\"\n Description=\"Custom implementation class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"Icon Class\"\n Description=\"Font Awesome icon class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"Description\"\n Description=\"Detailed agent description\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"Logo URL\"\n Description=\"URL for agent logo image\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n </div>\n\n <!-- Context Compression Settings -->\n <div class=\"subsection-divider\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-compress\"></i> Context Compression\n </h4>\n </div>\n\n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"Enable Compression\"\n Description=\"Compress long conversations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"Message Threshold\"\n Description=\"Messages before compression\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"Messages to Keep\"\n Description=\"Recent messages to retain\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionPromptID\" \n Type=\"dropdownlist\"\n Caption=\"Compression Prompt\"\n Description=\"Prompt for summarization\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"AI Prompts\">\n </mj-form-field>\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.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"] }]
|
|
2841
2853
|
}], () => [{ 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 }], null); })();
|
|
2842
2854
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 52 }); })();
|
|
2843
2855
|
export function LoadAIAgentFormComponentExtended() {
|