@memberjunction/ng-core-entity-forms 2.54.0 → 2.56.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 +31 -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 +558 -502
- 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.d.ts +6 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +656 -235
- 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 +9 -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 +549 -511
- 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 +1 -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 +4 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +5 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +9 -2
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +5 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +150 -72
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +31 -35
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +23 -43
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +7 -8
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.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 +7 -8
- package/dist/lib/generated/Entities/AIModel/aimodel.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 +11 -12
- 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 +139 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +11 -12
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Action/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/Action/sections/details.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 -273
- 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 -1429
- 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 -631
- 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 -3380
- 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,119 +15,133 @@ 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 "
|
|
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";
|
|
25
27
|
const _c0 = ["*"];
|
|
26
28
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
function AIAgentFormComponentExtended_form_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelement(0, "img", 10);
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
33
|
+
i0.ɵɵproperty("src", ctx_r1.record.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.record.Name + " logo");
|
|
34
|
+
} }
|
|
35
|
+
function AIAgentFormComponentExtended_form_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵelement(0, "i");
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
39
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon());
|
|
40
|
+
} }
|
|
41
|
+
function AIAgentFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
43
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 28);
|
|
44
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_2_Conditional_10_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
31
45
|
i0.ɵɵelementEnd();
|
|
32
46
|
} if (rf & 2) {
|
|
33
|
-
const
|
|
34
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
47
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
48
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
35
49
|
} }
|
|
36
|
-
function
|
|
37
|
-
i0.ɵɵelementStart(0, "h1",
|
|
50
|
+
function AIAgentFormComponentExtended_form_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "h1", 14);
|
|
38
52
|
i0.ɵɵtext(1);
|
|
39
53
|
i0.ɵɵelementEnd();
|
|
40
54
|
} if (rf & 2) {
|
|
41
|
-
const
|
|
55
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
42
56
|
i0.ɵɵadvance();
|
|
43
|
-
i0.ɵɵtextInterpolate(
|
|
57
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled AI Agent");
|
|
44
58
|
} }
|
|
45
|
-
function
|
|
46
|
-
i0.ɵɵelementStart(0, "span",
|
|
47
|
-
i0.ɵɵelement(1, "i",
|
|
59
|
+
function AIAgentFormComponentExtended_form_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelementStart(0, "span", 29);
|
|
61
|
+
i0.ɵɵelement(1, "i", 30);
|
|
48
62
|
i0.ɵɵtext(2);
|
|
49
63
|
i0.ɵɵelementEnd();
|
|
50
64
|
} if (rf & 2) {
|
|
51
|
-
const
|
|
52
|
-
i0.ɵɵstyleProp("background-color",
|
|
65
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
66
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
53
67
|
i0.ɵɵadvance(2);
|
|
54
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
68
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
55
69
|
} }
|
|
56
|
-
function
|
|
57
|
-
i0.ɵɵelementStart(0, "span",
|
|
70
|
+
function AIAgentFormComponentExtended_form_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "span", 17);
|
|
58
72
|
i0.ɵɵelement(1, "i");
|
|
59
73
|
i0.ɵɵtext(2);
|
|
60
74
|
i0.ɵɵelementEnd();
|
|
61
75
|
} if (rf & 2) {
|
|
62
|
-
const
|
|
76
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
63
77
|
i0.ɵɵadvance();
|
|
64
|
-
i0.ɵɵclassMap(
|
|
78
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionModeIcon(ctx_r1.record.ExecutionMode));
|
|
65
79
|
i0.ɵɵadvance();
|
|
66
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
80
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ExecutionMode, " ");
|
|
67
81
|
} }
|
|
68
|
-
function
|
|
69
|
-
i0.ɵɵelementStart(0, "span",
|
|
70
|
-
i0.ɵɵelement(1, "i",
|
|
82
|
+
function AIAgentFormComponentExtended_form_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "span", 18);
|
|
84
|
+
i0.ɵɵelement(1, "i", 31);
|
|
71
85
|
i0.ɵɵtext(2);
|
|
72
86
|
i0.ɵɵelementEnd();
|
|
73
87
|
} if (rf & 2) {
|
|
74
|
-
const
|
|
88
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
75
89
|
i0.ɵɵadvance(2);
|
|
76
|
-
i0.ɵɵtextInterpolate1(" Child of ",
|
|
90
|
+
i0.ɵɵtextInterpolate1(" Child of ", ctx_r1.record.Parent, " ");
|
|
77
91
|
} }
|
|
78
|
-
function
|
|
92
|
+
function AIAgentFormComponentExtended_form_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
79
93
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
80
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
81
|
-
i0.ɵɵlistener("click", function
|
|
82
|
-
i0.ɵɵelement(1, "i",
|
|
94
|
+
i0.ɵɵelementStart(0, "kendo-button", 32);
|
|
95
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_17_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
96
|
+
i0.ɵɵelement(1, "i", 33);
|
|
83
97
|
i0.ɵɵtext(2, " Run ");
|
|
84
98
|
i0.ɵɵelementEnd();
|
|
85
99
|
} if (rf & 2) {
|
|
86
|
-
const
|
|
87
|
-
i0.ɵɵproperty("disabled",
|
|
100
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101
|
+
i0.ɵɵproperty("disabled", ctx_r1.record.Status !== "Active");
|
|
88
102
|
} }
|
|
89
|
-
function
|
|
90
|
-
i0.ɵɵelement(0, "i",
|
|
103
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
104
|
+
i0.ɵɵelement(0, "i", 34);
|
|
91
105
|
i0.ɵɵtext(1);
|
|
92
106
|
} if (rf & 2) {
|
|
93
|
-
const
|
|
107
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
94
108
|
i0.ɵɵadvance();
|
|
95
|
-
i0.ɵɵtextInterpolate1(" Prompts",
|
|
109
|
+
i0.ɵɵtextInterpolate1(" Prompts", ctx_r1.promptCount > 0 ? " (" + ctx_r1.promptCount + ")" : "", " ");
|
|
96
110
|
} }
|
|
97
|
-
function
|
|
111
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
98
112
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
99
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
100
|
-
i0.ɵɵlistener("click", function
|
|
101
|
-
i0.ɵɵelement(1, "i",
|
|
113
|
+
i0.ɵɵelementStart(0, "kendo-button", 41);
|
|
114
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
115
|
+
i0.ɵɵelement(1, "i", 42);
|
|
102
116
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
103
117
|
i0.ɵɵelementEnd();
|
|
104
118
|
} }
|
|
105
|
-
function
|
|
119
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
106
120
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
107
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
108
|
-
i0.ɵɵlistener("click", function
|
|
109
|
-
i0.ɵɵelement(1, "i",
|
|
121
|
+
i0.ɵɵelementStart(0, "kendo-button", 44);
|
|
122
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
123
|
+
i0.ɵɵelement(1, "i", 42);
|
|
110
124
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
111
125
|
i0.ɵɵelementEnd();
|
|
112
126
|
} }
|
|
113
|
-
function
|
|
114
|
-
i0.ɵɵelementStart(0, "div",
|
|
115
|
-
i0.ɵɵelement(1, "i",
|
|
127
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
129
|
+
i0.ɵɵelement(1, "i", 34);
|
|
116
130
|
i0.ɵɵelementStart(2, "h4");
|
|
117
131
|
i0.ɵɵtext(3, "No Prompts Configured");
|
|
118
132
|
i0.ɵɵelementEnd();
|
|
119
133
|
i0.ɵɵelementStart(4, "p");
|
|
120
134
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
121
135
|
i0.ɵɵelementEnd();
|
|
122
|
-
i0.ɵɵtemplate(6,
|
|
136
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 43);
|
|
123
137
|
i0.ɵɵelementEnd();
|
|
124
138
|
} if (rf & 2) {
|
|
125
|
-
const
|
|
139
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
126
140
|
i0.ɵɵadvance(6);
|
|
127
|
-
i0.ɵɵconditional(
|
|
141
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
128
142
|
} }
|
|
129
|
-
function
|
|
130
|
-
i0.ɵɵelementStart(0, "div",
|
|
143
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
131
145
|
i0.ɵɵtext(1);
|
|
132
146
|
i0.ɵɵelementEnd();
|
|
133
147
|
} if (rf & 2) {
|
|
@@ -135,8 +149,8 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
135
149
|
i0.ɵɵadvance();
|
|
136
150
|
i0.ɵɵtextInterpolate2("", prompt_r8.TemplateText.substring(0, 120), "", prompt_r8.TemplateText.length > 120 ? "..." : "", "");
|
|
137
151
|
} }
|
|
138
|
-
function
|
|
139
|
-
i0.ɵɵelementStart(0, "span",
|
|
152
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
140
154
|
i0.ɵɵtext(1);
|
|
141
155
|
i0.ɵɵelementEnd();
|
|
142
156
|
} if (rf & 2) {
|
|
@@ -144,129 +158,129 @@ function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Condit
|
|
|
144
158
|
i0.ɵɵadvance();
|
|
145
159
|
i0.ɵɵtextInterpolate(prompt_r8.PromptRole);
|
|
146
160
|
} }
|
|
147
|
-
function
|
|
161
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
148
162
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
149
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
150
|
-
i0.ɵɵlistener("click", function
|
|
151
|
-
i0.ɵɵelement(1, "i",
|
|
163
|
+
i0.ɵɵelementStart(0, "kendo-button", 58);
|
|
164
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r8, $event)); });
|
|
165
|
+
i0.ɵɵelement(1, "i", 59);
|
|
152
166
|
i0.ɵɵelementEnd();
|
|
153
167
|
} }
|
|
154
|
-
function
|
|
168
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
155
169
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
156
|
-
i0.ɵɵelementStart(0, "div",
|
|
157
|
-
i0.ɵɵlistener("click", function
|
|
158
|
-
i0.ɵɵelementStart(1, "div",
|
|
159
|
-
i0.ɵɵelement(2, "i",
|
|
170
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
171
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const prompt_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", prompt_r8.ID)); });
|
|
172
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
173
|
+
i0.ɵɵelement(2, "i", 49);
|
|
160
174
|
i0.ɵɵelementEnd();
|
|
161
|
-
i0.ɵɵelementStart(3, "div",
|
|
175
|
+
i0.ɵɵelementStart(3, "div", 50)(4, "div", 51);
|
|
162
176
|
i0.ɵɵtext(5);
|
|
163
177
|
i0.ɵɵelementEnd();
|
|
164
|
-
i0.ɵɵtemplate(6,
|
|
165
|
-
i0.ɵɵelementStart(7, "div",
|
|
166
|
-
i0.ɵɵtemplate(8,
|
|
178
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 2, "div", 52);
|
|
179
|
+
i0.ɵɵelementStart(7, "div", 53);
|
|
180
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 54);
|
|
167
181
|
i0.ɵɵelementEnd()();
|
|
168
|
-
i0.ɵɵelementStart(9, "div",
|
|
169
|
-
i0.ɵɵtemplate(10,
|
|
170
|
-
i0.ɵɵelement(11, "i",
|
|
182
|
+
i0.ɵɵelementStart(9, "div", 55);
|
|
183
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_10_Template, 2, 0, "kendo-button", 56);
|
|
184
|
+
i0.ɵɵelement(11, "i", 57);
|
|
171
185
|
i0.ɵɵelementEnd()();
|
|
172
186
|
} if (rf & 2) {
|
|
173
187
|
const prompt_r8 = ctx.$implicit;
|
|
174
|
-
const
|
|
188
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
175
189
|
i0.ɵɵadvance(5);
|
|
176
|
-
i0.ɵɵtextInterpolate(prompt_r8.
|
|
190
|
+
i0.ɵɵtextInterpolate(prompt_r8.Name);
|
|
177
191
|
i0.ɵɵadvance();
|
|
178
192
|
i0.ɵɵconditional(prompt_r8.TemplateText ? 6 : -1);
|
|
179
193
|
i0.ɵɵadvance(2);
|
|
180
194
|
i0.ɵɵconditional(prompt_r8.PromptRole ? 8 : -1);
|
|
181
195
|
i0.ɵɵadvance(2);
|
|
182
|
-
i0.ɵɵconditional(
|
|
196
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 10 : -1);
|
|
183
197
|
} }
|
|
184
|
-
function
|
|
198
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
185
199
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
186
|
-
i0.ɵɵelementStart(0, "div",
|
|
187
|
-
i0.ɵɵlistener("click", function
|
|
200
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
201
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", "")); });
|
|
188
202
|
i0.ɵɵelementStart(1, "span");
|
|
189
203
|
i0.ɵɵtext(2);
|
|
190
204
|
i0.ɵɵelementEnd()();
|
|
191
205
|
} if (rf & 2) {
|
|
192
|
-
const
|
|
206
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
193
207
|
i0.ɵɵadvance(2);
|
|
194
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
208
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
195
209
|
} }
|
|
196
|
-
function
|
|
197
|
-
i0.ɵɵelementStart(0, "div",
|
|
198
|
-
i0.ɵɵrepeaterCreate(1,
|
|
199
|
-
i0.ɵɵtemplate(3,
|
|
210
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
211
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
212
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_For_2_Template, 12, 4, "div", 45, _forTrack0);
|
|
213
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 46);
|
|
200
214
|
i0.ɵɵelementEnd();
|
|
201
215
|
} if (rf & 2) {
|
|
202
|
-
const
|
|
216
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
203
217
|
i0.ɵɵadvance();
|
|
204
|
-
i0.ɵɵrepeater(
|
|
218
|
+
i0.ɵɵrepeater(ctx_r1.agentPrompts);
|
|
205
219
|
i0.ɵɵadvance(2);
|
|
206
|
-
i0.ɵɵconditional(
|
|
220
|
+
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
207
221
|
} }
|
|
208
|
-
function
|
|
209
|
-
i0.ɵɵelementStart(0, "div",
|
|
210
|
-
i0.ɵɵtemplate(3,
|
|
222
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 37);
|
|
224
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 38);
|
|
211
225
|
i0.ɵɵelementEnd()();
|
|
212
|
-
i0.ɵɵtemplate(4,
|
|
226
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_4_Template, 7, 1, "div", 39)(5, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Conditional_5_Template, 4, 1, "div", 40);
|
|
213
227
|
i0.ɵɵelementEnd();
|
|
214
228
|
} if (rf & 2) {
|
|
215
|
-
const
|
|
229
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
216
230
|
i0.ɵɵadvance(3);
|
|
217
|
-
i0.ɵɵconditional(
|
|
231
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : -1);
|
|
218
232
|
i0.ɵɵadvance();
|
|
219
|
-
i0.ɵɵconditional(
|
|
233
|
+
i0.ɵɵconditional(ctx_r1.promptCount === 0 ? 4 : 5);
|
|
220
234
|
} }
|
|
221
|
-
function
|
|
222
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
223
|
-
i0.ɵɵtemplate(1,
|
|
235
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
237
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template, 6, 2, "ng-template", 27);
|
|
224
238
|
i0.ɵɵelementEnd();
|
|
225
239
|
} if (rf & 2) {
|
|
226
240
|
i0.ɵɵproperty("expanded", true);
|
|
227
241
|
} }
|
|
228
|
-
function
|
|
229
|
-
i0.ɵɵelement(0, "i",
|
|
242
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
243
|
+
i0.ɵɵelement(0, "i", 61);
|
|
230
244
|
i0.ɵɵtext(1);
|
|
231
245
|
} if (rf & 2) {
|
|
232
|
-
const
|
|
246
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
233
247
|
i0.ɵɵadvance();
|
|
234
|
-
i0.ɵɵtextInterpolate1(" Actions",
|
|
248
|
+
i0.ɵɵtextInterpolate1(" Actions", ctx_r1.actionCount > 0 ? " (" + ctx_r1.actionCount + ")" : "", " ");
|
|
235
249
|
} }
|
|
236
|
-
function
|
|
250
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
237
251
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
238
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
239
|
-
i0.ɵɵlistener("click", function
|
|
240
|
-
i0.ɵɵelement(1, "i",
|
|
252
|
+
i0.ɵɵelementStart(0, "kendo-button", 41);
|
|
253
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
254
|
+
i0.ɵɵelement(1, "i", 42);
|
|
241
255
|
i0.ɵɵtext(2, " Add Action ");
|
|
242
256
|
i0.ɵɵelementEnd();
|
|
243
257
|
} }
|
|
244
|
-
function
|
|
258
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
245
259
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
246
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
247
|
-
i0.ɵɵlistener("click", function
|
|
248
|
-
i0.ɵɵelement(1, "i",
|
|
260
|
+
i0.ɵɵelementStart(0, "kendo-button", 44);
|
|
261
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
262
|
+
i0.ɵɵelement(1, "i", 42);
|
|
249
263
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
250
264
|
i0.ɵɵelementEnd();
|
|
251
265
|
} }
|
|
252
|
-
function
|
|
253
|
-
i0.ɵɵelementStart(0, "div",
|
|
254
|
-
i0.ɵɵelement(1, "i",
|
|
266
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
268
|
+
i0.ɵɵelement(1, "i", 61);
|
|
255
269
|
i0.ɵɵelementStart(2, "h4");
|
|
256
270
|
i0.ɵɵtext(3, "No Actions Configured");
|
|
257
271
|
i0.ɵɵelementEnd();
|
|
258
272
|
i0.ɵɵelementStart(4, "p");
|
|
259
273
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
260
274
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵtemplate(6,
|
|
275
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 43);
|
|
262
276
|
i0.ɵɵelementEnd();
|
|
263
277
|
} if (rf & 2) {
|
|
264
|
-
const
|
|
278
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
265
279
|
i0.ɵɵadvance(6);
|
|
266
|
-
i0.ɵɵconditional(
|
|
280
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
267
281
|
} }
|
|
268
|
-
function
|
|
269
|
-
i0.ɵɵelementStart(0, "div",
|
|
282
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
283
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
270
284
|
i0.ɵɵtext(1);
|
|
271
285
|
i0.ɵɵelementEnd();
|
|
272
286
|
} if (rf & 2) {
|
|
@@ -274,8 +288,8 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
274
288
|
i0.ɵɵadvance();
|
|
275
289
|
i0.ɵɵtextInterpolate(action_r14.Description);
|
|
276
290
|
} }
|
|
277
|
-
function
|
|
278
|
-
i0.ɵɵelementStart(0, "span",
|
|
291
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
279
293
|
i0.ɵɵtext(1);
|
|
280
294
|
i0.ɵɵelementEnd();
|
|
281
295
|
} if (rf & 2) {
|
|
@@ -283,38 +297,40 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
283
297
|
i0.ɵɵadvance();
|
|
284
298
|
i0.ɵɵtextInterpolate(action_r14.Type);
|
|
285
299
|
} }
|
|
286
|
-
function
|
|
300
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
287
301
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
288
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
289
|
-
i0.ɵɵlistener("click", function
|
|
290
|
-
i0.ɵɵelement(1, "i",
|
|
302
|
+
i0.ɵɵelementStart(0, "kendo-button", 67);
|
|
303
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeAction(action_r14, $event)); });
|
|
304
|
+
i0.ɵɵelement(1, "i", 59);
|
|
291
305
|
i0.ɵɵelementEnd();
|
|
292
306
|
} }
|
|
293
|
-
function
|
|
307
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
294
308
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
i0.ɵɵlistener("click", function
|
|
297
|
-
i0.ɵɵelementStart(1, "div",
|
|
298
|
-
i0.ɵɵelement(2, "i"
|
|
309
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
310
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const action_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("Actions", action_r14.ID)); });
|
|
311
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
312
|
+
i0.ɵɵelement(2, "i");
|
|
299
313
|
i0.ɵɵelementEnd();
|
|
300
|
-
i0.ɵɵelementStart(3, "div",
|
|
314
|
+
i0.ɵɵelementStart(3, "div", 50)(4, "div", 51);
|
|
301
315
|
i0.ɵɵtext(5);
|
|
302
316
|
i0.ɵɵelementEnd();
|
|
303
|
-
i0.ɵɵtemplate(6,
|
|
304
|
-
i0.ɵɵelementStart(7, "div",
|
|
305
|
-
i0.ɵɵtemplate(8,
|
|
306
|
-
i0.ɵɵelementStart(9, "span",
|
|
307
|
-
i0.ɵɵelement(10, "i",
|
|
317
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 1, "div", 52);
|
|
318
|
+
i0.ɵɵelementStart(7, "div", 53);
|
|
319
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 54);
|
|
320
|
+
i0.ɵɵelementStart(9, "span", 64);
|
|
321
|
+
i0.ɵɵelement(10, "i", 65);
|
|
308
322
|
i0.ɵɵtext(11);
|
|
309
323
|
i0.ɵɵelementEnd()()();
|
|
310
|
-
i0.ɵɵelementStart(12, "div",
|
|
311
|
-
i0.ɵɵtemplate(13,
|
|
312
|
-
i0.ɵɵelement(14, "i",
|
|
324
|
+
i0.ɵɵelementStart(12, "div", 55);
|
|
325
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 0, "kendo-button", 66);
|
|
326
|
+
i0.ɵɵelement(14, "i", 57);
|
|
313
327
|
i0.ɵɵelementEnd()();
|
|
314
328
|
} if (rf & 2) {
|
|
315
329
|
const action_r14 = ctx.$implicit;
|
|
316
|
-
const
|
|
317
|
-
i0.ɵɵadvance(
|
|
330
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
331
|
+
i0.ɵɵadvance(2);
|
|
332
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r14));
|
|
333
|
+
i0.ɵɵadvance(3);
|
|
318
334
|
i0.ɵɵtextInterpolate(action_r14.Name || "Untitled Action");
|
|
319
335
|
i0.ɵɵadvance();
|
|
320
336
|
i0.ɵɵconditional(action_r14.Description ? 6 : -1);
|
|
@@ -327,95 +343,108 @@ function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Condit
|
|
|
327
343
|
i0.ɵɵadvance();
|
|
328
344
|
i0.ɵɵtextInterpolate1(" ", action_r14.Status, " ");
|
|
329
345
|
i0.ɵɵadvance(2);
|
|
330
|
-
i0.ɵɵconditional(
|
|
346
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 13 : -1);
|
|
331
347
|
} }
|
|
332
|
-
function
|
|
348
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
333
349
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
334
|
-
i0.ɵɵelementStart(0, "div",
|
|
335
|
-
i0.ɵɵlistener("click", function
|
|
350
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
351
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Actions", "")); });
|
|
336
352
|
i0.ɵɵelementStart(1, "span");
|
|
337
353
|
i0.ɵɵtext(2);
|
|
338
354
|
i0.ɵɵelementEnd()();
|
|
339
355
|
} if (rf & 2) {
|
|
340
|
-
const
|
|
356
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
341
357
|
i0.ɵɵadvance(2);
|
|
342
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
358
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
343
359
|
} }
|
|
344
|
-
function
|
|
345
|
-
i0.ɵɵelementStart(0, "div",
|
|
346
|
-
i0.ɵɵrepeaterCreate(1,
|
|
347
|
-
i0.ɵɵtemplate(3,
|
|
360
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
362
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template, 15, 15, "div", 62, _forTrack0);
|
|
363
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 46);
|
|
348
364
|
i0.ɵɵelementEnd();
|
|
349
365
|
} if (rf & 2) {
|
|
350
|
-
const
|
|
366
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
351
367
|
i0.ɵɵadvance();
|
|
352
|
-
i0.ɵɵrepeater(
|
|
368
|
+
i0.ɵɵrepeater(ctx_r1.agentActions);
|
|
353
369
|
i0.ɵɵadvance(2);
|
|
354
|
-
i0.ɵɵconditional(
|
|
370
|
+
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
355
371
|
} }
|
|
356
|
-
function
|
|
357
|
-
i0.ɵɵelementStart(0, "div",
|
|
358
|
-
i0.ɵɵtemplate(3,
|
|
372
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 37);
|
|
374
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 38);
|
|
359
375
|
i0.ɵɵelementEnd()();
|
|
360
|
-
i0.ɵɵtemplate(4,
|
|
376
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template, 7, 1, "div", 39)(5, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template, 4, 1, "div", 40);
|
|
361
377
|
i0.ɵɵelementEnd();
|
|
362
378
|
} if (rf & 2) {
|
|
363
|
-
const
|
|
379
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
364
380
|
i0.ɵɵadvance(3);
|
|
365
|
-
i0.ɵɵconditional(
|
|
381
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : -1);
|
|
366
382
|
i0.ɵɵadvance();
|
|
367
|
-
i0.ɵɵconditional(
|
|
383
|
+
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 4 : 5);
|
|
368
384
|
} }
|
|
369
|
-
function
|
|
370
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
371
|
-
i0.ɵɵtemplate(1,
|
|
385
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
386
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
387
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template, 6, 2, "ng-template", 27);
|
|
372
388
|
i0.ɵɵelementEnd();
|
|
373
389
|
} if (rf & 2) {
|
|
374
|
-
const
|
|
375
|
-
i0.ɵɵproperty("expanded",
|
|
390
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
391
|
+
i0.ɵɵproperty("expanded", ctx_r1.actionCount > 0);
|
|
376
392
|
} }
|
|
377
|
-
function
|
|
378
|
-
i0.ɵɵelement(0, "i",
|
|
393
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
394
|
+
i0.ɵɵelement(0, "i", 31);
|
|
379
395
|
i0.ɵɵtext(1);
|
|
380
396
|
} if (rf & 2) {
|
|
381
|
-
const
|
|
397
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
382
398
|
i0.ɵɵadvance();
|
|
383
|
-
i0.ɵɵtextInterpolate1(" Sub-Agents",
|
|
399
|
+
i0.ɵɵtextInterpolate1(" Sub-Agents", ctx_r1.subAgentCount > 0 ? " (" + ctx_r1.subAgentCount + ")" : "", " ");
|
|
384
400
|
} }
|
|
385
|
-
function
|
|
401
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
386
402
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
387
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
388
|
-
i0.ɵɵlistener("click", function
|
|
389
|
-
i0.ɵɵelement(1, "i",
|
|
403
|
+
i0.ɵɵelementStart(0, "kendo-button", 41);
|
|
404
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
405
|
+
i0.ɵɵelement(1, "i", 42);
|
|
390
406
|
i0.ɵɵtext(2, " Add Sub-Agent ");
|
|
391
407
|
i0.ɵɵelementEnd();
|
|
392
408
|
} }
|
|
393
|
-
function
|
|
409
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
394
410
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
395
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
396
|
-
i0.ɵɵlistener("click", function
|
|
397
|
-
i0.ɵɵelement(1, "i",
|
|
411
|
+
i0.ɵɵelementStart(0, "kendo-button", 44);
|
|
412
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
413
|
+
i0.ɵɵelement(1, "i", 42);
|
|
398
414
|
i0.ɵɵtext(2, " Create First Sub-Agent ");
|
|
399
415
|
i0.ɵɵelementEnd();
|
|
400
416
|
} }
|
|
401
|
-
function
|
|
402
|
-
i0.ɵɵelementStart(0, "div",
|
|
403
|
-
i0.ɵɵelement(1, "i",
|
|
417
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
419
|
+
i0.ɵɵelement(1, "i", 31);
|
|
404
420
|
i0.ɵɵelementStart(2, "h4");
|
|
405
421
|
i0.ɵɵtext(3, "No Sub-Agents");
|
|
406
422
|
i0.ɵɵelementEnd();
|
|
407
423
|
i0.ɵɵelementStart(4, "p");
|
|
408
424
|
i0.ɵɵtext(5, "Create sub-agents to build a hierarchical structure for complex workflows.");
|
|
409
425
|
i0.ɵɵelementEnd();
|
|
410
|
-
i0.ɵɵtemplate(6,
|
|
426
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 43);
|
|
411
427
|
i0.ɵɵelementEnd();
|
|
412
428
|
} if (rf & 2) {
|
|
413
|
-
const
|
|
429
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
414
430
|
i0.ɵɵadvance(6);
|
|
415
|
-
i0.ɵɵconditional(
|
|
431
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
432
|
+
} }
|
|
433
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
434
|
+
i0.ɵɵelement(0, "img", 71);
|
|
435
|
+
} if (rf & 2) {
|
|
436
|
+
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
437
|
+
i0.ɵɵproperty("src", subAgent_r20.LogoURL, i0.ɵɵsanitizeUrl)("alt", subAgent_r20.Name + " logo");
|
|
438
|
+
} }
|
|
439
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
440
|
+
i0.ɵɵelement(0, "i");
|
|
441
|
+
} if (rf & 2) {
|
|
442
|
+
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
443
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
444
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(subAgent_r20));
|
|
416
445
|
} }
|
|
417
|
-
function
|
|
418
|
-
i0.ɵɵelementStart(0, "div",
|
|
446
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
447
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
419
448
|
i0.ɵɵtext(1);
|
|
420
449
|
i0.ɵɵelementEnd();
|
|
421
450
|
} if (rf & 2) {
|
|
@@ -423,19 +452,19 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
423
452
|
i0.ɵɵadvance();
|
|
424
453
|
i0.ɵɵtextInterpolate(subAgent_r20.Description);
|
|
425
454
|
} }
|
|
426
|
-
function
|
|
427
|
-
i0.ɵɵelementStart(0, "span",
|
|
455
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
428
457
|
i0.ɵɵtext(1);
|
|
429
458
|
i0.ɵɵelementEnd();
|
|
430
459
|
} if (rf & 2) {
|
|
431
460
|
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
432
|
-
const
|
|
433
|
-
i0.ɵɵstyleProp("background-color",
|
|
461
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
462
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
434
463
|
i0.ɵɵadvance();
|
|
435
464
|
i0.ɵɵtextInterpolate1(" ", subAgent_r20.Status, " ");
|
|
436
465
|
} }
|
|
437
|
-
function
|
|
438
|
-
i0.ɵɵelementStart(0, "span",
|
|
466
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
467
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
439
468
|
i0.ɵɵtext(1);
|
|
440
469
|
i0.ɵɵelementEnd();
|
|
441
470
|
} if (rf & 2) {
|
|
@@ -443,93 +472,96 @@ function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Condit
|
|
|
443
472
|
i0.ɵɵadvance();
|
|
444
473
|
i0.ɵɵtextInterpolate(subAgent_r20.ExecutionMode);
|
|
445
474
|
} }
|
|
446
|
-
function
|
|
475
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
447
476
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
448
|
-
i0.ɵɵelementStart(0, "div",
|
|
449
|
-
i0.ɵɵlistener("click", function
|
|
450
|
-
i0.ɵɵelementStart(1, "div",
|
|
451
|
-
i0.ɵɵ
|
|
477
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
478
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const subAgent_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", subAgent_r20.ID)); });
|
|
479
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
480
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_2_Template, 1, 2, "img", 71)(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_3_Template, 1, 2, "i", 11);
|
|
452
481
|
i0.ɵɵelementEnd();
|
|
453
|
-
i0.ɵɵelementStart(
|
|
454
|
-
i0.ɵɵtext(
|
|
482
|
+
i0.ɵɵelementStart(4, "div", 50)(5, "div", 51);
|
|
483
|
+
i0.ɵɵtext(6);
|
|
455
484
|
i0.ɵɵelementEnd();
|
|
456
|
-
i0.ɵɵtemplate(
|
|
457
|
-
i0.ɵɵelementStart(
|
|
458
|
-
i0.ɵɵtemplate(
|
|
485
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_7_Template, 2, 1, "div", 52);
|
|
486
|
+
i0.ɵɵelementStart(8, "div", 53);
|
|
487
|
+
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_9_Template, 2, 3, "span", 72)(10, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Conditional_10_Template, 2, 1, "span", 54);
|
|
459
488
|
i0.ɵɵelementEnd()();
|
|
460
|
-
i0.ɵɵelementStart(
|
|
461
|
-
i0.ɵɵelement(
|
|
489
|
+
i0.ɵɵelementStart(11, "div", 55);
|
|
490
|
+
i0.ɵɵelement(12, "i", 57);
|
|
462
491
|
i0.ɵɵelementEnd()();
|
|
463
492
|
} if (rf & 2) {
|
|
464
493
|
const subAgent_r20 = ctx.$implicit;
|
|
465
|
-
i0.ɵɵ
|
|
494
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
495
|
+
i0.ɵɵadvance(2);
|
|
496
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(subAgent_r20) ? 2 : 3);
|
|
497
|
+
i0.ɵɵadvance(4);
|
|
466
498
|
i0.ɵɵtextInterpolate(subAgent_r20.Name || "Untitled Sub-Agent");
|
|
467
499
|
i0.ɵɵadvance();
|
|
468
|
-
i0.ɵɵconditional(subAgent_r20.Description ?
|
|
500
|
+
i0.ɵɵconditional(subAgent_r20.Description ? 7 : -1);
|
|
469
501
|
i0.ɵɵadvance(2);
|
|
470
|
-
i0.ɵɵconditional(subAgent_r20.Status ?
|
|
502
|
+
i0.ɵɵconditional(subAgent_r20.Status ? 9 : -1);
|
|
471
503
|
i0.ɵɵadvance();
|
|
472
|
-
i0.ɵɵconditional(subAgent_r20.ExecutionMode ?
|
|
504
|
+
i0.ɵɵconditional(subAgent_r20.ExecutionMode ? 10 : -1);
|
|
473
505
|
} }
|
|
474
|
-
function
|
|
506
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
475
507
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
476
|
-
i0.ɵɵelementStart(0, "div",
|
|
477
|
-
i0.ɵɵlistener("click", function
|
|
508
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
509
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", "")); });
|
|
478
510
|
i0.ɵɵelementStart(1, "span");
|
|
479
511
|
i0.ɵɵtext(2);
|
|
480
512
|
i0.ɵɵelementEnd()();
|
|
481
513
|
} if (rf & 2) {
|
|
482
|
-
const
|
|
514
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
483
515
|
i0.ɵɵadvance(2);
|
|
484
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
516
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.subAgentCount, " sub-agents...");
|
|
485
517
|
} }
|
|
486
|
-
function
|
|
487
|
-
i0.ɵɵelementStart(0, "div",
|
|
488
|
-
i0.ɵɵrepeaterCreate(1,
|
|
489
|
-
i0.ɵɵtemplate(3,
|
|
518
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
519
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
520
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_For_2_Template, 13, 5, "div", 69, _forTrack0);
|
|
521
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 46);
|
|
490
522
|
i0.ɵɵelementEnd();
|
|
491
523
|
} if (rf & 2) {
|
|
492
|
-
const
|
|
524
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
493
525
|
i0.ɵɵadvance();
|
|
494
|
-
i0.ɵɵrepeater(
|
|
526
|
+
i0.ɵɵrepeater(ctx_r1.subAgents);
|
|
495
527
|
i0.ɵɵadvance(2);
|
|
496
|
-
i0.ɵɵconditional(
|
|
528
|
+
i0.ɵɵconditional(ctx_r1.subAgentCount > ctx_r1.subAgents.length ? 3 : -1);
|
|
497
529
|
} }
|
|
498
|
-
function
|
|
499
|
-
i0.ɵɵelementStart(0, "div",
|
|
530
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 68);
|
|
500
532
|
i0.ɵɵtext(3, " Manage hierarchical relationships with child agents that work under this agent. ");
|
|
501
533
|
i0.ɵɵelementEnd();
|
|
502
|
-
i0.ɵɵelementStart(4, "div",
|
|
503
|
-
i0.ɵɵtemplate(5,
|
|
534
|
+
i0.ɵɵelementStart(4, "div", 37);
|
|
535
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 38);
|
|
504
536
|
i0.ɵɵelementEnd()();
|
|
505
|
-
i0.ɵɵtemplate(6,
|
|
537
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_6_Template, 7, 1, "div", 39)(7, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_7_Template, 4, 1, "div", 40);
|
|
506
538
|
i0.ɵɵelementEnd();
|
|
507
539
|
} if (rf & 2) {
|
|
508
|
-
const
|
|
540
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
509
541
|
i0.ɵɵadvance(5);
|
|
510
|
-
i0.ɵɵconditional(
|
|
542
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 5 : -1);
|
|
511
543
|
i0.ɵɵadvance();
|
|
512
|
-
i0.ɵɵconditional(
|
|
544
|
+
i0.ɵɵconditional(ctx_r1.subAgentCount === 0 ? 6 : 7);
|
|
513
545
|
} }
|
|
514
|
-
function
|
|
515
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
516
|
-
i0.ɵɵtemplate(1,
|
|
546
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
547
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
548
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template, 8, 2, "ng-template", 27);
|
|
517
549
|
i0.ɵɵelementEnd();
|
|
518
550
|
} if (rf & 2) {
|
|
519
|
-
const
|
|
520
|
-
i0.ɵɵproperty("expanded",
|
|
551
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
552
|
+
i0.ɵɵproperty("expanded", ctx_r1.subAgentCount > 0);
|
|
521
553
|
} }
|
|
522
|
-
function
|
|
523
|
-
i0.ɵɵelement(0, "i",
|
|
554
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
555
|
+
i0.ɵɵelement(0, "i", 73);
|
|
524
556
|
i0.ɵɵtext(1);
|
|
525
557
|
} if (rf & 2) {
|
|
526
|
-
const
|
|
558
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
527
559
|
i0.ɵɵadvance();
|
|
528
|
-
i0.ɵɵtextInterpolate1(" Learning Cycles",
|
|
560
|
+
i0.ɵɵtextInterpolate1(" Learning Cycles", ctx_r1.learningCycleCount > 0 ? " (" + ctx_r1.learningCycleCount + ")" : "", " ");
|
|
529
561
|
} }
|
|
530
|
-
function
|
|
531
|
-
i0.ɵɵelementStart(0, "div",
|
|
532
|
-
i0.ɵɵelement(1, "i",
|
|
562
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
563
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
564
|
+
i0.ɵɵelement(1, "i", 73);
|
|
533
565
|
i0.ɵɵelementStart(2, "h4");
|
|
534
566
|
i0.ɵɵtext(3, "No Learning Cycles");
|
|
535
567
|
i0.ɵɵelementEnd();
|
|
@@ -537,9 +569,9 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
537
569
|
i0.ɵɵtext(5, "Learning cycles will appear here as the agent processes requests and improves over time.");
|
|
538
570
|
i0.ɵɵelementEnd()();
|
|
539
571
|
} }
|
|
540
|
-
function
|
|
541
|
-
i0.ɵɵelementStart(0, "span",
|
|
542
|
-
i0.ɵɵelement(1, "i",
|
|
572
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
573
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
574
|
+
i0.ɵɵelement(1, "i", 76);
|
|
543
575
|
i0.ɵɵtext(2);
|
|
544
576
|
i0.ɵɵpipe(3, "date");
|
|
545
577
|
i0.ɵɵelementEnd();
|
|
@@ -548,8 +580,8 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
548
580
|
i0.ɵɵadvance(2);
|
|
549
581
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r23.StartedAt, "short"), " ");
|
|
550
582
|
} }
|
|
551
|
-
function
|
|
552
|
-
i0.ɵɵelementStart(0, "span",
|
|
583
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
584
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
553
585
|
i0.ɵɵtext(1);
|
|
554
586
|
i0.ɵɵelementEnd();
|
|
555
587
|
} if (rf & 2) {
|
|
@@ -557,21 +589,21 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
557
589
|
i0.ɵɵadvance();
|
|
558
590
|
i0.ɵɵtextInterpolate(cycle_r23.Status);
|
|
559
591
|
} }
|
|
560
|
-
function
|
|
592
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
561
593
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
562
|
-
i0.ɵɵelementStart(0, "div",
|
|
563
|
-
i0.ɵɵlistener("click", function
|
|
564
|
-
i0.ɵɵelementStart(1, "div",
|
|
565
|
-
i0.ɵɵelement(2, "i",
|
|
594
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
595
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", cycle_r23.ID)); });
|
|
596
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
597
|
+
i0.ɵɵelement(2, "i", 73);
|
|
566
598
|
i0.ɵɵelementEnd();
|
|
567
|
-
i0.ɵɵelementStart(3, "div",
|
|
599
|
+
i0.ɵɵelementStart(3, "div", 50)(4, "div", 51);
|
|
568
600
|
i0.ɵɵtext(5);
|
|
569
601
|
i0.ɵɵelementEnd();
|
|
570
|
-
i0.ɵɵelementStart(6, "div",
|
|
571
|
-
i0.ɵɵtemplate(7,
|
|
602
|
+
i0.ɵɵelementStart(6, "div", 53);
|
|
603
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 54)(8, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 64);
|
|
572
604
|
i0.ɵɵelementEnd()();
|
|
573
|
-
i0.ɵɵelementStart(9, "div",
|
|
574
|
-
i0.ɵɵelement(10, "i",
|
|
605
|
+
i0.ɵɵelementStart(9, "div", 55);
|
|
606
|
+
i0.ɵɵelement(10, "i", 57);
|
|
575
607
|
i0.ɵɵelementEnd()();
|
|
576
608
|
} if (rf & 2) {
|
|
577
609
|
const cycle_r23 = ctx.$implicit;
|
|
@@ -582,90 +614,90 @@ function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Condit
|
|
|
582
614
|
i0.ɵɵadvance();
|
|
583
615
|
i0.ɵɵconditional(cycle_r23.Status ? 8 : -1);
|
|
584
616
|
} }
|
|
585
|
-
function
|
|
617
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
586
618
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
587
|
-
i0.ɵɵelementStart(0, "div",
|
|
588
|
-
i0.ɵɵlistener("click", function
|
|
619
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
620
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
589
621
|
i0.ɵɵelementStart(1, "span");
|
|
590
622
|
i0.ɵɵtext(2);
|
|
591
623
|
i0.ɵɵelementEnd()();
|
|
592
624
|
} if (rf & 2) {
|
|
593
|
-
const
|
|
625
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
594
626
|
i0.ɵɵadvance(2);
|
|
595
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
627
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
596
628
|
} }
|
|
597
|
-
function
|
|
598
|
-
i0.ɵɵelementStart(0, "div",
|
|
599
|
-
i0.ɵɵrepeaterCreate(1,
|
|
600
|
-
i0.ɵɵtemplate(3,
|
|
629
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
630
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
631
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 74, _forTrack0);
|
|
632
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 46);
|
|
601
633
|
i0.ɵɵelementEnd();
|
|
602
634
|
} if (rf & 2) {
|
|
603
|
-
const
|
|
635
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
604
636
|
i0.ɵɵadvance();
|
|
605
|
-
i0.ɵɵrepeater(
|
|
637
|
+
i0.ɵɵrepeater(ctx_r1.learningCycles);
|
|
606
638
|
i0.ɵɵadvance(2);
|
|
607
|
-
i0.ɵɵconditional(
|
|
639
|
+
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
608
640
|
} }
|
|
609
|
-
function
|
|
610
|
-
i0.ɵɵelementStart(0, "div",
|
|
641
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
642
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 68);
|
|
611
643
|
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
612
644
|
i0.ɵɵelementEnd()();
|
|
613
|
-
i0.ɵɵtemplate(4,
|
|
645
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_4_Template, 6, 0, "div", 39)(5, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template, 4, 1, "div", 40);
|
|
614
646
|
i0.ɵɵelementEnd();
|
|
615
647
|
} if (rf & 2) {
|
|
616
|
-
const
|
|
648
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
617
649
|
i0.ɵɵadvance(4);
|
|
618
|
-
i0.ɵɵconditional(
|
|
650
|
+
i0.ɵɵconditional(ctx_r1.learningCycleCount === 0 ? 4 : 5);
|
|
619
651
|
} }
|
|
620
|
-
function
|
|
621
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
622
|
-
i0.ɵɵtemplate(1,
|
|
652
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
653
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
654
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template, 6, 1, "ng-template", 27);
|
|
623
655
|
i0.ɵɵelementEnd();
|
|
624
656
|
} if (rf & 2) {
|
|
625
657
|
i0.ɵɵproperty("expanded", false);
|
|
626
658
|
} }
|
|
627
|
-
function
|
|
628
|
-
i0.ɵɵelement(0, "i",
|
|
659
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
660
|
+
i0.ɵɵelement(0, "i", 77);
|
|
629
661
|
i0.ɵɵtext(1);
|
|
630
662
|
} if (rf & 2) {
|
|
631
|
-
const
|
|
663
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
632
664
|
i0.ɵɵadvance();
|
|
633
|
-
i0.ɵɵtextInterpolate1(" Notes",
|
|
665
|
+
i0.ɵɵtextInterpolate1(" Notes", ctx_r1.noteCount > 0 ? " (" + ctx_r1.noteCount + ")" : "", " ");
|
|
634
666
|
} }
|
|
635
|
-
function
|
|
667
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
636
668
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
637
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
638
|
-
i0.ɵɵlistener("click", function
|
|
639
|
-
i0.ɵɵelement(1, "i",
|
|
669
|
+
i0.ɵɵelementStart(0, "kendo-button", 41);
|
|
670
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
671
|
+
i0.ɵɵelement(1, "i", 42);
|
|
640
672
|
i0.ɵɵtext(2, " Add Note ");
|
|
641
673
|
i0.ɵɵelementEnd();
|
|
642
674
|
} }
|
|
643
|
-
function
|
|
675
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
644
676
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
645
|
-
i0.ɵɵelementStart(0, "kendo-button",
|
|
646
|
-
i0.ɵɵlistener("click", function
|
|
647
|
-
i0.ɵɵelement(1, "i",
|
|
677
|
+
i0.ɵɵelementStart(0, "kendo-button", 44);
|
|
678
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
679
|
+
i0.ɵɵelement(1, "i", 42);
|
|
648
680
|
i0.ɵɵtext(2, " Create First Note ");
|
|
649
681
|
i0.ɵɵelementEnd();
|
|
650
682
|
} }
|
|
651
|
-
function
|
|
652
|
-
i0.ɵɵelementStart(0, "div",
|
|
653
|
-
i0.ɵɵelement(1, "i",
|
|
683
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
684
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
685
|
+
i0.ɵɵelement(1, "i", 77);
|
|
654
686
|
i0.ɵɵelementStart(2, "h4");
|
|
655
687
|
i0.ɵɵtext(3, "No Notes");
|
|
656
688
|
i0.ɵɵelementEnd();
|
|
657
689
|
i0.ɵɵelementStart(4, "p");
|
|
658
690
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
659
691
|
i0.ɵɵelementEnd();
|
|
660
|
-
i0.ɵɵtemplate(6,
|
|
692
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 43);
|
|
661
693
|
i0.ɵɵelementEnd();
|
|
662
694
|
} if (rf & 2) {
|
|
663
|
-
const
|
|
695
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
664
696
|
i0.ɵɵadvance(6);
|
|
665
|
-
i0.ɵɵconditional(
|
|
697
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
666
698
|
} }
|
|
667
|
-
function
|
|
668
|
-
i0.ɵɵelementStart(0, "div",
|
|
699
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
700
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
669
701
|
i0.ɵɵtext(1);
|
|
670
702
|
i0.ɵɵelementEnd();
|
|
671
703
|
} if (rf & 2) {
|
|
@@ -673,9 +705,9 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
673
705
|
i0.ɵɵadvance();
|
|
674
706
|
i0.ɵɵtextInterpolate2("", note_r28.Note.substring(0, 100), "", note_r28.Note.length > 100 ? "..." : "", "");
|
|
675
707
|
} }
|
|
676
|
-
function
|
|
677
|
-
i0.ɵɵelementStart(0, "span",
|
|
678
|
-
i0.ɵɵelement(1, "i",
|
|
708
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
709
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
710
|
+
i0.ɵɵelement(1, "i", 76);
|
|
679
711
|
i0.ɵɵtext(2);
|
|
680
712
|
i0.ɵɵpipe(3, "date");
|
|
681
713
|
i0.ɵɵelementEnd();
|
|
@@ -684,22 +716,22 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
684
716
|
i0.ɵɵadvance(2);
|
|
685
717
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r28.__mj_CreatedAt, "short"), " ");
|
|
686
718
|
} }
|
|
687
|
-
function
|
|
719
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
688
720
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
689
|
-
i0.ɵɵelementStart(0, "div",
|
|
690
|
-
i0.ɵɵlistener("click", function
|
|
691
|
-
i0.ɵɵelementStart(1, "div",
|
|
692
|
-
i0.ɵɵelement(2, "i",
|
|
721
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
722
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", note_r28.ID)); });
|
|
723
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
724
|
+
i0.ɵɵelement(2, "i", 77);
|
|
693
725
|
i0.ɵɵelementEnd();
|
|
694
|
-
i0.ɵɵelementStart(3, "div",
|
|
726
|
+
i0.ɵɵelementStart(3, "div", 50)(4, "div", 51);
|
|
695
727
|
i0.ɵɵtext(5);
|
|
696
728
|
i0.ɵɵelementEnd();
|
|
697
|
-
i0.ɵɵtemplate(6,
|
|
698
|
-
i0.ɵɵelementStart(7, "div",
|
|
699
|
-
i0.ɵɵtemplate(8,
|
|
729
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 52);
|
|
730
|
+
i0.ɵɵelementStart(7, "div", 53);
|
|
731
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 54);
|
|
700
732
|
i0.ɵɵelementEnd()();
|
|
701
|
-
i0.ɵɵelementStart(9, "div",
|
|
702
|
-
i0.ɵɵelement(10, "i",
|
|
733
|
+
i0.ɵɵelementStart(9, "div", 55);
|
|
734
|
+
i0.ɵɵelement(10, "i", 57);
|
|
703
735
|
i0.ɵɵelementEnd()();
|
|
704
736
|
} if (rf & 2) {
|
|
705
737
|
const note_r28 = ctx.$implicit;
|
|
@@ -710,64 +742,64 @@ function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Condit
|
|
|
710
742
|
i0.ɵɵadvance(2);
|
|
711
743
|
i0.ɵɵconditional(note_r28.__mj_CreatedAt ? 8 : -1);
|
|
712
744
|
} }
|
|
713
|
-
function
|
|
745
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
714
746
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
715
|
-
i0.ɵɵelementStart(0, "div",
|
|
716
|
-
i0.ɵɵlistener("click", function
|
|
747
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
748
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", "")); });
|
|
717
749
|
i0.ɵɵelementStart(1, "span");
|
|
718
750
|
i0.ɵɵtext(2);
|
|
719
751
|
i0.ɵɵelementEnd()();
|
|
720
752
|
} if (rf & 2) {
|
|
721
|
-
const
|
|
753
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
722
754
|
i0.ɵɵadvance(2);
|
|
723
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
755
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
724
756
|
} }
|
|
725
|
-
function
|
|
726
|
-
i0.ɵɵelementStart(0, "div",
|
|
727
|
-
i0.ɵɵrepeaterCreate(1,
|
|
728
|
-
i0.ɵɵtemplate(3,
|
|
757
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
758
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
759
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 78, _forTrack0);
|
|
760
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 46);
|
|
729
761
|
i0.ɵɵelementEnd();
|
|
730
762
|
} if (rf & 2) {
|
|
731
|
-
const
|
|
763
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
732
764
|
i0.ɵɵadvance();
|
|
733
|
-
i0.ɵɵrepeater(
|
|
765
|
+
i0.ɵɵrepeater(ctx_r1.agentNotes);
|
|
734
766
|
i0.ɵɵadvance(2);
|
|
735
|
-
i0.ɵɵconditional(
|
|
767
|
+
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
736
768
|
} }
|
|
737
|
-
function
|
|
738
|
-
i0.ɵɵelementStart(0, "div",
|
|
769
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
770
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 68);
|
|
739
771
|
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
740
772
|
i0.ɵɵelementEnd();
|
|
741
|
-
i0.ɵɵelementStart(4, "div",
|
|
742
|
-
i0.ɵɵtemplate(5,
|
|
773
|
+
i0.ɵɵelementStart(4, "div", 37);
|
|
774
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 38);
|
|
743
775
|
i0.ɵɵelementEnd()();
|
|
744
|
-
i0.ɵɵtemplate(6,
|
|
776
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_6_Template, 7, 1, "div", 39)(7, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Template, 4, 1, "div", 40);
|
|
745
777
|
i0.ɵɵelementEnd();
|
|
746
778
|
} if (rf & 2) {
|
|
747
|
-
const
|
|
779
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
748
780
|
i0.ɵɵadvance(5);
|
|
749
|
-
i0.ɵɵconditional(
|
|
781
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 5 : -1);
|
|
750
782
|
i0.ɵɵadvance();
|
|
751
|
-
i0.ɵɵconditional(
|
|
783
|
+
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 6 : 7);
|
|
752
784
|
} }
|
|
753
|
-
function
|
|
754
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
755
|
-
i0.ɵɵtemplate(1,
|
|
785
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
786
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
787
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template, 8, 2, "ng-template", 27);
|
|
756
788
|
i0.ɵɵelementEnd();
|
|
757
789
|
} if (rf & 2) {
|
|
758
790
|
i0.ɵɵproperty("expanded", false);
|
|
759
791
|
} }
|
|
760
|
-
function
|
|
761
|
-
i0.ɵɵelement(0, "i",
|
|
792
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
793
|
+
i0.ɵɵelement(0, "i", 80);
|
|
762
794
|
i0.ɵɵtext(1);
|
|
763
795
|
} if (rf & 2) {
|
|
764
|
-
const
|
|
796
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
765
797
|
i0.ɵɵadvance();
|
|
766
|
-
i0.ɵɵtextInterpolate1(" Execution History",
|
|
798
|
+
i0.ɵɵtextInterpolate1(" Execution History", ctx_r1.executionHistoryCount > 0 ? " (" + ctx_r1.executionHistoryCount + ")" : "", " ");
|
|
767
799
|
} }
|
|
768
|
-
function
|
|
769
|
-
i0.ɵɵelementStart(0, "div",
|
|
770
|
-
i0.ɵɵelement(1, "i",
|
|
800
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
801
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
802
|
+
i0.ɵɵelement(1, "i", 80);
|
|
771
803
|
i0.ɵɵelementStart(2, "h4");
|
|
772
804
|
i0.ɵɵtext(3, "No Execution History");
|
|
773
805
|
i0.ɵɵelementEnd();
|
|
@@ -775,46 +807,46 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
775
807
|
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
776
808
|
i0.ɵɵelementEnd()();
|
|
777
809
|
} }
|
|
778
|
-
function
|
|
779
|
-
i0.ɵɵelementStart(0, "span",
|
|
780
|
-
i0.ɵɵelement(1, "i",
|
|
810
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
811
|
+
i0.ɵɵelementStart(0, "span", 91);
|
|
812
|
+
i0.ɵɵelement(1, "i", 94);
|
|
781
813
|
i0.ɵɵtext(2);
|
|
782
814
|
i0.ɵɵelementEnd();
|
|
783
815
|
} if (rf & 2) {
|
|
784
816
|
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
785
|
-
const
|
|
817
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
786
818
|
i0.ɵɵadvance(2);
|
|
787
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
819
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatExecutionTimeFromDates(execution_r31.StartedAt, execution_r31.CompletedAt), " ");
|
|
788
820
|
} }
|
|
789
|
-
function
|
|
790
|
-
i0.ɵɵelementStart(0, "div",
|
|
821
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
822
|
+
i0.ɵɵelementStart(0, "div", 92);
|
|
791
823
|
i0.ɵɵtext(1);
|
|
792
824
|
i0.ɵɵelementEnd();
|
|
793
825
|
} if (rf & 2) {
|
|
794
826
|
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
795
|
-
const
|
|
827
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
796
828
|
i0.ɵɵadvance();
|
|
797
|
-
i0.ɵɵtextInterpolate(
|
|
829
|
+
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultPreview(execution_r31));
|
|
798
830
|
} }
|
|
799
|
-
function
|
|
800
|
-
i0.ɵɵelementStart(0, "div",
|
|
831
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
+
i0.ɵɵelementStart(0, "div", 95)(1, "h5");
|
|
801
833
|
i0.ɵɵtext(2, "Result");
|
|
802
834
|
i0.ɵɵelementEnd();
|
|
803
|
-
i0.ɵɵelementStart(3, "div",
|
|
835
|
+
i0.ɵɵelementStart(3, "div", 104);
|
|
804
836
|
i0.ɵɵtext(4);
|
|
805
837
|
i0.ɵɵelementEnd()();
|
|
806
838
|
} if (rf & 2) {
|
|
807
839
|
const execution_r31 = i0.ɵɵnextContext(2).$implicit;
|
|
808
|
-
const
|
|
840
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
809
841
|
i0.ɵɵadvance(4);
|
|
810
|
-
i0.ɵɵtextInterpolate(
|
|
842
|
+
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultMessage(execution_r31));
|
|
811
843
|
} }
|
|
812
|
-
function
|
|
813
|
-
i0.ɵɵelementStart(0, "div",
|
|
814
|
-
i0.ɵɵelement(2, "i",
|
|
844
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
845
|
+
i0.ɵɵelementStart(0, "div", 96)(1, "h5");
|
|
846
|
+
i0.ɵɵelement(2, "i", 105);
|
|
815
847
|
i0.ɵɵtext(3, " Error");
|
|
816
848
|
i0.ɵɵelementEnd();
|
|
817
|
-
i0.ɵɵelementStart(4, "div",
|
|
849
|
+
i0.ɵɵelementStart(4, "div", 106);
|
|
818
850
|
i0.ɵɵtext(5);
|
|
819
851
|
i0.ɵɵelementEnd()();
|
|
820
852
|
} if (rf & 2) {
|
|
@@ -822,11 +854,11 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
822
854
|
i0.ɵɵadvance(5);
|
|
823
855
|
i0.ɵɵtextInterpolate(execution_r31.ErrorMessage);
|
|
824
856
|
} }
|
|
825
|
-
function
|
|
826
|
-
i0.ɵɵelementStart(0, "div",
|
|
857
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
858
|
+
i0.ɵɵelementStart(0, "div", 98)(1, "span", 99);
|
|
827
859
|
i0.ɵɵtext(2, "Completed:");
|
|
828
860
|
i0.ɵɵelementEnd();
|
|
829
|
-
i0.ɵɵelementStart(3, "span",
|
|
861
|
+
i0.ɵɵelementStart(3, "span", 100);
|
|
830
862
|
i0.ɵɵtext(4);
|
|
831
863
|
i0.ɵɵpipe(5, "date");
|
|
832
864
|
i0.ɵɵelementEnd()();
|
|
@@ -835,11 +867,11 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
835
867
|
i0.ɵɵadvance(4);
|
|
836
868
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, execution_r31.CompletedAt, "medium"));
|
|
837
869
|
} }
|
|
838
|
-
function
|
|
839
|
-
i0.ɵɵelementStart(0, "div",
|
|
870
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
871
|
+
i0.ɵɵelementStart(0, "div", 98)(1, "span", 99);
|
|
840
872
|
i0.ɵɵtext(2, "Conversation:");
|
|
841
873
|
i0.ɵɵelementEnd();
|
|
842
|
-
i0.ɵɵelementStart(3, "span",
|
|
874
|
+
i0.ɵɵelementStart(3, "span", 100);
|
|
843
875
|
i0.ɵɵtext(4);
|
|
844
876
|
i0.ɵɵelementEnd()();
|
|
845
877
|
} if (rf & 2) {
|
|
@@ -847,22 +879,22 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
847
879
|
i0.ɵɵadvance(4);
|
|
848
880
|
i0.ɵɵtextInterpolate(execution_r31.ConversationID);
|
|
849
881
|
} }
|
|
850
|
-
function
|
|
882
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
851
883
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
852
|
-
i0.ɵɵelementStart(0, "div",
|
|
853
|
-
i0.ɵɵtemplate(1,
|
|
854
|
-
i0.ɵɵelementStart(3, "div",
|
|
884
|
+
i0.ɵɵelementStart(0, "div", 93);
|
|
885
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_1_Template, 5, 1, "div", 95)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_2_Template, 6, 1, "div", 96);
|
|
886
|
+
i0.ɵɵelementStart(3, "div", 97)(4, "div", 98)(5, "span", 99);
|
|
855
887
|
i0.ɵɵtext(6, "Started:");
|
|
856
888
|
i0.ɵɵelementEnd();
|
|
857
|
-
i0.ɵɵelementStart(7, "span",
|
|
889
|
+
i0.ɵɵelementStart(7, "span", 100);
|
|
858
890
|
i0.ɵɵtext(8);
|
|
859
891
|
i0.ɵɵpipe(9, "date");
|
|
860
892
|
i0.ɵɵelementEnd()();
|
|
861
|
-
i0.ɵɵtemplate(10,
|
|
893
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_10_Template, 6, 4, "div", 98)(11, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Conditional_11_Template, 5, 1, "div", 98);
|
|
862
894
|
i0.ɵɵelementEnd();
|
|
863
|
-
i0.ɵɵelementStart(12, "div",
|
|
864
|
-
i0.ɵɵlistener("click", function
|
|
865
|
-
i0.ɵɵelement(14, "i",
|
|
895
|
+
i0.ɵɵelementStart(12, "div", 101)(13, "button", 102);
|
|
896
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_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_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r31.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
897
|
+
i0.ɵɵelement(14, "i", 103);
|
|
866
898
|
i0.ɵɵtext(15, " View Full Details ");
|
|
867
899
|
i0.ɵɵelementEnd()()();
|
|
868
900
|
} if (rf & 2) {
|
|
@@ -878,171 +910,159 @@ function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Condit
|
|
|
878
910
|
i0.ɵɵadvance();
|
|
879
911
|
i0.ɵɵconditional(execution_r31.ConversationID ? 11 : -1);
|
|
880
912
|
} }
|
|
881
|
-
function
|
|
913
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
882
914
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
883
|
-
i0.ɵɵelementStart(0, "div",
|
|
915
|
+
i0.ɵɵelementStart(0, "div", 83)(1, "div")(2, "div", 84);
|
|
884
916
|
i0.ɵɵelement(3, "i");
|
|
885
917
|
i0.ɵɵelementEnd();
|
|
886
|
-
i0.ɵɵelementStart(4, "div",
|
|
887
|
-
i0.ɵɵlistener("click", function
|
|
888
|
-
i0.ɵɵelementStart(6, "div")(7, "div",
|
|
889
|
-
i0.ɵɵelement(8, "i",
|
|
918
|
+
i0.ɵɵelementStart(4, "div", 85)(5, "div", 86);
|
|
919
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template_div_click_5_listener() { const execution_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r31.ID)); });
|
|
920
|
+
i0.ɵɵelementStart(6, "div")(7, "div", 87);
|
|
921
|
+
i0.ɵɵelement(8, "i", 88);
|
|
890
922
|
i0.ɵɵtext(9);
|
|
891
|
-
i0.ɵɵelementStart(10, "span",
|
|
923
|
+
i0.ɵɵelementStart(10, "span", 89);
|
|
892
924
|
i0.ɵɵtext(11);
|
|
893
925
|
i0.ɵɵpipe(12, "date");
|
|
894
926
|
i0.ɵɵelementEnd()();
|
|
895
|
-
i0.ɵɵelementStart(13, "div",
|
|
927
|
+
i0.ɵɵelementStart(13, "div", 90)(14, "span", 29);
|
|
896
928
|
i0.ɵɵtext(15);
|
|
897
929
|
i0.ɵɵelementEnd();
|
|
898
|
-
i0.ɵɵtemplate(16,
|
|
930
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_16_Template, 3, 1, "span", 91);
|
|
899
931
|
i0.ɵɵelementEnd();
|
|
900
|
-
i0.ɵɵtemplate(17,
|
|
932
|
+
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_17_Template, 2, 1, "div", 92);
|
|
901
933
|
i0.ɵɵelementEnd()();
|
|
902
|
-
i0.ɵɵtemplate(18,
|
|
934
|
+
i0.ɵɵtemplate(18, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_18_Template, 16, 8, "div", 93);
|
|
903
935
|
i0.ɵɵelementEnd()()();
|
|
904
936
|
} if (rf & 2) {
|
|
905
937
|
const execution_r31 = ctx.$implicit;
|
|
906
|
-
const
|
|
907
|
-
i0.ɵɵclassProp("expanded",
|
|
938
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
939
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r31.ID]);
|
|
908
940
|
i0.ɵɵadvance(2);
|
|
909
|
-
i0.ɵɵstyleProp("background-color",
|
|
941
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r31.Status));
|
|
910
942
|
i0.ɵɵadvance();
|
|
911
|
-
i0.ɵɵclassMap(
|
|
943
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r31.Status));
|
|
912
944
|
i0.ɵɵadvance(5);
|
|
913
|
-
i0.ɵɵclassProp("expanded",
|
|
945
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r31.ID]);
|
|
914
946
|
i0.ɵɵadvance();
|
|
915
947
|
i0.ɵɵtextInterpolate1(" Execution #", execution_r31.ID.substring(0, 8), " ");
|
|
916
948
|
i0.ɵɵadvance(2);
|
|
917
949
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16, execution_r31.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
918
950
|
i0.ɵɵadvance(3);
|
|
919
|
-
i0.ɵɵstyleProp("background-color",
|
|
951
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r31.Status));
|
|
920
952
|
i0.ɵɵadvance();
|
|
921
953
|
i0.ɵɵtextInterpolate1(" ", execution_r31.Status || "Unknown", " ");
|
|
922
954
|
i0.ɵɵadvance();
|
|
923
955
|
i0.ɵɵconditional(execution_r31.CompletedAt ? 16 : -1);
|
|
924
956
|
i0.ɵɵadvance();
|
|
925
|
-
i0.ɵɵconditional(execution_r31.Result && !
|
|
957
|
+
i0.ɵɵconditional(execution_r31.Result && !ctx_r1.expandedExecutions[execution_r31.ID] ? 17 : -1);
|
|
926
958
|
i0.ɵɵadvance();
|
|
927
|
-
i0.ɵɵconditional(
|
|
959
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r31.ID] ? 18 : -1);
|
|
928
960
|
} }
|
|
929
|
-
function
|
|
961
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
930
962
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
931
|
-
i0.ɵɵelementStart(0, "div",
|
|
932
|
-
i0.ɵɵlistener("click", function
|
|
963
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
964
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Runs", "")); });
|
|
933
965
|
i0.ɵɵelementStart(1, "span");
|
|
934
966
|
i0.ɵɵtext(2);
|
|
935
967
|
i0.ɵɵelementEnd()();
|
|
936
968
|
} if (rf & 2) {
|
|
937
|
-
const
|
|
969
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
938
970
|
i0.ɵɵadvance(2);
|
|
939
|
-
i0.ɵɵtextInterpolate1("View all ",
|
|
971
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r1.executionHistoryCount, " executions...");
|
|
940
972
|
} }
|
|
941
|
-
function
|
|
942
|
-
i0.ɵɵelementStart(0, "div",
|
|
943
|
-
i0.ɵɵrepeaterCreate(1,
|
|
944
|
-
i0.ɵɵtemplate(3,
|
|
973
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
974
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
975
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template, 19, 19, "div", 82, _forTrack0);
|
|
976
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 46);
|
|
945
977
|
i0.ɵɵelementEnd();
|
|
946
978
|
} if (rf & 2) {
|
|
947
|
-
const
|
|
979
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
948
980
|
i0.ɵɵadvance();
|
|
949
|
-
i0.ɵɵrepeater(
|
|
981
|
+
i0.ɵɵrepeater(ctx_r1.recentExecutions);
|
|
950
982
|
i0.ɵɵadvance(2);
|
|
951
|
-
i0.ɵɵconditional(
|
|
983
|
+
i0.ɵɵconditional(ctx_r1.executionHistoryCount > ctx_r1.recentExecutions.length ? 3 : -1);
|
|
952
984
|
} }
|
|
953
|
-
function
|
|
954
|
-
i0.ɵɵelementStart(0, "div",
|
|
985
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
986
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36)(2, "div", 68);
|
|
955
987
|
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
956
988
|
i0.ɵɵelementEnd()();
|
|
957
|
-
i0.ɵɵtemplate(4,
|
|
989
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template, 6, 0, "div", 39)(5, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template, 4, 1, "div", 81);
|
|
958
990
|
i0.ɵɵelementEnd();
|
|
959
991
|
} if (rf & 2) {
|
|
960
|
-
const
|
|
992
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
961
993
|
i0.ɵɵadvance(4);
|
|
962
|
-
i0.ɵɵconditional(
|
|
994
|
+
i0.ɵɵconditional(ctx_r1.executionHistoryCount === 0 ? 4 : 5);
|
|
963
995
|
} }
|
|
964
|
-
function
|
|
965
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
966
|
-
i0.ɵɵtemplate(1,
|
|
996
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
997
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 24);
|
|
998
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template, 2, 1, "ng-template", 26)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template, 6, 1, "ng-template", 27);
|
|
967
999
|
i0.ɵɵelementEnd();
|
|
968
1000
|
} if (rf & 2) {
|
|
969
1001
|
i0.ɵɵproperty("expanded", false);
|
|
970
1002
|
} }
|
|
971
|
-
function
|
|
972
|
-
i0.ɵɵelement(0, "i",
|
|
1003
|
+
function AIAgentFormComponentExtended_form_2_ng_template_29_Template(rf, ctx) { if (rf & 1) {
|
|
1004
|
+
i0.ɵɵelement(0, "i", 107);
|
|
973
1005
|
i0.ɵɵtext(1, " Details ");
|
|
974
1006
|
} }
|
|
975
|
-
function
|
|
976
|
-
i0.ɵɵelementStart(0, "div",
|
|
1007
|
+
function AIAgentFormComponentExtended_form_2_ng_template_30_Template(rf, ctx) { if (rf & 1) {
|
|
1008
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "div", 108);
|
|
977
1009
|
i0.ɵɵprojection(2);
|
|
978
1010
|
i0.ɵɵelementEnd()();
|
|
979
1011
|
} }
|
|
980
|
-
function
|
|
1012
|
+
function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
981
1013
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
982
1014
|
i0.ɵɵelementStart(0, "form", 4, 0);
|
|
983
1015
|
i0.ɵɵelement(2, "mj-form-toolbar", 5);
|
|
984
1016
|
i0.ɵɵelementStart(3, "div", 6)(4, "div", 7)(5, "div", 8)(6, "div", 9);
|
|
985
|
-
i0.ɵɵ
|
|
1017
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_7_Template, 1, 2, "img", 10)(8, AIAgentFormComponentExtended_form_2_Conditional_8_Template, 1, 2, "i", 11);
|
|
986
1018
|
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵelementStart(
|
|
988
|
-
i0.ɵɵtemplate(
|
|
989
|
-
i0.ɵɵelementStart(
|
|
990
|
-
i0.ɵɵtemplate(
|
|
1019
|
+
i0.ɵɵelementStart(9, "div", 12);
|
|
1020
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_10_Template, 1, 1, "kendo-textbox", 13)(11, AIAgentFormComponentExtended_form_2_Conditional_11_Template, 2, 1, "h1", 14);
|
|
1021
|
+
i0.ɵɵelementStart(12, "div", 15);
|
|
1022
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_13_Template, 3, 3, "span", 16)(14, AIAgentFormComponentExtended_form_2_Conditional_14_Template, 3, 3, "span", 17)(15, AIAgentFormComponentExtended_form_2_Conditional_15_Template, 3, 1, "span", 18);
|
|
991
1023
|
i0.ɵɵelementEnd()()();
|
|
992
|
-
i0.ɵɵelementStart(
|
|
993
|
-
i0.ɵɵtemplate(
|
|
994
|
-
i0.ɵɵelementStart(
|
|
995
|
-
i0.ɵɵlistener("click", function
|
|
996
|
-
i0.ɵɵelement(
|
|
1024
|
+
i0.ɵɵelementStart(16, "div", 19);
|
|
1025
|
+
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_2_Conditional_17_Template, 3, 1, "kendo-button", 20);
|
|
1026
|
+
i0.ɵɵelementStart(18, "kendo-button", 21);
|
|
1027
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Template_kendo_button_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
1028
|
+
i0.ɵɵelement(19, "i", 22);
|
|
997
1029
|
i0.ɵɵelementEnd()()()();
|
|
998
|
-
i0.ɵɵelementStart(
|
|
999
|
-
i0.ɵɵtemplate(
|
|
1000
|
-
i0.ɵɵelementStart(
|
|
1001
|
-
i0.ɵɵtemplate(
|
|
1030
|
+
i0.ɵɵelementStart(20, "div", 23)(21, "kendo-panelbar");
|
|
1031
|
+
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_2_Conditional_22_Template, 3, 1, "kendo-panelbar-item", 24)(23, AIAgentFormComponentExtended_form_2_Conditional_23_Template, 3, 1, "kendo-panelbar-item", 24)(24, AIAgentFormComponentExtended_form_2_Conditional_24_Template, 3, 1, "kendo-panelbar-item", 24)(25, AIAgentFormComponentExtended_form_2_Conditional_25_Template, 3, 1, "kendo-panelbar-item", 24)(26, AIAgentFormComponentExtended_form_2_Conditional_26_Template, 3, 1, "kendo-panelbar-item", 24)(27, AIAgentFormComponentExtended_form_2_Conditional_27_Template, 3, 1, "kendo-panelbar-item", 24);
|
|
1032
|
+
i0.ɵɵelementStart(28, "kendo-panelbar-item", 25);
|
|
1033
|
+
i0.ɵɵtemplate(29, AIAgentFormComponentExtended_form_2_ng_template_29_Template, 2, 0, "ng-template", 26)(30, AIAgentFormComponentExtended_form_2_ng_template_30_Template, 3, 0, "ng-template", 27);
|
|
1002
1034
|
i0.ɵɵelementEnd()()()();
|
|
1003
1035
|
} if (rf & 2) {
|
|
1004
|
-
const
|
|
1036
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1005
1037
|
i0.ɵɵadvance(2);
|
|
1006
|
-
i0.ɵɵproperty("form",
|
|
1007
|
-
i0.ɵɵadvance(
|
|
1008
|
-
i0.ɵɵconditional(
|
|
1038
|
+
i0.ɵɵproperty("form", ctx_r1);
|
|
1039
|
+
i0.ɵɵadvance(5);
|
|
1040
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL() ? 7 : 8);
|
|
1009
1041
|
i0.ɵɵadvance(3);
|
|
1010
|
-
i0.ɵɵconditional(
|
|
1042
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 10 : 11);
|
|
1043
|
+
i0.ɵɵadvance(3);
|
|
1044
|
+
i0.ɵɵconditional(ctx_r1.record.Status ? 13 : -1);
|
|
1011
1045
|
i0.ɵɵadvance();
|
|
1012
|
-
i0.ɵɵconditional(
|
|
1046
|
+
i0.ɵɵconditional(ctx_r1.record.ExecutionMode ? 14 : -1);
|
|
1013
1047
|
i0.ɵɵadvance();
|
|
1014
|
-
i0.ɵɵconditional(
|
|
1048
|
+
i0.ɵɵconditional(ctx_r1.record.Parent ? 15 : -1);
|
|
1015
1049
|
i0.ɵɵadvance(2);
|
|
1016
|
-
i0.ɵɵconditional(
|
|
1050
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 17 : -1);
|
|
1017
1051
|
i0.ɵɵadvance(5);
|
|
1018
|
-
i0.ɵɵconditional(
|
|
1052
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 22 : -1);
|
|
1019
1053
|
i0.ɵɵadvance();
|
|
1020
|
-
i0.ɵɵconditional(
|
|
1054
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 23 : -1);
|
|
1021
1055
|
i0.ɵɵadvance();
|
|
1022
|
-
i0.ɵɵconditional(
|
|
1056
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 24 : -1);
|
|
1023
1057
|
i0.ɵɵadvance();
|
|
1024
|
-
i0.ɵɵconditional(
|
|
1058
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 25 : -1);
|
|
1025
1059
|
i0.ɵɵadvance();
|
|
1026
|
-
i0.ɵɵconditional(
|
|
1060
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 26 : -1);
|
|
1027
1061
|
i0.ɵɵadvance();
|
|
1028
|
-
i0.ɵɵconditional(
|
|
1062
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 27 : -1);
|
|
1029
1063
|
i0.ɵɵadvance();
|
|
1030
1064
|
i0.ɵɵproperty("expanded", false);
|
|
1031
1065
|
} }
|
|
1032
|
-
function AIAgentFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1033
|
-
const _r34 = i0.ɵɵgetCurrentView();
|
|
1034
|
-
i0.ɵɵelementStart(0, "kendo-window", 107);
|
|
1035
|
-
i0.ɵɵlistener("close", function AIAgentFormComponentExtended_Conditional_2_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged(false)); });
|
|
1036
|
-
i0.ɵɵelementStart(1, "mj-ai-test-harness", 108);
|
|
1037
|
-
i0.ɵɵlistener("visibilityChange", function AIAgentFormComponentExtended_Conditional_2_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged($event)); });
|
|
1038
|
-
i0.ɵɵelementEnd()();
|
|
1039
|
-
} if (rf & 2) {
|
|
1040
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
1041
|
-
i0.ɵɵpropertyInterpolate1("title", "Run AI Agent - ", ctx_r2.record.Name || "Untitled", "");
|
|
1042
|
-
i0.ɵɵproperty("width", 1200)("height", 800)("minWidth", 800)("minHeight", 600)("draggable", true)("resizable", true)("state", "default");
|
|
1043
|
-
i0.ɵɵadvance();
|
|
1044
|
-
i0.ɵɵproperty("aiAgent", ctx_r2.record)("isVisible", ctx_r2.showTestHarness);
|
|
1045
|
-
} }
|
|
1046
1066
|
/**
|
|
1047
1067
|
* Enhanced AI Agent form component that extends the auto-generated base form
|
|
1048
1068
|
* with comprehensive agent management capabilities including test harness integration,
|
|
@@ -1074,13 +1094,14 @@ function AIAgentFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf &
|
|
|
1074
1094
|
* ```
|
|
1075
1095
|
*/
|
|
1076
1096
|
let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AIAgentFormComponent {
|
|
1077
|
-
constructor(elementRef, sharedService, router, route, cdr, dialogService, viewContainerRef) {
|
|
1097
|
+
constructor(elementRef, sharedService, router, route, cdr, dialogService, viewContainerRef, newAgentDialogService, actionGalleryService, testHarnessService) {
|
|
1078
1098
|
super(elementRef, sharedService, router, route, cdr);
|
|
1079
1099
|
this.sharedService = sharedService;
|
|
1080
1100
|
this.dialogService = dialogService;
|
|
1081
1101
|
this.viewContainerRef = viewContainerRef;
|
|
1082
|
-
|
|
1083
|
-
this.
|
|
1102
|
+
this.newAgentDialogService = newAgentDialogService;
|
|
1103
|
+
this.actionGalleryService = actionGalleryService;
|
|
1104
|
+
this.testHarnessService = testHarnessService;
|
|
1084
1105
|
// === Related Entity Counts ===
|
|
1085
1106
|
/** Number of sub-agents under this agent */
|
|
1086
1107
|
this.subAgentCount = 0;
|
|
@@ -1204,7 +1225,9 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1204
1225
|
MJNotificationService.Instance.CreateSimpleNotification('Please save the AI agent before testing', 'warning', 4000);
|
|
1205
1226
|
return;
|
|
1206
1227
|
}
|
|
1207
|
-
|
|
1228
|
+
// Use the new test harness dialog service
|
|
1229
|
+
// Don't pass viewContainerRef so window is top-level
|
|
1230
|
+
this.testHarnessService.openForAgent(this.record.ID);
|
|
1208
1231
|
}
|
|
1209
1232
|
/**
|
|
1210
1233
|
* Returns the appropriate color for the agent status badge.
|
|
@@ -1224,9 +1247,6 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1224
1247
|
* Updates the component state when the test harness is opened or closed.
|
|
1225
1248
|
* @param isVisible - Whether the test harness is currently visible
|
|
1226
1249
|
*/
|
|
1227
|
-
onTestHarnessVisibilityChanged(isVisible) {
|
|
1228
|
-
this.showTestHarness = isVisible;
|
|
1229
|
-
}
|
|
1230
1250
|
/**
|
|
1231
1251
|
* Gets the count of sub-agents
|
|
1232
1252
|
*/
|
|
@@ -1258,6 +1278,47 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1258
1278
|
return 'fa-solid fa-robot';
|
|
1259
1279
|
}
|
|
1260
1280
|
}
|
|
1281
|
+
/**
|
|
1282
|
+
* Gets the agent's display icon
|
|
1283
|
+
* Prioritizes LogoURL, falls back to IconClass, then default robot icon
|
|
1284
|
+
*/
|
|
1285
|
+
getAgentIcon() {
|
|
1286
|
+
if (this.record?.LogoURL) {
|
|
1287
|
+
// LogoURL is used in img tag, not here
|
|
1288
|
+
return '';
|
|
1289
|
+
}
|
|
1290
|
+
return this.record?.IconClass || 'fa-solid fa-robot';
|
|
1291
|
+
}
|
|
1292
|
+
/**
|
|
1293
|
+
* Checks if the agent has a logo URL (for image display)
|
|
1294
|
+
*/
|
|
1295
|
+
hasLogoURL() {
|
|
1296
|
+
return !!this.record?.LogoURL;
|
|
1297
|
+
}
|
|
1298
|
+
/**
|
|
1299
|
+
* Gets the icon for a sub-agent
|
|
1300
|
+
* Prioritizes LogoURL, falls back to IconClass, then default robot icon
|
|
1301
|
+
*/
|
|
1302
|
+
getSubAgentIcon(subAgent) {
|
|
1303
|
+
if (subAgent?.LogoURL) {
|
|
1304
|
+
// LogoURL is used in img tag, not here
|
|
1305
|
+
return '';
|
|
1306
|
+
}
|
|
1307
|
+
return subAgent?.IconClass || 'fa-solid fa-robot';
|
|
1308
|
+
}
|
|
1309
|
+
/**
|
|
1310
|
+
* Gets the icon class for an action
|
|
1311
|
+
* Falls back to default bolt icon if no IconClass is set
|
|
1312
|
+
*/
|
|
1313
|
+
getActionIcon(action) {
|
|
1314
|
+
return action?.IconClass || 'fa-solid fa-bolt';
|
|
1315
|
+
}
|
|
1316
|
+
/**
|
|
1317
|
+
* Checks if a sub-agent has a logo URL
|
|
1318
|
+
*/
|
|
1319
|
+
hasSubAgentLogoURL(subAgent) {
|
|
1320
|
+
return !!subAgent?.LogoURL;
|
|
1321
|
+
}
|
|
1261
1322
|
/**
|
|
1262
1323
|
* Creates a new sub-agent
|
|
1263
1324
|
*/
|
|
@@ -1298,33 +1359,29 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1298
1359
|
}
|
|
1299
1360
|
}
|
|
1300
1361
|
/**
|
|
1301
|
-
* Opens the action
|
|
1362
|
+
* Opens the enhanced action gallery for selecting actions
|
|
1302
1363
|
*/
|
|
1303
1364
|
async configureActions() {
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1365
|
+
// Get currently linked action IDs for pre-selection
|
|
1366
|
+
const linkedActionIds = this.agentActions.map(aa => aa.ID);
|
|
1367
|
+
this.actionGalleryService.openForMultiSelection({
|
|
1368
|
+
preSelectedActions: linkedActionIds,
|
|
1369
|
+
showCategories: true,
|
|
1370
|
+
enableQuickTest: true,
|
|
1371
|
+
title: 'Select Actions for Agent',
|
|
1372
|
+
submitButtonText: 'Add Selected Actions'
|
|
1373
|
+
}, this.viewContainerRef).subscribe(async (selectedActions) => {
|
|
1374
|
+
if (selectedActions && selectedActions.length > 0) {
|
|
1375
|
+
// Find newly selected actions (not already linked)
|
|
1376
|
+
const newActions = selectedActions.filter(action => !linkedActionIds.includes(action.ID));
|
|
1377
|
+
// Link each new action to the agent
|
|
1378
|
+
for (const action of newActions) {
|
|
1379
|
+
await this.linkActionToAgent(action);
|
|
1380
|
+
}
|
|
1381
|
+
// Reload the actions list
|
|
1382
|
+
await this.loadRelatedCounts();
|
|
1383
|
+
}
|
|
1316
1384
|
});
|
|
1317
|
-
const componentInstance = dialogRef.content.instance;
|
|
1318
|
-
componentInstance.config = config;
|
|
1319
|
-
const result = await dialogRef.result;
|
|
1320
|
-
if (result && result.entity) {
|
|
1321
|
-
// User selected an existing action
|
|
1322
|
-
await this.linkActionToAgent(result.entity);
|
|
1323
|
-
}
|
|
1324
|
-
else if (result && result.createNew) {
|
|
1325
|
-
// User wants to create a new action
|
|
1326
|
-
await this.createNewAction();
|
|
1327
|
-
}
|
|
1328
1385
|
}
|
|
1329
1386
|
/**
|
|
1330
1387
|
* Gets the status icon for execution runs
|
|
@@ -1651,18 +1708,17 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1651
1708
|
}
|
|
1652
1709
|
}
|
|
1653
1710
|
}
|
|
1654
|
-
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)); }; }
|
|
1655
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 3, vars:
|
|
1711
|
+
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)); }; }
|
|
1712
|
+
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, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent"], [1, "agent-actions"], ["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, "sub-agent-logo", 3, "src", "alt"], [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) {
|
|
1656
1713
|
i0.ɵɵprojectionDef();
|
|
1657
1714
|
i0.ɵɵelementStart(0, "div", 1);
|
|
1658
|
-
i0.ɵɵ
|
|
1715
|
+
i0.ɵɵelement(1, "div", 2);
|
|
1716
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Template, 31, 14, "form", 3);
|
|
1659
1717
|
i0.ɵɵelementEnd();
|
|
1660
1718
|
} if (rf & 2) {
|
|
1661
|
-
i0.ɵɵadvance();
|
|
1719
|
+
i0.ɵɵadvance(2);
|
|
1662
1720
|
i0.ɵɵproperty("ngIf", ctx.record);
|
|
1663
|
-
i0.ɵɵadvance();
|
|
1664
|
-
i0.ɵɵconditional(ctx.showTestHarness ? 2 : -1);
|
|
1665
|
-
} }, 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.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 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}"] }); }
|
|
1721
|
+
} }, 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-icon-wrapper[_ngcontent-%COMP%] img.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.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-icon[_ngcontent-%COMP%] img.sub-agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.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}"] }); }
|
|
1666
1722
|
};
|
|
1667
1723
|
AIAgentFormComponentExtended = __decorate([
|
|
1668
1724
|
RegisterClass(BaseFormComponent, 'AI Agents')
|
|
@@ -1670,9 +1726,9 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
1670
1726
|
export { AIAgentFormComponentExtended };
|
|
1671
1727
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
1672
1728
|
type: Component,
|
|
1673
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\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 <!-- 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 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}"] }]
|
|
1674
|
-
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }], null); })();
|
|
1675
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
1729
|
+
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Compact Header with Agent Overview -->\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n class=\"agent-name-input\">\n </kendo-textbox>\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.ExecutionMode) {\n <span class=\"execution-mode\">\n <i [class]=\"getExecutionModeIcon(record.ExecutionMode)\"></i>\n {{ record.ExecutionMode }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <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.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode) {\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]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode) {\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 @if (hasSubAgentLogoURL(subAgent)) {\n <img [src]=\"subAgent.LogoURL\" [alt]=\"subAgent.Name + ' logo'\" class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(subAgent)\"></i>\n }\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ subAgent.Name || 'Untitled Sub-Agent' }}</div>\n @if (subAgent.Description) {\n <div class=\"item-preview\">{{ subAgent.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (subAgent.Status) {\n <span class=\"status-tag\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ subAgent.Status }}\n </span>\n }\n @if (subAgent.ExecutionMode) {\n <span class=\"meta-tag\">{{ subAgent.ExecutionMode }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <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-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.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-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* 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}"] }]
|
|
1730
|
+
}], () => [{ 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); })();
|
|
1731
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 52 }); })();
|
|
1676
1732
|
export function LoadAIAgentFormComponentExtended() {
|
|
1677
1733
|
// This function is called to ensure the component is loaded and registered
|
|
1678
1734
|
}
|