@memberjunction/ng-core-entity-forms 2.53.0 → 2.55.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/README.md +1 -206
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +28 -5
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +364 -234
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +36 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +325 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +41 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +87 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +5 -7
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +5 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +501 -485
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +2 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +216 -293
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +6 -8
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +25 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +261 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +73 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +510 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +41 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +568 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +31 -31
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +37 -34
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +16 -17
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +11 -14
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +3 -5
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +7 -8
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +12 -13
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +3 -5
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +5 -7
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +19 -20
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +15 -16
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +5 -5
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +5 -5
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +4 -4
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +5 -5
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/public-api.d.ts +2 -3
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -16
- package/dist/public-api.js.map +1 -1
- package/package.json +13 -12
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts +0 -244
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js +0 -1327
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts +0 -19
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js +0 -458
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts +0 -78
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js +0 -157
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts +0 -598
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js +0 -3204
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js.map +0 -1
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts +0 -8
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js +0 -57
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js.map +0 -1
- package/dist/lib/custom/test-harness-dialog.service.d.ts +0 -111
- package/dist/lib/custom/test-harness-dialog.service.d.ts.map +0 -1
- package/dist/lib/custom/test-harness-dialog.service.js +0 -211
- package/dist/lib/custom/test-harness-dialog.service.js.map +0 -1
|
@@ -15,26 +15,27 @@ import * as i0 from "@angular/core";
|
|
|
15
15
|
import * as i1 from "@memberjunction/ng-shared";
|
|
16
16
|
import * as i2 from "@angular/router";
|
|
17
17
|
import * as i3 from "@progress/kendo-angular-dialog";
|
|
18
|
-
import * as i4 from "
|
|
19
|
-
import * as i5 from "@
|
|
20
|
-
import * as i6 from "@
|
|
21
|
-
import * as i7 from "@
|
|
22
|
-
import * as i8 from "@
|
|
23
|
-
import * as i9 from "@
|
|
24
|
-
import * as i10 from "@
|
|
25
|
-
import * as i11 from "
|
|
18
|
+
import * as i4 from "./new-agent-dialog.service";
|
|
19
|
+
import * as i5 from "@memberjunction/ng-action-gallery";
|
|
20
|
+
import * as i6 from "@memberjunction/ng-ai-test-harness";
|
|
21
|
+
import * as i7 from "@angular/common";
|
|
22
|
+
import * as i8 from "@angular/forms";
|
|
23
|
+
import * as i9 from "@progress/kendo-angular-layout";
|
|
24
|
+
import * as i10 from "@progress/kendo-angular-inputs";
|
|
25
|
+
import * as i11 from "@progress/kendo-angular-buttons";
|
|
26
|
+
import * as i12 from "@memberjunction/ng-form-toolbar";
|
|
26
27
|
const _c0 = ["*"];
|
|
27
28
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
28
|
-
function
|
|
29
|
+
function AIAgentFormComponentExtended_form_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
29
30
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
30
31
|
i0.ɵɵelementStart(0, "kendo-textbox", 27);
|
|
31
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
32
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_2_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
32
33
|
i0.ɵɵelementEnd();
|
|
33
34
|
} if (rf & 2) {
|
|
34
35
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
35
36
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
|
|
36
37
|
} }
|
|
37
|
-
function
|
|
38
|
+
function AIAgentFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
38
39
|
i0.ɵɵelementStart(0, "h1", 13);
|
|
39
40
|
i0.ɵɵtext(1);
|
|
40
41
|
i0.ɵɵelementEnd();
|
|
@@ -43,7 +44,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_10_Template(rf, ctx) {
|
|
|
43
44
|
i0.ɵɵadvance();
|
|
44
45
|
i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled AI Agent");
|
|
45
46
|
} }
|
|
46
|
-
function
|
|
47
|
+
function AIAgentFormComponentExtended_form_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
47
48
|
i0.ɵɵelementStart(0, "span", 28);
|
|
48
49
|
i0.ɵɵelement(1, "i", 29);
|
|
49
50
|
i0.ɵɵtext(2);
|
|
@@ -54,7 +55,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_12_Template(rf, ctx) {
|
|
|
54
55
|
i0.ɵɵadvance(2);
|
|
55
56
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status, " ");
|
|
56
57
|
} }
|
|
57
|
-
function
|
|
58
|
+
function AIAgentFormComponentExtended_form_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
58
59
|
i0.ɵɵelementStart(0, "span", 16);
|
|
59
60
|
i0.ɵɵelement(1, "i");
|
|
60
61
|
i0.ɵɵtext(2);
|
|
@@ -66,7 +67,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_13_Template(rf, ctx) {
|
|
|
66
67
|
i0.ɵɵadvance();
|
|
67
68
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.ExecutionMode, " ");
|
|
68
69
|
} }
|
|
69
|
-
function
|
|
70
|
+
function AIAgentFormComponentExtended_form_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
70
71
|
i0.ɵɵelementStart(0, "span", 17);
|
|
71
72
|
i0.ɵɵelement(1, "i", 30);
|
|
72
73
|
i0.ɵɵtext(2);
|
|
@@ -76,10 +77,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_14_Template(rf, ctx) {
|
|
|
76
77
|
i0.ɵɵadvance(2);
|
|
77
78
|
i0.ɵɵtextInterpolate1(" Child of ", ctx_r2.record.Parent, " ");
|
|
78
79
|
} }
|
|
79
|
-
function
|
|
80
|
+
function AIAgentFormComponentExtended_form_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
80
81
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
81
82
|
i0.ɵɵelementStart(0, "kendo-button", 31);
|
|
82
|
-
i0.ɵɵlistener("click", function
|
|
83
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_16_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.openTestHarness()); });
|
|
83
84
|
i0.ɵɵelement(1, "i", 32);
|
|
84
85
|
i0.ɵɵtext(2, " Run ");
|
|
85
86
|
i0.ɵɵelementEnd();
|
|
@@ -87,7 +88,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_16_Template(rf, ctx) {
|
|
|
87
88
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
88
89
|
i0.ɵɵproperty("disabled", ctx_r2.record.Status !== "Active");
|
|
89
90
|
} }
|
|
90
|
-
function
|
|
91
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
91
92
|
i0.ɵɵelement(0, "i", 33);
|
|
92
93
|
i0.ɵɵtext(1);
|
|
93
94
|
} if (rf & 2) {
|
|
@@ -95,23 +96,23 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_1_Templa
|
|
|
95
96
|
i0.ɵɵadvance();
|
|
96
97
|
i0.ɵɵtextInterpolate1(" Prompts", ctx_r2.promptCount > 0 ? " (" + ctx_r2.promptCount + ")" : "", " ");
|
|
97
98
|
} }
|
|
98
|
-
function
|
|
99
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
99
100
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
100
101
|
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
101
|
-
i0.ɵɵlistener("click", function
|
|
102
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.addPrompt()); });
|
|
102
103
|
i0.ɵɵelement(1, "i", 41);
|
|
103
104
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
104
105
|
i0.ɵɵelementEnd();
|
|
105
106
|
} }
|
|
106
|
-
function
|
|
107
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
107
108
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
108
109
|
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
109
|
-
i0.ɵɵlistener("click", function
|
|
110
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addPrompt()); });
|
|
110
111
|
i0.ɵɵelement(1, "i", 41);
|
|
111
112
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
112
113
|
i0.ɵɵelementEnd();
|
|
113
114
|
} }
|
|
114
|
-
function
|
|
115
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
115
116
|
i0.ɵɵelementStart(0, "div", 38);
|
|
116
117
|
i0.ɵɵelement(1, "i", 33);
|
|
117
118
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -120,14 +121,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
120
121
|
i0.ɵɵelementStart(4, "p");
|
|
121
122
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
122
123
|
i0.ɵɵelementEnd();
|
|
123
|
-
i0.ɵɵtemplate(6,
|
|
124
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
124
125
|
i0.ɵɵelementEnd();
|
|
125
126
|
} if (rf & 2) {
|
|
126
127
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
127
128
|
i0.ɵɵadvance(6);
|
|
128
129
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
129
130
|
} }
|
|
130
|
-
function
|
|
131
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
131
132
|
i0.ɵɵelementStart(0, "div", 51);
|
|
132
133
|
i0.ɵɵtext(1);
|
|
133
134
|
i0.ɵɵelementEnd();
|
|
@@ -136,7 +137,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
136
137
|
i0.ɵɵadvance();
|
|
137
138
|
i0.ɵɵtextInterpolate2("", prompt_r8.TemplateText.substring(0, 120), "", prompt_r8.TemplateText.length > 120 ? "..." : "", "");
|
|
138
139
|
} }
|
|
139
|
-
function
|
|
140
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
140
141
|
i0.ɵɵelementStart(0, "span", 53);
|
|
141
142
|
i0.ɵɵtext(1);
|
|
142
143
|
i0.ɵɵelementEnd();
|
|
@@ -145,29 +146,29 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
145
146
|
i0.ɵɵadvance();
|
|
146
147
|
i0.ɵɵtextInterpolate(prompt_r8.PromptRole);
|
|
147
148
|
} }
|
|
148
|
-
function
|
|
149
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
149
150
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
150
151
|
i0.ɵɵelementStart(0, "kendo-button", 57);
|
|
151
|
-
i0.ɵɵlistener("click", function
|
|
152
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template_kendo_button_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const prompt_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.removePrompt(prompt_r8, $event)); });
|
|
152
153
|
i0.ɵɵelement(1, "i", 58);
|
|
153
154
|
i0.ɵɵelementEnd();
|
|
154
155
|
} }
|
|
155
|
-
function
|
|
156
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
156
157
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
157
158
|
i0.ɵɵelementStart(0, "div", 46);
|
|
158
|
-
i0.ɵɵlistener("click", function
|
|
159
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const prompt_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Prompts", prompt_r8.ID)); });
|
|
159
160
|
i0.ɵɵelementStart(1, "div", 47);
|
|
160
161
|
i0.ɵɵelement(2, "i", 48);
|
|
161
162
|
i0.ɵɵelementEnd();
|
|
162
163
|
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
163
164
|
i0.ɵɵtext(5);
|
|
164
165
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵtemplate(6,
|
|
166
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 2, "div", 51);
|
|
166
167
|
i0.ɵɵelementStart(7, "div", 52);
|
|
167
|
-
i0.ɵɵtemplate(8,
|
|
168
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 53);
|
|
168
169
|
i0.ɵɵelementEnd()();
|
|
169
170
|
i0.ɵɵelementStart(9, "div", 54);
|
|
170
|
-
i0.ɵɵtemplate(10,
|
|
171
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template, 2, 0, "kendo-button", 55);
|
|
171
172
|
i0.ɵɵelement(11, "i", 56);
|
|
172
173
|
i0.ɵɵelementEnd()();
|
|
173
174
|
} if (rf & 2) {
|
|
@@ -182,10 +183,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
182
183
|
i0.ɵɵadvance(2);
|
|
183
184
|
i0.ɵɵconditional(ctx_r2.EditMode ? 10 : -1);
|
|
184
185
|
} }
|
|
185
|
-
function
|
|
186
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
186
187
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
187
188
|
i0.ɵɵelementStart(0, "div", 59);
|
|
188
|
-
i0.ɵɵlistener("click", function
|
|
189
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Prompts", "")); });
|
|
189
190
|
i0.ɵɵelementStart(1, "span");
|
|
190
191
|
i0.ɵɵtext(2);
|
|
191
192
|
i0.ɵɵelementEnd()();
|
|
@@ -194,10 +195,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
194
195
|
i0.ɵɵadvance(2);
|
|
195
196
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.promptCount, " prompts...");
|
|
196
197
|
} }
|
|
197
|
-
function
|
|
198
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
198
199
|
i0.ɵɵelementStart(0, "div", 39);
|
|
199
|
-
i0.ɵɵrepeaterCreate(1,
|
|
200
|
-
i0.ɵɵtemplate(3,
|
|
200
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_For_2_Template, 12, 4, "div", 44, _forTrack0);
|
|
201
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
201
202
|
i0.ɵɵelementEnd();
|
|
202
203
|
} if (rf & 2) {
|
|
203
204
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -206,11 +207,11 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
206
207
|
i0.ɵɵadvance(2);
|
|
207
208
|
i0.ɵɵconditional(ctx_r2.promptCount > ctx_r2.agentPrompts.length ? 3 : -1);
|
|
208
209
|
} }
|
|
209
|
-
function
|
|
210
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
210
211
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
|
|
211
|
-
i0.ɵɵtemplate(3,
|
|
212
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 37);
|
|
212
213
|
i0.ɵɵelementEnd()();
|
|
213
|
-
i0.ɵɵtemplate(4,
|
|
214
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_4_Template, 7, 1, "div", 38)(5, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
214
215
|
i0.ɵɵelementEnd();
|
|
215
216
|
} if (rf & 2) {
|
|
216
217
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
@@ -219,14 +220,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Templa
|
|
|
219
220
|
i0.ɵɵadvance();
|
|
220
221
|
i0.ɵɵconditional(ctx_r2.promptCount === 0 ? 4 : 5);
|
|
221
222
|
} }
|
|
222
|
-
function
|
|
223
|
+
function AIAgentFormComponentExtended_form_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
223
224
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
224
|
-
i0.ɵɵtemplate(1,
|
|
225
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_2_Conditional_21_ng_template_2_Template, 6, 2, "ng-template", 26);
|
|
225
226
|
i0.ɵɵelementEnd();
|
|
226
227
|
} if (rf & 2) {
|
|
227
228
|
i0.ɵɵproperty("expanded", true);
|
|
228
229
|
} }
|
|
229
|
-
function
|
|
230
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
230
231
|
i0.ɵɵelement(0, "i", 60);
|
|
231
232
|
i0.ɵɵtext(1);
|
|
232
233
|
} if (rf & 2) {
|
|
@@ -234,23 +235,23 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_1_Templa
|
|
|
234
235
|
i0.ɵɵadvance();
|
|
235
236
|
i0.ɵɵtextInterpolate1(" Actions", ctx_r2.actionCount > 0 ? " (" + ctx_r2.actionCount + ")" : "", " ");
|
|
236
237
|
} }
|
|
237
|
-
function
|
|
238
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
238
239
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
239
240
|
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
240
|
-
i0.ɵɵlistener("click", function
|
|
241
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.configureActions()); });
|
|
241
242
|
i0.ɵɵelement(1, "i", 41);
|
|
242
243
|
i0.ɵɵtext(2, " Add Action ");
|
|
243
244
|
i0.ɵɵelementEnd();
|
|
244
245
|
} }
|
|
245
|
-
function
|
|
246
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
246
247
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
247
248
|
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
248
|
-
i0.ɵɵlistener("click", function
|
|
249
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.configureActions()); });
|
|
249
250
|
i0.ɵɵelement(1, "i", 41);
|
|
250
251
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
251
252
|
i0.ɵɵelementEnd();
|
|
252
253
|
} }
|
|
253
|
-
function
|
|
254
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
254
255
|
i0.ɵɵelementStart(0, "div", 38);
|
|
255
256
|
i0.ɵɵelement(1, "i", 60);
|
|
256
257
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -259,14 +260,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
259
260
|
i0.ɵɵelementStart(4, "p");
|
|
260
261
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
261
262
|
i0.ɵɵelementEnd();
|
|
262
|
-
i0.ɵɵtemplate(6,
|
|
263
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
263
264
|
i0.ɵɵelementEnd();
|
|
264
265
|
} if (rf & 2) {
|
|
265
266
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
266
267
|
i0.ɵɵadvance(6);
|
|
267
268
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
268
269
|
} }
|
|
269
|
-
function
|
|
270
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
270
271
|
i0.ɵɵelementStart(0, "div", 51);
|
|
271
272
|
i0.ɵɵtext(1);
|
|
272
273
|
i0.ɵɵelementEnd();
|
|
@@ -275,7 +276,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
275
276
|
i0.ɵɵadvance();
|
|
276
277
|
i0.ɵɵtextInterpolate(action_r14.Description);
|
|
277
278
|
} }
|
|
278
|
-
function
|
|
279
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
279
280
|
i0.ɵɵelementStart(0, "span", 53);
|
|
280
281
|
i0.ɵɵtext(1);
|
|
281
282
|
i0.ɵɵelementEnd();
|
|
@@ -284,32 +285,32 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
284
285
|
i0.ɵɵadvance();
|
|
285
286
|
i0.ɵɵtextInterpolate(action_r14.Type);
|
|
286
287
|
} }
|
|
287
|
-
function
|
|
288
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
288
289
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
289
290
|
i0.ɵɵelementStart(0, "kendo-button", 66);
|
|
290
|
-
i0.ɵɵlistener("click", function
|
|
291
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template_kendo_button_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const action_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.removeAction(action_r14, $event)); });
|
|
291
292
|
i0.ɵɵelement(1, "i", 58);
|
|
292
293
|
i0.ɵɵelementEnd();
|
|
293
294
|
} }
|
|
294
|
-
function
|
|
295
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
295
296
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
296
297
|
i0.ɵɵelementStart(0, "div", 62);
|
|
297
|
-
i0.ɵɵlistener("click", function
|
|
298
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const action_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("Actions", action_r14.ID)); });
|
|
298
299
|
i0.ɵɵelementStart(1, "div", 47);
|
|
299
300
|
i0.ɵɵelement(2, "i", 60);
|
|
300
301
|
i0.ɵɵelementEnd();
|
|
301
302
|
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
302
303
|
i0.ɵɵtext(5);
|
|
303
304
|
i0.ɵɵelementEnd();
|
|
304
|
-
i0.ɵɵtemplate(6,
|
|
305
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 1, "div", 51);
|
|
305
306
|
i0.ɵɵelementStart(7, "div", 52);
|
|
306
|
-
i0.ɵɵtemplate(8,
|
|
307
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 53);
|
|
307
308
|
i0.ɵɵelementStart(9, "span", 63);
|
|
308
309
|
i0.ɵɵelement(10, "i", 64);
|
|
309
310
|
i0.ɵɵtext(11);
|
|
310
311
|
i0.ɵɵelementEnd()()();
|
|
311
312
|
i0.ɵɵelementStart(12, "div", 54);
|
|
312
|
-
i0.ɵɵtemplate(13,
|
|
313
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 0, "kendo-button", 65);
|
|
313
314
|
i0.ɵɵelement(14, "i", 56);
|
|
314
315
|
i0.ɵɵelementEnd()();
|
|
315
316
|
} if (rf & 2) {
|
|
@@ -330,10 +331,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
330
331
|
i0.ɵɵadvance(2);
|
|
331
332
|
i0.ɵɵconditional(ctx_r2.EditMode ? 13 : -1);
|
|
332
333
|
} }
|
|
333
|
-
function
|
|
334
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
334
335
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
335
336
|
i0.ɵɵelementStart(0, "div", 59);
|
|
336
|
-
i0.ɵɵlistener("click", function
|
|
337
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Actions", "")); });
|
|
337
338
|
i0.ɵɵelementStart(1, "span");
|
|
338
339
|
i0.ɵɵtext(2);
|
|
339
340
|
i0.ɵɵelementEnd()();
|
|
@@ -342,10 +343,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
342
343
|
i0.ɵɵadvance(2);
|
|
343
344
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.actionCount, " actions...");
|
|
344
345
|
} }
|
|
345
|
-
function
|
|
346
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
346
347
|
i0.ɵɵelementStart(0, "div", 39);
|
|
347
|
-
i0.ɵɵrepeaterCreate(1,
|
|
348
|
-
i0.ɵɵtemplate(3,
|
|
348
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template, 15, 13, "div", 61, _forTrack0);
|
|
349
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
349
350
|
i0.ɵɵelementEnd();
|
|
350
351
|
} if (rf & 2) {
|
|
351
352
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -354,11 +355,11 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
354
355
|
i0.ɵɵadvance(2);
|
|
355
356
|
i0.ɵɵconditional(ctx_r2.actionCount > ctx_r2.agentActions.length ? 3 : -1);
|
|
356
357
|
} }
|
|
357
|
-
function
|
|
358
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
358
359
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
|
|
359
|
-
i0.ɵɵtemplate(3,
|
|
360
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 37);
|
|
360
361
|
i0.ɵɵelementEnd()();
|
|
361
|
-
i0.ɵɵtemplate(4,
|
|
362
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template, 7, 1, "div", 38)(5, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
362
363
|
i0.ɵɵelementEnd();
|
|
363
364
|
} if (rf & 2) {
|
|
364
365
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
@@ -367,15 +368,15 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Templa
|
|
|
367
368
|
i0.ɵɵadvance();
|
|
368
369
|
i0.ɵɵconditional(ctx_r2.actionCount === 0 ? 4 : 5);
|
|
369
370
|
} }
|
|
370
|
-
function
|
|
371
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
371
372
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
372
|
-
i0.ɵɵtemplate(1,
|
|
373
|
+
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, 2, "ng-template", 26);
|
|
373
374
|
i0.ɵɵelementEnd();
|
|
374
375
|
} if (rf & 2) {
|
|
375
376
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
376
377
|
i0.ɵɵproperty("expanded", ctx_r2.actionCount > 0);
|
|
377
378
|
} }
|
|
378
|
-
function
|
|
379
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
379
380
|
i0.ɵɵelement(0, "i", 30);
|
|
380
381
|
i0.ɵɵtext(1);
|
|
381
382
|
} if (rf & 2) {
|
|
@@ -383,23 +384,23 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_1_Templa
|
|
|
383
384
|
i0.ɵɵadvance();
|
|
384
385
|
i0.ɵɵtextInterpolate1(" Sub-Agents", ctx_r2.subAgentCount > 0 ? " (" + ctx_r2.subAgentCount + ")" : "", " ");
|
|
385
386
|
} }
|
|
386
|
-
function
|
|
387
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
387
388
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
388
389
|
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
389
|
-
i0.ɵɵlistener("click", function
|
|
390
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.createSubAgent()); });
|
|
390
391
|
i0.ɵɵelement(1, "i", 41);
|
|
391
392
|
i0.ɵɵtext(2, " Add Sub-Agent ");
|
|
392
393
|
i0.ɵɵelementEnd();
|
|
393
394
|
} }
|
|
394
|
-
function
|
|
395
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
395
396
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
396
397
|
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
397
|
-
i0.ɵɵlistener("click", function
|
|
398
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.createSubAgent()); });
|
|
398
399
|
i0.ɵɵelement(1, "i", 41);
|
|
399
400
|
i0.ɵɵtext(2, " Create First Sub-Agent ");
|
|
400
401
|
i0.ɵɵelementEnd();
|
|
401
402
|
} }
|
|
402
|
-
function
|
|
403
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
403
404
|
i0.ɵɵelementStart(0, "div", 38);
|
|
404
405
|
i0.ɵɵelement(1, "i", 30);
|
|
405
406
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -408,14 +409,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
408
409
|
i0.ɵɵelementStart(4, "p");
|
|
409
410
|
i0.ɵɵtext(5, "Create sub-agents to build a hierarchical structure for complex workflows.");
|
|
410
411
|
i0.ɵɵelementEnd();
|
|
411
|
-
i0.ɵɵtemplate(6,
|
|
412
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
412
413
|
i0.ɵɵelementEnd();
|
|
413
414
|
} if (rf & 2) {
|
|
414
415
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
415
416
|
i0.ɵɵadvance(6);
|
|
416
417
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
417
418
|
} }
|
|
418
|
-
function
|
|
419
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
419
420
|
i0.ɵɵelementStart(0, "div", 51);
|
|
420
421
|
i0.ɵɵtext(1);
|
|
421
422
|
i0.ɵɵelementEnd();
|
|
@@ -424,7 +425,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
424
425
|
i0.ɵɵadvance();
|
|
425
426
|
i0.ɵɵtextInterpolate(subAgent_r20.Description);
|
|
426
427
|
} }
|
|
427
|
-
function
|
|
428
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
428
429
|
i0.ɵɵelementStart(0, "span", 63);
|
|
429
430
|
i0.ɵɵtext(1);
|
|
430
431
|
i0.ɵɵelementEnd();
|
|
@@ -435,7 +436,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
435
436
|
i0.ɵɵadvance();
|
|
436
437
|
i0.ɵɵtextInterpolate1(" ", subAgent_r20.Status, " ");
|
|
437
438
|
} }
|
|
438
|
-
function
|
|
439
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
439
440
|
i0.ɵɵelementStart(0, "span", 53);
|
|
440
441
|
i0.ɵɵtext(1);
|
|
441
442
|
i0.ɵɵelementEnd();
|
|
@@ -444,19 +445,19 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
444
445
|
i0.ɵɵadvance();
|
|
445
446
|
i0.ɵɵtextInterpolate(subAgent_r20.ExecutionMode);
|
|
446
447
|
} }
|
|
447
|
-
function
|
|
448
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
448
449
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
449
450
|
i0.ɵɵelementStart(0, "div", 69);
|
|
450
|
-
i0.ɵɵlistener("click", function
|
|
451
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const subAgent_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agents", subAgent_r20.ID)); });
|
|
451
452
|
i0.ɵɵelementStart(1, "div", 47);
|
|
452
453
|
i0.ɵɵelement(2, "i", 10);
|
|
453
454
|
i0.ɵɵelementEnd();
|
|
454
455
|
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
455
456
|
i0.ɵɵtext(5);
|
|
456
457
|
i0.ɵɵelementEnd();
|
|
457
|
-
i0.ɵɵtemplate(6,
|
|
458
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 1, "div", 51);
|
|
458
459
|
i0.ɵɵelementStart(7, "div", 52);
|
|
459
|
-
i0.ɵɵtemplate(8,
|
|
460
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 2, 3, "span", 70)(9, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_9_Template, 2, 1, "span", 53);
|
|
460
461
|
i0.ɵɵelementEnd()();
|
|
461
462
|
i0.ɵɵelementStart(10, "div", 54);
|
|
462
463
|
i0.ɵɵelement(11, "i", 56);
|
|
@@ -472,10 +473,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
472
473
|
i0.ɵɵadvance();
|
|
473
474
|
i0.ɵɵconditional(subAgent_r20.ExecutionMode ? 9 : -1);
|
|
474
475
|
} }
|
|
475
|
-
function
|
|
476
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
476
477
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
477
478
|
i0.ɵɵelementStart(0, "div", 59);
|
|
478
|
-
i0.ɵɵlistener("click", function
|
|
479
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agents", "")); });
|
|
479
480
|
i0.ɵɵelementStart(1, "span");
|
|
480
481
|
i0.ɵɵtext(2);
|
|
481
482
|
i0.ɵɵelementEnd()();
|
|
@@ -484,10 +485,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
484
485
|
i0.ɵɵadvance(2);
|
|
485
486
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.subAgentCount, " sub-agents...");
|
|
486
487
|
} }
|
|
487
|
-
function
|
|
488
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
488
489
|
i0.ɵɵelementStart(0, "div", 39);
|
|
489
|
-
i0.ɵɵrepeaterCreate(1,
|
|
490
|
-
i0.ɵɵtemplate(3,
|
|
490
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_For_2_Template, 12, 4, "div", 68, _forTrack0);
|
|
491
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
491
492
|
i0.ɵɵelementEnd();
|
|
492
493
|
} if (rf & 2) {
|
|
493
494
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -496,14 +497,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
496
497
|
i0.ɵɵadvance(2);
|
|
497
498
|
i0.ɵɵconditional(ctx_r2.subAgentCount > ctx_r2.subAgents.length ? 3 : -1);
|
|
498
499
|
} }
|
|
499
|
-
function
|
|
500
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
500
501
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
501
502
|
i0.ɵɵtext(3, " Manage hierarchical relationships with child agents that work under this agent. ");
|
|
502
503
|
i0.ɵɵelementEnd();
|
|
503
504
|
i0.ɵɵelementStart(4, "div", 36);
|
|
504
|
-
i0.ɵɵtemplate(5,
|
|
505
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 37);
|
|
505
506
|
i0.ɵɵelementEnd()();
|
|
506
|
-
i0.ɵɵtemplate(6,
|
|
507
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_6_Template, 7, 1, "div", 38)(7, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_7_Template, 4, 1, "div", 39);
|
|
507
508
|
i0.ɵɵelementEnd();
|
|
508
509
|
} if (rf & 2) {
|
|
509
510
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
@@ -512,15 +513,15 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Templa
|
|
|
512
513
|
i0.ɵɵadvance();
|
|
513
514
|
i0.ɵɵconditional(ctx_r2.subAgentCount === 0 ? 6 : 7);
|
|
514
515
|
} }
|
|
515
|
-
function
|
|
516
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
516
517
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
517
|
-
i0.ɵɵtemplate(1,
|
|
518
|
+
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, 8, 2, "ng-template", 26);
|
|
518
519
|
i0.ɵɵelementEnd();
|
|
519
520
|
} if (rf & 2) {
|
|
520
521
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
521
522
|
i0.ɵɵproperty("expanded", ctx_r2.subAgentCount > 0);
|
|
522
523
|
} }
|
|
523
|
-
function
|
|
524
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
524
525
|
i0.ɵɵelement(0, "i", 71);
|
|
525
526
|
i0.ɵɵtext(1);
|
|
526
527
|
} if (rf & 2) {
|
|
@@ -528,7 +529,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_1_Templa
|
|
|
528
529
|
i0.ɵɵadvance();
|
|
529
530
|
i0.ɵɵtextInterpolate1(" Learning Cycles", ctx_r2.learningCycleCount > 0 ? " (" + ctx_r2.learningCycleCount + ")" : "", " ");
|
|
530
531
|
} }
|
|
531
|
-
function
|
|
532
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
532
533
|
i0.ɵɵelementStart(0, "div", 38);
|
|
533
534
|
i0.ɵɵelement(1, "i", 71);
|
|
534
535
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -538,7 +539,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
538
539
|
i0.ɵɵtext(5, "Learning cycles will appear here as the agent processes requests and improves over time.");
|
|
539
540
|
i0.ɵɵelementEnd()();
|
|
540
541
|
} }
|
|
541
|
-
function
|
|
542
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
542
543
|
i0.ɵɵelementStart(0, "span", 53);
|
|
543
544
|
i0.ɵɵelement(1, "i", 74);
|
|
544
545
|
i0.ɵɵtext(2);
|
|
@@ -549,7 +550,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
549
550
|
i0.ɵɵadvance(2);
|
|
550
551
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r23.StartedAt, "short"), " ");
|
|
551
552
|
} }
|
|
552
|
-
function
|
|
553
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
553
554
|
i0.ɵɵelementStart(0, "span", 63);
|
|
554
555
|
i0.ɵɵtext(1);
|
|
555
556
|
i0.ɵɵelementEnd();
|
|
@@ -558,10 +559,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
558
559
|
i0.ɵɵadvance();
|
|
559
560
|
i0.ɵɵtextInterpolate(cycle_r23.Status);
|
|
560
561
|
} }
|
|
561
|
-
function
|
|
562
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
562
563
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
563
564
|
i0.ɵɵelementStart(0, "div", 73);
|
|
564
|
-
i0.ɵɵlistener("click", function
|
|
565
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Learning Cycles", cycle_r23.ID)); });
|
|
565
566
|
i0.ɵɵelementStart(1, "div", 47);
|
|
566
567
|
i0.ɵɵelement(2, "i", 71);
|
|
567
568
|
i0.ɵɵelementEnd();
|
|
@@ -569,7 +570,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
569
570
|
i0.ɵɵtext(5);
|
|
570
571
|
i0.ɵɵelementEnd();
|
|
571
572
|
i0.ɵɵelementStart(6, "div", 52);
|
|
572
|
-
i0.ɵɵtemplate(7,
|
|
573
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 53)(8, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 63);
|
|
573
574
|
i0.ɵɵelementEnd()();
|
|
574
575
|
i0.ɵɵelementStart(9, "div", 54);
|
|
575
576
|
i0.ɵɵelement(10, "i", 56);
|
|
@@ -583,10 +584,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
583
584
|
i0.ɵɵadvance();
|
|
584
585
|
i0.ɵɵconditional(cycle_r23.Status ? 8 : -1);
|
|
585
586
|
} }
|
|
586
|
-
function
|
|
587
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
587
588
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
588
589
|
i0.ɵɵelementStart(0, "div", 59);
|
|
589
|
-
i0.ɵɵlistener("click", function
|
|
590
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
590
591
|
i0.ɵɵelementStart(1, "span");
|
|
591
592
|
i0.ɵɵtext(2);
|
|
592
593
|
i0.ɵɵelementEnd()();
|
|
@@ -595,10 +596,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
595
596
|
i0.ɵɵadvance(2);
|
|
596
597
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.learningCycleCount, " cycles...");
|
|
597
598
|
} }
|
|
598
|
-
function
|
|
599
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
599
600
|
i0.ɵɵelementStart(0, "div", 39);
|
|
600
|
-
i0.ɵɵrepeaterCreate(1,
|
|
601
|
-
i0.ɵɵtemplate(3,
|
|
601
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 72, _forTrack0);
|
|
602
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
602
603
|
i0.ɵɵelementEnd();
|
|
603
604
|
} if (rf & 2) {
|
|
604
605
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -607,25 +608,25 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
607
608
|
i0.ɵɵadvance(2);
|
|
608
609
|
i0.ɵɵconditional(ctx_r2.learningCycleCount > ctx_r2.learningCycles.length ? 3 : -1);
|
|
609
610
|
} }
|
|
610
|
-
function
|
|
611
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
611
612
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
612
613
|
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
613
614
|
i0.ɵɵelementEnd()();
|
|
614
|
-
i0.ɵɵtemplate(4,
|
|
615
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Template, 6, 0, "div", 38)(5, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
615
616
|
i0.ɵɵelementEnd();
|
|
616
617
|
} if (rf & 2) {
|
|
617
618
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
618
619
|
i0.ɵɵadvance(4);
|
|
619
620
|
i0.ɵɵconditional(ctx_r2.learningCycleCount === 0 ? 4 : 5);
|
|
620
621
|
} }
|
|
621
|
-
function
|
|
622
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
622
623
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
623
|
-
i0.ɵɵtemplate(1,
|
|
624
|
+
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, 6, 1, "ng-template", 26);
|
|
624
625
|
i0.ɵɵelementEnd();
|
|
625
626
|
} if (rf & 2) {
|
|
626
627
|
i0.ɵɵproperty("expanded", false);
|
|
627
628
|
} }
|
|
628
|
-
function
|
|
629
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
629
630
|
i0.ɵɵelement(0, "i", 75);
|
|
630
631
|
i0.ɵɵtext(1);
|
|
631
632
|
} if (rf & 2) {
|
|
@@ -633,23 +634,23 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_1_Templa
|
|
|
633
634
|
i0.ɵɵadvance();
|
|
634
635
|
i0.ɵɵtextInterpolate1(" Notes", ctx_r2.noteCount > 0 ? " (" + ctx_r2.noteCount + ")" : "", " ");
|
|
635
636
|
} }
|
|
636
|
-
function
|
|
637
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
637
638
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
638
639
|
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
639
|
-
i0.ɵɵlistener("click", function
|
|
640
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.addNote()); });
|
|
640
641
|
i0.ɵɵelement(1, "i", 41);
|
|
641
642
|
i0.ɵɵtext(2, " Add Note ");
|
|
642
643
|
i0.ɵɵelementEnd();
|
|
643
644
|
} }
|
|
644
|
-
function
|
|
645
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
645
646
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
646
647
|
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
647
|
-
i0.ɵɵlistener("click", function
|
|
648
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addNote()); });
|
|
648
649
|
i0.ɵɵelement(1, "i", 41);
|
|
649
650
|
i0.ɵɵtext(2, " Create First Note ");
|
|
650
651
|
i0.ɵɵelementEnd();
|
|
651
652
|
} }
|
|
652
|
-
function
|
|
653
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
653
654
|
i0.ɵɵelementStart(0, "div", 38);
|
|
654
655
|
i0.ɵɵelement(1, "i", 75);
|
|
655
656
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -658,14 +659,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
658
659
|
i0.ɵɵelementStart(4, "p");
|
|
659
660
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
660
661
|
i0.ɵɵelementEnd();
|
|
661
|
-
i0.ɵɵtemplate(6,
|
|
662
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
662
663
|
i0.ɵɵelementEnd();
|
|
663
664
|
} if (rf & 2) {
|
|
664
665
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
665
666
|
i0.ɵɵadvance(6);
|
|
666
667
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
667
668
|
} }
|
|
668
|
-
function
|
|
669
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
669
670
|
i0.ɵɵelementStart(0, "div", 51);
|
|
670
671
|
i0.ɵɵtext(1);
|
|
671
672
|
i0.ɵɵelementEnd();
|
|
@@ -674,7 +675,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
674
675
|
i0.ɵɵadvance();
|
|
675
676
|
i0.ɵɵtextInterpolate2("", note_r28.Note.substring(0, 100), "", note_r28.Note.length > 100 ? "..." : "", "");
|
|
676
677
|
} }
|
|
677
|
-
function
|
|
678
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
678
679
|
i0.ɵɵelementStart(0, "span", 53);
|
|
679
680
|
i0.ɵɵelement(1, "i", 74);
|
|
680
681
|
i0.ɵɵtext(2);
|
|
@@ -685,19 +686,19 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
685
686
|
i0.ɵɵadvance(2);
|
|
686
687
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r28.__mj_CreatedAt, "short"), " ");
|
|
687
688
|
} }
|
|
688
|
-
function
|
|
689
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
689
690
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
690
691
|
i0.ɵɵelementStart(0, "div", 77);
|
|
691
|
-
i0.ɵɵlistener("click", function
|
|
692
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Notes", note_r28.ID)); });
|
|
692
693
|
i0.ɵɵelementStart(1, "div", 47);
|
|
693
694
|
i0.ɵɵelement(2, "i", 75);
|
|
694
695
|
i0.ɵɵelementEnd();
|
|
695
696
|
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
696
697
|
i0.ɵɵtext(5);
|
|
697
698
|
i0.ɵɵelementEnd();
|
|
698
|
-
i0.ɵɵtemplate(6,
|
|
699
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 51);
|
|
699
700
|
i0.ɵɵelementStart(7, "div", 52);
|
|
700
|
-
i0.ɵɵtemplate(8,
|
|
701
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 53);
|
|
701
702
|
i0.ɵɵelementEnd()();
|
|
702
703
|
i0.ɵɵelementStart(9, "div", 54);
|
|
703
704
|
i0.ɵɵelement(10, "i", 56);
|
|
@@ -711,10 +712,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
711
712
|
i0.ɵɵadvance(2);
|
|
712
713
|
i0.ɵɵconditional(note_r28.__mj_CreatedAt ? 8 : -1);
|
|
713
714
|
} }
|
|
714
|
-
function
|
|
715
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
715
716
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
716
717
|
i0.ɵɵelementStart(0, "div", 59);
|
|
717
|
-
i0.ɵɵlistener("click", function
|
|
718
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Notes", "")); });
|
|
718
719
|
i0.ɵɵelementStart(1, "span");
|
|
719
720
|
i0.ɵɵtext(2);
|
|
720
721
|
i0.ɵɵelementEnd()();
|
|
@@ -723,10 +724,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
723
724
|
i0.ɵɵadvance(2);
|
|
724
725
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.noteCount, " notes...");
|
|
725
726
|
} }
|
|
726
|
-
function
|
|
727
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
727
728
|
i0.ɵɵelementStart(0, "div", 39);
|
|
728
|
-
i0.ɵɵrepeaterCreate(1,
|
|
729
|
-
i0.ɵɵtemplate(3,
|
|
729
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 76, _forTrack0);
|
|
730
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
730
731
|
i0.ɵɵelementEnd();
|
|
731
732
|
} if (rf & 2) {
|
|
732
733
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -735,14 +736,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
735
736
|
i0.ɵɵadvance(2);
|
|
736
737
|
i0.ɵɵconditional(ctx_r2.noteCount > ctx_r2.agentNotes.length ? 3 : -1);
|
|
737
738
|
} }
|
|
738
|
-
function
|
|
739
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
739
740
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
740
741
|
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
741
742
|
i0.ɵɵelementEnd();
|
|
742
743
|
i0.ɵɵelementStart(4, "div", 36);
|
|
743
|
-
i0.ɵɵtemplate(5,
|
|
744
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 37);
|
|
744
745
|
i0.ɵɵelementEnd()();
|
|
745
|
-
i0.ɵɵtemplate(6,
|
|
746
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Template, 7, 1, "div", 38)(7, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template, 4, 1, "div", 39);
|
|
746
747
|
i0.ɵɵelementEnd();
|
|
747
748
|
} if (rf & 2) {
|
|
748
749
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
@@ -751,14 +752,14 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Templa
|
|
|
751
752
|
i0.ɵɵadvance();
|
|
752
753
|
i0.ɵɵconditional(ctx_r2.noteCount === 0 ? 6 : 7);
|
|
753
754
|
} }
|
|
754
|
-
function
|
|
755
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
755
756
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
756
|
-
i0.ɵɵtemplate(1,
|
|
757
|
+
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, 8, 2, "ng-template", 26);
|
|
757
758
|
i0.ɵɵelementEnd();
|
|
758
759
|
} if (rf & 2) {
|
|
759
760
|
i0.ɵɵproperty("expanded", false);
|
|
760
761
|
} }
|
|
761
|
-
function
|
|
762
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
762
763
|
i0.ɵɵelement(0, "i", 78);
|
|
763
764
|
i0.ɵɵtext(1);
|
|
764
765
|
} if (rf & 2) {
|
|
@@ -766,7 +767,7 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_1_Templa
|
|
|
766
767
|
i0.ɵɵadvance();
|
|
767
768
|
i0.ɵɵtextInterpolate1(" Execution History", ctx_r2.executionHistoryCount > 0 ? " (" + ctx_r2.executionHistoryCount + ")" : "", " ");
|
|
768
769
|
} }
|
|
769
|
-
function
|
|
770
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
770
771
|
i0.ɵɵelementStart(0, "div", 38);
|
|
771
772
|
i0.ɵɵelement(1, "i", 78);
|
|
772
773
|
i0.ɵɵelementStart(2, "h4");
|
|
@@ -776,9 +777,9 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
776
777
|
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
777
778
|
i0.ɵɵelementEnd()();
|
|
778
779
|
} }
|
|
779
|
-
function
|
|
780
|
-
i0.ɵɵelementStart(0, "span",
|
|
781
|
-
i0.ɵɵelement(1, "i",
|
|
780
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
781
|
+
i0.ɵɵelementStart(0, "span", 89);
|
|
782
|
+
i0.ɵɵelement(1, "i", 92);
|
|
782
783
|
i0.ɵɵtext(2);
|
|
783
784
|
i0.ɵɵelementEnd();
|
|
784
785
|
} if (rf & 2) {
|
|
@@ -787,59 +788,150 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
787
788
|
i0.ɵɵadvance(2);
|
|
788
789
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatExecutionTimeFromDates(execution_r31.StartedAt, execution_r31.CompletedAt), " ");
|
|
789
790
|
} }
|
|
790
|
-
function
|
|
791
|
-
i0.ɵɵelementStart(0, "div",
|
|
791
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
792
|
+
i0.ɵɵelementStart(0, "div", 90);
|
|
792
793
|
i0.ɵɵtext(1);
|
|
793
794
|
i0.ɵɵelementEnd();
|
|
794
795
|
} if (rf & 2) {
|
|
795
796
|
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
797
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
796
798
|
i0.ɵɵadvance();
|
|
797
|
-
i0.ɵɵ
|
|
799
|
+
i0.ɵɵtextInterpolate(ctx_r2.getExecutionResultPreview(execution_r31));
|
|
798
800
|
} }
|
|
799
|
-
function
|
|
800
|
-
|
|
801
|
-
i0.ɵɵ
|
|
802
|
-
i0.ɵɵ
|
|
803
|
-
i0.ɵɵelementStart(
|
|
804
|
-
i0.ɵɵ
|
|
801
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
802
|
+
i0.ɵɵelementStart(0, "div", 93)(1, "h5");
|
|
803
|
+
i0.ɵɵtext(2, "Result");
|
|
804
|
+
i0.ɵɵelementEnd();
|
|
805
|
+
i0.ɵɵelementStart(3, "div", 102);
|
|
806
|
+
i0.ɵɵtext(4);
|
|
807
|
+
i0.ɵɵelementEnd()();
|
|
808
|
+
} if (rf & 2) {
|
|
809
|
+
const execution_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
810
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
811
|
+
i0.ɵɵadvance(4);
|
|
812
|
+
i0.ɵɵtextInterpolate(ctx_r2.getExecutionResultMessage(execution_r31));
|
|
813
|
+
} }
|
|
814
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
815
|
+
i0.ɵɵelementStart(0, "div", 94)(1, "h5");
|
|
816
|
+
i0.ɵɵelement(2, "i", 103);
|
|
817
|
+
i0.ɵɵtext(3, " Error");
|
|
805
818
|
i0.ɵɵelementEnd();
|
|
806
|
-
i0.ɵɵelementStart(
|
|
819
|
+
i0.ɵɵelementStart(4, "div", 104);
|
|
807
820
|
i0.ɵɵtext(5);
|
|
808
|
-
i0.ɵɵelementStart(6, "span", 85);
|
|
809
|
-
i0.ɵɵtext(7);
|
|
810
|
-
i0.ɵɵpipe(8, "date");
|
|
811
821
|
i0.ɵɵelementEnd()();
|
|
812
|
-
|
|
822
|
+
} if (rf & 2) {
|
|
823
|
+
const execution_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
824
|
+
i0.ɵɵadvance(5);
|
|
825
|
+
i0.ɵɵtextInterpolate(execution_r31.ErrorMessage);
|
|
826
|
+
} }
|
|
827
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
828
|
+
i0.ɵɵelementStart(0, "div", 96)(1, "span", 97);
|
|
829
|
+
i0.ɵɵtext(2, "Completed:");
|
|
830
|
+
i0.ɵɵelementEnd();
|
|
831
|
+
i0.ɵɵelementStart(3, "span", 98);
|
|
832
|
+
i0.ɵɵtext(4);
|
|
833
|
+
i0.ɵɵpipe(5, "date");
|
|
834
|
+
i0.ɵɵelementEnd()();
|
|
835
|
+
} if (rf & 2) {
|
|
836
|
+
const execution_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
837
|
+
i0.ɵɵadvance(4);
|
|
838
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, execution_r31.CompletedAt, "medium"));
|
|
839
|
+
} }
|
|
840
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
+
i0.ɵɵelementStart(0, "div", 96)(1, "span", 97);
|
|
842
|
+
i0.ɵɵtext(2, "Conversation:");
|
|
843
|
+
i0.ɵɵelementEnd();
|
|
844
|
+
i0.ɵɵelementStart(3, "span", 98);
|
|
845
|
+
i0.ɵɵtext(4);
|
|
846
|
+
i0.ɵɵelementEnd()();
|
|
847
|
+
} if (rf & 2) {
|
|
848
|
+
const execution_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
849
|
+
i0.ɵɵadvance(4);
|
|
850
|
+
i0.ɵɵtextInterpolate(execution_r31.ConversationID);
|
|
851
|
+
} }
|
|
852
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
853
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
854
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
855
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_1_Template, 5, 1, "div", 93)(2, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_2_Template, 6, 1, "div", 94);
|
|
856
|
+
i0.ɵɵelementStart(3, "div", 95)(4, "div", 96)(5, "span", 97);
|
|
857
|
+
i0.ɵɵtext(6, "Started:");
|
|
858
|
+
i0.ɵɵelementEnd();
|
|
859
|
+
i0.ɵɵelementStart(7, "span", 98);
|
|
860
|
+
i0.ɵɵtext(8);
|
|
861
|
+
i0.ɵɵpipe(9, "date");
|
|
862
|
+
i0.ɵɵelementEnd()();
|
|
863
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_10_Template, 6, 4, "div", 96)(11, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_11_Template, 5, 1, "div", 96);
|
|
864
|
+
i0.ɵɵelementEnd();
|
|
865
|
+
i0.ɵɵelementStart(12, "div", 99)(13, "button", 100);
|
|
866
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r32); const execution_r31 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); ctx_r2.openExecutionRecord(execution_r31.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
867
|
+
i0.ɵɵelement(14, "i", 101);
|
|
868
|
+
i0.ɵɵtext(15, " View Full Details ");
|
|
869
|
+
i0.ɵɵelementEnd()()();
|
|
870
|
+
} if (rf & 2) {
|
|
871
|
+
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
872
|
+
i0.ɵɵadvance();
|
|
873
|
+
i0.ɵɵconditional(execution_r31.Result ? 1 : -1);
|
|
874
|
+
i0.ɵɵadvance();
|
|
875
|
+
i0.ɵɵconditional(execution_r31.ErrorMessage ? 2 : -1);
|
|
876
|
+
i0.ɵɵadvance(6);
|
|
877
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, execution_r31.StartedAt, "medium"));
|
|
878
|
+
i0.ɵɵadvance(2);
|
|
879
|
+
i0.ɵɵconditional(execution_r31.CompletedAt ? 10 : -1);
|
|
880
|
+
i0.ɵɵadvance();
|
|
881
|
+
i0.ɵɵconditional(execution_r31.ConversationID ? 11 : -1);
|
|
882
|
+
} }
|
|
883
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
885
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "div")(2, "div", 82);
|
|
886
|
+
i0.ɵɵelement(3, "i");
|
|
887
|
+
i0.ɵɵelementEnd();
|
|
888
|
+
i0.ɵɵelementStart(4, "div", 83)(5, "div", 84);
|
|
889
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template_div_click_5_listener() { const execution_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.toggleExecutionExpanded(execution_r31.ID)); });
|
|
890
|
+
i0.ɵɵelementStart(6, "div")(7, "div", 85);
|
|
891
|
+
i0.ɵɵelement(8, "i", 86);
|
|
892
|
+
i0.ɵɵtext(9);
|
|
893
|
+
i0.ɵɵelementStart(10, "span", 87);
|
|
813
894
|
i0.ɵɵtext(11);
|
|
895
|
+
i0.ɵɵpipe(12, "date");
|
|
896
|
+
i0.ɵɵelementEnd()();
|
|
897
|
+
i0.ɵɵelementStart(13, "div", 88)(14, "span", 28);
|
|
898
|
+
i0.ɵɵtext(15);
|
|
814
899
|
i0.ɵɵelementEnd();
|
|
815
|
-
i0.ɵɵtemplate(
|
|
900
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_16_Template, 3, 1, "span", 89);
|
|
816
901
|
i0.ɵɵelementEnd();
|
|
817
|
-
i0.ɵɵtemplate(
|
|
902
|
+
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_17_Template, 2, 1, "div", 90);
|
|
818
903
|
i0.ɵɵelementEnd()();
|
|
904
|
+
i0.ɵɵtemplate(18, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_18_Template, 16, 8, "div", 91);
|
|
905
|
+
i0.ɵɵelementEnd()()();
|
|
819
906
|
} if (rf & 2) {
|
|
820
907
|
const execution_r31 = ctx.$implicit;
|
|
821
908
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
822
|
-
i0.ɵɵ
|
|
909
|
+
i0.ɵɵclassProp("expanded", ctx_r2.expandedExecutions[execution_r31.ID]);
|
|
910
|
+
i0.ɵɵadvance(2);
|
|
823
911
|
i0.ɵɵstyleProp("background-color", ctx_r2.getExecutionStatusColor(execution_r31.Status));
|
|
824
912
|
i0.ɵɵadvance();
|
|
825
913
|
i0.ɵɵclassMap(ctx_r2.getExecutionStatusIcon(execution_r31.Status));
|
|
826
|
-
i0.ɵɵadvance(
|
|
914
|
+
i0.ɵɵadvance(5);
|
|
915
|
+
i0.ɵɵclassProp("expanded", ctx_r2.expandedExecutions[execution_r31.ID]);
|
|
916
|
+
i0.ɵɵadvance();
|
|
827
917
|
i0.ɵɵtextInterpolate1(" Execution #", execution_r31.ID.substring(0, 8), " ");
|
|
828
918
|
i0.ɵɵadvance(2);
|
|
829
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(
|
|
919
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16, execution_r31.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
830
920
|
i0.ɵɵadvance(3);
|
|
831
921
|
i0.ɵɵstyleProp("background-color", ctx_r2.getExecutionStatusColor(execution_r31.Status));
|
|
832
922
|
i0.ɵɵadvance();
|
|
833
923
|
i0.ɵɵtextInterpolate1(" ", execution_r31.Status || "Unknown", " ");
|
|
834
924
|
i0.ɵɵadvance();
|
|
835
|
-
i0.ɵɵconditional(execution_r31.CompletedAt ?
|
|
925
|
+
i0.ɵɵconditional(execution_r31.CompletedAt ? 16 : -1);
|
|
926
|
+
i0.ɵɵadvance();
|
|
927
|
+
i0.ɵɵconditional(execution_r31.Result && !ctx_r2.expandedExecutions[execution_r31.ID] ? 17 : -1);
|
|
836
928
|
i0.ɵɵadvance();
|
|
837
|
-
i0.ɵɵconditional(execution_r31.
|
|
929
|
+
i0.ɵɵconditional(ctx_r2.expandedExecutions[execution_r31.ID] ? 18 : -1);
|
|
838
930
|
} }
|
|
839
|
-
function
|
|
840
|
-
const
|
|
931
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
932
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
841
933
|
i0.ɵɵelementStart(0, "div", 59);
|
|
842
|
-
i0.ɵɵlistener("click", function
|
|
934
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Runs", "")); });
|
|
843
935
|
i0.ɵɵelementStart(1, "span");
|
|
844
936
|
i0.ɵɵtext(2);
|
|
845
937
|
i0.ɵɵelementEnd()();
|
|
@@ -848,10 +940,10 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
848
940
|
i0.ɵɵadvance(2);
|
|
849
941
|
i0.ɵɵtextInterpolate1("View all ", ctx_r2.executionHistoryCount, " executions...");
|
|
850
942
|
} }
|
|
851
|
-
function
|
|
943
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
852
944
|
i0.ɵɵelementStart(0, "div", 79);
|
|
853
|
-
i0.ɵɵrepeaterCreate(1,
|
|
854
|
-
i0.ɵɵtemplate(3,
|
|
945
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_For_2_Template, 19, 19, "div", 80, _forTrack0);
|
|
946
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
855
947
|
i0.ɵɵelementEnd();
|
|
856
948
|
} if (rf & 2) {
|
|
857
949
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -860,34 +952,34 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
860
952
|
i0.ɵɵadvance(2);
|
|
861
953
|
i0.ɵɵconditional(ctx_r2.executionHistoryCount > ctx_r2.recentExecutions.length ? 3 : -1);
|
|
862
954
|
} }
|
|
863
|
-
function
|
|
955
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
864
956
|
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
865
957
|
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
866
958
|
i0.ɵɵelementEnd()();
|
|
867
|
-
i0.ɵɵtemplate(4,
|
|
959
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_4_Template, 6, 0, "div", 38)(5, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template, 4, 1, "div", 79);
|
|
868
960
|
i0.ɵɵelementEnd();
|
|
869
961
|
} if (rf & 2) {
|
|
870
962
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
871
963
|
i0.ɵɵadvance(4);
|
|
872
964
|
i0.ɵɵconditional(ctx_r2.executionHistoryCount === 0 ? 4 : 5);
|
|
873
965
|
} }
|
|
874
|
-
function
|
|
966
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
875
967
|
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
876
|
-
i0.ɵɵtemplate(1,
|
|
968
|
+
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);
|
|
877
969
|
i0.ɵɵelementEnd();
|
|
878
970
|
} if (rf & 2) {
|
|
879
971
|
i0.ɵɵproperty("expanded", false);
|
|
880
972
|
} }
|
|
881
|
-
function
|
|
882
|
-
i0.ɵɵelement(0, "i",
|
|
973
|
+
function AIAgentFormComponentExtended_form_2_ng_template_28_Template(rf, ctx) { if (rf & 1) {
|
|
974
|
+
i0.ɵɵelement(0, "i", 105);
|
|
883
975
|
i0.ɵɵtext(1, " Details ");
|
|
884
976
|
} }
|
|
885
|
-
function
|
|
886
|
-
i0.ɵɵelementStart(0, "div", 34)(1, "div",
|
|
977
|
+
function AIAgentFormComponentExtended_form_2_ng_template_29_Template(rf, ctx) { if (rf & 1) {
|
|
978
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 106);
|
|
887
979
|
i0.ɵɵprojection(2);
|
|
888
980
|
i0.ɵɵelementEnd()();
|
|
889
981
|
} }
|
|
890
|
-
function
|
|
982
|
+
function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
891
983
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
892
984
|
i0.ɵɵelementStart(0, "form", 4, 0);
|
|
893
985
|
i0.ɵɵelement(2, "mj-form-toolbar", 5);
|
|
@@ -895,20 +987,20 @@ function AIAgentFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
895
987
|
i0.ɵɵelement(7, "i", 10);
|
|
896
988
|
i0.ɵɵelementEnd();
|
|
897
989
|
i0.ɵɵelementStart(8, "div", 11);
|
|
898
|
-
i0.ɵɵtemplate(9,
|
|
990
|
+
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_2_Conditional_9_Template, 1, 1, "kendo-textbox", 12)(10, AIAgentFormComponentExtended_form_2_Conditional_10_Template, 2, 1, "h1", 13);
|
|
899
991
|
i0.ɵɵelementStart(11, "div", 14);
|
|
900
|
-
i0.ɵɵtemplate(12,
|
|
992
|
+
i0.ɵɵtemplate(12, AIAgentFormComponentExtended_form_2_Conditional_12_Template, 3, 3, "span", 15)(13, AIAgentFormComponentExtended_form_2_Conditional_13_Template, 3, 3, "span", 16)(14, AIAgentFormComponentExtended_form_2_Conditional_14_Template, 3, 1, "span", 17);
|
|
901
993
|
i0.ɵɵelementEnd()()();
|
|
902
994
|
i0.ɵɵelementStart(15, "div", 18);
|
|
903
|
-
i0.ɵɵtemplate(16,
|
|
995
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_16_Template, 3, 1, "kendo-button", 19);
|
|
904
996
|
i0.ɵɵelementStart(17, "kendo-button", 20);
|
|
905
|
-
i0.ɵɵlistener("click", function
|
|
997
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Template_kendo_button_click_17_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.refreshRelatedData()); });
|
|
906
998
|
i0.ɵɵelement(18, "i", 21);
|
|
907
999
|
i0.ɵɵelementEnd()()()();
|
|
908
1000
|
i0.ɵɵelementStart(19, "div", 22)(20, "kendo-panelbar");
|
|
909
|
-
i0.ɵɵtemplate(21,
|
|
1001
|
+
i0.ɵɵtemplate(21, AIAgentFormComponentExtended_form_2_Conditional_21_Template, 3, 1, "kendo-panelbar-item", 23)(22, AIAgentFormComponentExtended_form_2_Conditional_22_Template, 3, 1, "kendo-panelbar-item", 23)(23, AIAgentFormComponentExtended_form_2_Conditional_23_Template, 3, 1, "kendo-panelbar-item", 23)(24, AIAgentFormComponentExtended_form_2_Conditional_24_Template, 3, 1, "kendo-panelbar-item", 23)(25, AIAgentFormComponentExtended_form_2_Conditional_25_Template, 3, 1, "kendo-panelbar-item", 23)(26, AIAgentFormComponentExtended_form_2_Conditional_26_Template, 3, 1, "kendo-panelbar-item", 23);
|
|
910
1002
|
i0.ɵɵelementStart(27, "kendo-panelbar-item", 24);
|
|
911
|
-
i0.ɵɵtemplate(28,
|
|
1003
|
+
i0.ɵɵtemplate(28, AIAgentFormComponentExtended_form_2_ng_template_28_Template, 2, 0, "ng-template", 25)(29, AIAgentFormComponentExtended_form_2_ng_template_29_Template, 3, 0, "ng-template", 26);
|
|
912
1004
|
i0.ɵɵelementEnd()()()();
|
|
913
1005
|
} if (rf & 2) {
|
|
914
1006
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -939,20 +1031,6 @@ function AIAgentFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
939
1031
|
i0.ɵɵadvance();
|
|
940
1032
|
i0.ɵɵproperty("expanded", false);
|
|
941
1033
|
} }
|
|
942
|
-
function AIAgentFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
943
|
-
const _r33 = i0.ɵɵgetCurrentView();
|
|
944
|
-
i0.ɵɵelementStart(0, "kendo-window", 92);
|
|
945
|
-
i0.ɵɵlistener("close", function AIAgentFormComponentExtended_Conditional_2_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged(false)); });
|
|
946
|
-
i0.ɵɵelementStart(1, "mj-ai-test-harness", 93);
|
|
947
|
-
i0.ɵɵlistener("visibilityChange", function AIAgentFormComponentExtended_Conditional_2_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged($event)); });
|
|
948
|
-
i0.ɵɵelementEnd()();
|
|
949
|
-
} if (rf & 2) {
|
|
950
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
951
|
-
i0.ɵɵpropertyInterpolate1("title", "Run AI Agent - ", ctx_r2.record.Name || "Untitled", "");
|
|
952
|
-
i0.ɵɵproperty("width", 1200)("height", 800)("minWidth", 800)("minHeight", 600)("draggable", true)("resizable", true)("state", "default");
|
|
953
|
-
i0.ɵɵadvance();
|
|
954
|
-
i0.ɵɵproperty("aiAgent", ctx_r2.record)("isVisible", ctx_r2.showTestHarness);
|
|
955
|
-
} }
|
|
956
1034
|
/**
|
|
957
1035
|
* Enhanced AI Agent form component that extends the auto-generated base form
|
|
958
1036
|
* with comprehensive agent management capabilities including test harness integration,
|
|
@@ -984,13 +1062,14 @@ function AIAgentFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf &
|
|
|
984
1062
|
* ```
|
|
985
1063
|
*/
|
|
986
1064
|
let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AIAgentFormComponent {
|
|
987
|
-
constructor(elementRef, sharedService, router, route, cdr, dialogService, viewContainerRef) {
|
|
1065
|
+
constructor(elementRef, sharedService, router, route, cdr, dialogService, viewContainerRef, newAgentDialogService, actionGalleryService, testHarnessService) {
|
|
988
1066
|
super(elementRef, sharedService, router, route, cdr);
|
|
989
1067
|
this.sharedService = sharedService;
|
|
990
1068
|
this.dialogService = dialogService;
|
|
991
1069
|
this.viewContainerRef = viewContainerRef;
|
|
992
|
-
|
|
993
|
-
this.
|
|
1070
|
+
this.newAgentDialogService = newAgentDialogService;
|
|
1071
|
+
this.actionGalleryService = actionGalleryService;
|
|
1072
|
+
this.testHarnessService = testHarnessService;
|
|
994
1073
|
// === Related Entity Counts ===
|
|
995
1074
|
/** Number of sub-agents under this agent */
|
|
996
1075
|
this.subAgentCount = 0;
|
|
@@ -1017,6 +1096,8 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1017
1096
|
this.agentNotes = [];
|
|
1018
1097
|
/** Array of recent execution records for history display */
|
|
1019
1098
|
this.recentExecutions = [];
|
|
1099
|
+
/** Track which execution cards are expanded */
|
|
1100
|
+
this.expandedExecutions = {};
|
|
1020
1101
|
}
|
|
1021
1102
|
/**
|
|
1022
1103
|
* Component initialization. Calls parent initialization and loads related entity data
|
|
@@ -1112,7 +1193,8 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1112
1193
|
MJNotificationService.Instance.CreateSimpleNotification('Please save the AI agent before testing', 'warning', 4000);
|
|
1113
1194
|
return;
|
|
1114
1195
|
}
|
|
1115
|
-
|
|
1196
|
+
// Use the new test harness dialog service
|
|
1197
|
+
this.testHarnessService.openForAgent(this.record.ID);
|
|
1116
1198
|
}
|
|
1117
1199
|
/**
|
|
1118
1200
|
* Returns the appropriate color for the agent status badge.
|
|
@@ -1132,9 +1214,6 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1132
1214
|
* Updates the component state when the test harness is opened or closed.
|
|
1133
1215
|
* @param isVisible - Whether the test harness is currently visible
|
|
1134
1216
|
*/
|
|
1135
|
-
onTestHarnessVisibilityChanged(isVisible) {
|
|
1136
|
-
this.showTestHarness = isVisible;
|
|
1137
|
-
}
|
|
1138
1217
|
/**
|
|
1139
1218
|
* Gets the count of sub-agents
|
|
1140
1219
|
*/
|
|
@@ -1206,33 +1285,29 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1206
1285
|
}
|
|
1207
1286
|
}
|
|
1208
1287
|
/**
|
|
1209
|
-
* Opens the action
|
|
1288
|
+
* Opens the enhanced action gallery for selecting actions
|
|
1210
1289
|
*/
|
|
1211
1290
|
async configureActions() {
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1291
|
+
// Get currently linked action IDs for pre-selection
|
|
1292
|
+
const linkedActionIds = this.agentActions.map(aa => aa.ID);
|
|
1293
|
+
this.actionGalleryService.openForMultiSelection({
|
|
1294
|
+
preSelectedActions: linkedActionIds,
|
|
1295
|
+
showCategories: true,
|
|
1296
|
+
enableQuickTest: true,
|
|
1297
|
+
title: 'Select Actions for Agent',
|
|
1298
|
+
submitButtonText: 'Add Selected Actions'
|
|
1299
|
+
}, this.viewContainerRef).subscribe(async (selectedActions) => {
|
|
1300
|
+
if (selectedActions && selectedActions.length > 0) {
|
|
1301
|
+
// Find newly selected actions (not already linked)
|
|
1302
|
+
const newActions = selectedActions.filter(action => !linkedActionIds.includes(action.ID));
|
|
1303
|
+
// Link each new action to the agent
|
|
1304
|
+
for (const action of newActions) {
|
|
1305
|
+
await this.linkActionToAgent(action);
|
|
1306
|
+
}
|
|
1307
|
+
// Reload the actions list
|
|
1308
|
+
await this.loadRelatedCounts();
|
|
1309
|
+
}
|
|
1224
1310
|
});
|
|
1225
|
-
const componentInstance = dialogRef.content.instance;
|
|
1226
|
-
componentInstance.config = config;
|
|
1227
|
-
const result = await dialogRef.result;
|
|
1228
|
-
if (result && result.entity) {
|
|
1229
|
-
// User selected an existing action
|
|
1230
|
-
await this.linkActionToAgent(result.entity);
|
|
1231
|
-
}
|
|
1232
|
-
else if (result && result.createNew) {
|
|
1233
|
-
// User wants to create a new action
|
|
1234
|
-
await this.createNewAction();
|
|
1235
|
-
}
|
|
1236
1311
|
}
|
|
1237
1312
|
/**
|
|
1238
1313
|
* Gets the status icon for execution runs
|
|
@@ -1324,6 +1399,63 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1324
1399
|
navigateToEntity(entityName, recordId) {
|
|
1325
1400
|
this.sharedService.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));
|
|
1326
1401
|
}
|
|
1402
|
+
/**
|
|
1403
|
+
* Toggles the expanded state of an execution card
|
|
1404
|
+
*/
|
|
1405
|
+
toggleExecutionExpanded(executionId) {
|
|
1406
|
+
this.expandedExecutions[executionId] = !this.expandedExecutions[executionId];
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1409
|
+
* Opens the full execution record in a new view
|
|
1410
|
+
*/
|
|
1411
|
+
openExecutionRecord(executionId) {
|
|
1412
|
+
this.sharedService.OpenEntityRecord('MJ: AI Agent Runs', CompositeKey.FromID(executionId));
|
|
1413
|
+
}
|
|
1414
|
+
/**
|
|
1415
|
+
* Gets a preview of the execution result for collapsed view
|
|
1416
|
+
*/
|
|
1417
|
+
getExecutionResultPreview(execution) {
|
|
1418
|
+
try {
|
|
1419
|
+
if (!execution.Result)
|
|
1420
|
+
return 'No result';
|
|
1421
|
+
// Try to parse the result as JSON
|
|
1422
|
+
const parsed = JSON.parse(execution.Result);
|
|
1423
|
+
// Extract the user message if it exists
|
|
1424
|
+
if (parsed.returnValue?.nextStep?.userMessage) {
|
|
1425
|
+
const message = parsed.returnValue.nextStep.userMessage;
|
|
1426
|
+
return message.length > 120 ? message.substring(0, 120) + '...' : message;
|
|
1427
|
+
}
|
|
1428
|
+
// Otherwise return the stringified result
|
|
1429
|
+
const stringified = JSON.stringify(parsed);
|
|
1430
|
+
return stringified.length > 120 ? stringified.substring(0, 120) + '...' : stringified;
|
|
1431
|
+
}
|
|
1432
|
+
catch {
|
|
1433
|
+
// If not JSON, just return the string
|
|
1434
|
+
const result = execution.Result || '';
|
|
1435
|
+
return result.length > 120 ? result.substring(0, 120) + '...' : result;
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
/**
|
|
1439
|
+
* Gets the full execution result message for expanded view
|
|
1440
|
+
*/
|
|
1441
|
+
getExecutionResultMessage(execution) {
|
|
1442
|
+
try {
|
|
1443
|
+
if (!execution.Result)
|
|
1444
|
+
return 'No result';
|
|
1445
|
+
// Try to parse the result as JSON
|
|
1446
|
+
const parsed = JSON.parse(execution.Result);
|
|
1447
|
+
// Extract the user message if it exists
|
|
1448
|
+
if (parsed.returnValue?.nextStep?.userMessage) {
|
|
1449
|
+
return parsed.returnValue.nextStep.userMessage;
|
|
1450
|
+
}
|
|
1451
|
+
// Otherwise return the pretty-printed JSON
|
|
1452
|
+
return JSON.stringify(parsed, null, 2);
|
|
1453
|
+
}
|
|
1454
|
+
catch {
|
|
1455
|
+
// If not JSON, just return the string
|
|
1456
|
+
return execution.Result || '';
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1327
1459
|
/**
|
|
1328
1460
|
* Refreshes the related data
|
|
1329
1461
|
*/
|
|
@@ -1502,19 +1634,17 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1502
1634
|
}
|
|
1503
1635
|
}
|
|
1504
1636
|
}
|
|
1505
|
-
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)); }; }
|
|
1506
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 3, vars:
|
|
1637
|
+
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.NewAgentDialogService), i0.ɵɵdirectiveInject(i5.ActionGalleryDialogService), i0.ɵɵdirectiveInject(i6.AITestHarnessDialogService)); }; }
|
|
1638
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, 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, "fa-solid", "fa-robot"], [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"], ["themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "disabled"], ["fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "expanded"], ["title", "Details", 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"], ["themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-comments"], [1, "panel-content"], [1, "section-header"], [1, "header-actions"], ["themeColor", "primary", "size", "small"], [1, "empty-state"], [1, "entity-list"], ["themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-plus"], ["themeColor", "primary"], ["themeColor", "primary", 3, "click"], [1, "entity-item", "prompt-item"], [1, "view-more-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "item-icon"], [1, "fa-solid", "fa-comment-dots"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "item-actions"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt"], [1, "fa-solid", "fa-external-link"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "view-more-item", 3, "click"], [1, "fa-solid", "fa-bolt"], [1, "entity-item", "action-item"], [1, "entity-item", "action-item", 3, "click"], [1, "status-tag"], [1, "fa-solid"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action", 3, "click"], [1, "section-description"], [1, "entity-item", "sub-agent-item"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "status-tag", 3, "background-color"], [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-history"], [1, "timeline-list"], [1, "timeline-item", 3, "expanded"], [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-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"], [1, "timeline-actions"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "result-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "fa-solid", "fa-info-circle"], [1, "form-fields-grid"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1507
1639
|
i0.ɵɵprojectionDef();
|
|
1508
1640
|
i0.ɵɵelementStart(0, "div", 1);
|
|
1509
|
-
i0.ɵɵ
|
|
1641
|
+
i0.ɵɵelement(1, "div", 2);
|
|
1642
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Template, 30, 13, "form", 3);
|
|
1510
1643
|
i0.ɵɵelementEnd();
|
|
1511
1644
|
} if (rf & 2) {
|
|
1512
|
-
i0.ɵɵ
|
|
1513
|
-
i0.ɵɵadvance();
|
|
1645
|
+
i0.ɵɵadvance(2);
|
|
1514
1646
|
i0.ɵɵproperty("ngIf", ctx.record);
|
|
1515
|
-
i0.ɵɵadvance();
|
|
1516
|
-
i0.ɵɵconditional(ctx.showTestHarness ? 2 : -1);
|
|
1517
|
-
} }, dependencies: [i4.NgIf, i5.ɵNgNoValidate, i5.NgControlStatus, i5.NgControlStatusGroup, i5.NgModel, i5.NgForm, i6.PanelBarComponent, i6.PanelBarItemComponent, i6.PanelBarContentDirective, i6.PanelBarItemTitleDirective, i3.WindowComponent, i7.TextBoxComponent, i8.ButtonComponent, i9.FormToolbarComponent, i10.FillContainer, i11.AITestHarnessComponent, i4.DatePipe], styles: ["\n\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 24px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: #5a6268;\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n\n\n .k-panelbar {\n border: none;\n background: transparent;\n}\n\n .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: white;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 16px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; \n\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: #2196f3;\n}\n\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n transform: translateX(4px);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: #6c757d;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n \n \n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n \n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n \n\n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n \n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n \n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n \n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n \n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n \n \n\n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n \n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n \n \n\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] }); }
|
|
1647
|
+
} }, dependencies: [i7.NgIf, i8.ɵNgNoValidate, i8.NgControlStatus, i8.NgControlStatusGroup, i8.NgModel, i8.NgForm, i9.PanelBarComponent, i9.PanelBarItemComponent, i9.PanelBarContentDirective, i9.PanelBarItemTitleDirective, i3.DialogContainerDirective, i10.TextBoxComponent, i11.ButtonComponent, i12.FormToolbarComponent, i7.DatePipe], styles: ["\n\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 24px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: #5a6268;\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n\n\n .k-panelbar {\n border: none;\n background: transparent;\n}\n\n .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: white;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 16px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; \n\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: #2196f3;\n}\n\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: #6c757d;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n\n.timeline-expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.result-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.result-content[_ngcontent-%COMP%], \n.error-content[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.error-content[_ngcontent-%COMP%] {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n \n \n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n \n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n \n\n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n \n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n \n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n \n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n \n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n \n \n\n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n \n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n \n \n\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] }); }
|
|
1518
1648
|
};
|
|
1519
1649
|
AIAgentFormComponentExtended = __decorate([
|
|
1520
1650
|
RegisterClass(BaseFormComponent, 'AI Agents')
|
|
@@ -1522,9 +1652,9 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
1522
1652
|
export { AIAgentFormComponentExtended };
|
|
1523
1653
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
1524
1654
|
type: Component,
|
|
1525
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\" mjFillContainer [bottomMargin]=\"20\" [rightMargin]=\"5\">\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" mjFillContainer>\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 <i class=\"fa-solid fa-robot\"></i>\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 <kendo-button 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 </kendo-button>\n }\n <kendo-button fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </kendo-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 <!-- Prompts (High Priority - Expanded by default for existing agents) -->\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=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </kendo-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.Type || 'System Prompt' }}</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) {\n <kendo-button \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 </kendo-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 <!-- Actions (High Priority - Expanded by default for existing agents) -->\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </kendo-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=\"fa-solid fa-bolt\"></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) {\n <kendo-button \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 </kendo-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 (High Priority - Expanded by default for existing agents) -->\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Add Sub-Agent\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </kendo-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 <i class=\"fa-solid fa-robot\"></i>\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 <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\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </kendo-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\">\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\" (click)=\"navigateToEntity('AI Agent Runs', execution.ID)\">\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-title\">\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>\n @if (execution.Result) {\n <div class=\"timeline-preview\">{{ execution.Result.substring(0, 120) }}{{ execution.Result.length > 120 ? '...' : '' }}</div>\n }\n </div>\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('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 <!-- Details (Core Configuration - Last Panel) -->\n <kendo-panelbar-item [expanded]=\"false\" title=\"Details\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-info-circle\"></i> Details\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"form-fields-grid\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n </kendo-panelbar>\n </div>\n </form>\n\n <!-- AI Agent Test Harness -->\n @if (showTestHarness) {\n <kendo-window \n [width]=\"1200\" \n [height]=\"800\" \n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Agent - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [aiAgent]=\"record\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\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-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.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: flex-start;\n margin-bottom: 20px;\n gap: 16px;\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-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/* 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 margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n transform: translateX(4px);\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-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}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\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}\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/* 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}"] }]
|
|
1526
|
-
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }], null); })();
|
|
1527
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
1655
|
+
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 <i class=\"fa-solid fa-robot\"></i>\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 <kendo-button 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 </kendo-button>\n }\n <kendo-button fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </kendo-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 <!-- Prompts (High Priority - Expanded by default for existing agents) -->\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=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </kendo-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.Type || 'System Prompt' }}</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) {\n <kendo-button \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 </kendo-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 <!-- Actions (High Priority - Expanded by default for existing agents) -->\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </kendo-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=\"fa-solid fa-bolt\"></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) {\n <kendo-button \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 </kendo-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 (High Priority - Expanded by default for existing agents) -->\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Add Sub-Agent\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </kendo-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 <i class=\"fa-solid fa-robot\"></i>\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 <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\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) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </kendo-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) {\n <kendo-button themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </kendo-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\">\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>\n @if (execution.Result && !expandedExecutions[execution.ID]) {\n <div class=\"timeline-preview\">{{ getExecutionResultPreview(execution) }}</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 <div class=\"result-content\">{{ getExecutionResultMessage(execution) }}</div>\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 class=\"timeline-actions\">\n <button class=\"btn-primary\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\">\n <i class=\"fa-solid fa-external-link-alt\"></i> View Full Details\n </button>\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('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 <!-- Details (Core Configuration - Last Panel) -->\n <kendo-panelbar-item [expanded]=\"false\" title=\"Details\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-info-circle\"></i> Details\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"form-fields-grid\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\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-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.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: flex-start;\n margin-bottom: 20px;\n gap: 16px;\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-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/* 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.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}"] }]
|
|
1656
|
+
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }, { type: i4.NewAgentDialogService }, { type: i5.ActionGalleryDialogService }, { type: i6.AITestHarnessDialogService }], null); })();
|
|
1657
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 52 }); })();
|
|
1528
1658
|
export function LoadAIAgentFormComponentExtended() {
|
|
1529
1659
|
// This function is called to ensure the component is loaded and registered
|
|
1530
1660
|
}
|