@memberjunction/ng-core-entity-forms 2.75.0 → 2.77.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 +124 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +109 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +2020 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +32 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +413 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +9 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +84 -0
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +34 -6
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +656 -520
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +223 -221
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +51 -49
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js +5 -3
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +160 -158
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +3 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +49 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +211 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +33 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +265 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +4 -8
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +47 -163
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +71 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +931 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +6 -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 +202 -297
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +30 -25
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +31 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +34 -14
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +80 -0
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +277 -0
- package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +59 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
- package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +31 -4
- package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +16 -6
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +19 -9
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +294 -285
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +183 -110
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +21 -17
|
@@ -4,9 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { Component } from '@angular/core';
|
|
8
|
-
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
-
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
7
|
+
import { Component, ViewContainerRef, ViewChild } from '@angular/core';
|
|
8
|
+
import { RegisterClass, MJGlobal } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent, BaseFormSectionComponent } from '@memberjunction/ng-base-forms';
|
|
10
10
|
import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
|
|
11
11
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
12
12
|
import { AIAgentFormComponent } from '../../generated/Entities/AIAgent/aiagent.form.component';
|
|
@@ -26,9 +26,10 @@ import * as i11 from "@progress/kendo-angular-buttons";
|
|
|
26
26
|
import * as i12 from "@memberjunction/ng-base-forms";
|
|
27
27
|
import * as i13 from "@memberjunction/ng-form-toolbar";
|
|
28
28
|
import * as i14 from "@memberjunction/ng-code-editor";
|
|
29
|
+
const _c0 = ["customSectionContainer"];
|
|
29
30
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
30
31
|
function AIAgentFormComponentExtended_form_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
-
i0.ɵɵelement(0, "img",
|
|
32
|
+
i0.ɵɵelement(0, "img", 11);
|
|
32
33
|
} if (rf & 2) {
|
|
33
34
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
34
35
|
i0.ɵɵproperty("src", ctx_r1.record.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.record.Name + " logo");
|
|
@@ -41,7 +42,7 @@ function AIAgentFormComponentExtended_form_2_Conditional_8_Template(rf, ctx) { i
|
|
|
41
42
|
} }
|
|
42
43
|
function AIAgentFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
43
44
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
44
|
-
i0.ɵɵelementStart(0, "kendo-textbox",
|
|
45
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 29);
|
|
45
46
|
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); });
|
|
46
47
|
i0.ɵɵelementEnd();
|
|
47
48
|
} if (rf & 2) {
|
|
@@ -49,7 +50,7 @@ function AIAgentFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) {
|
|
|
49
50
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
50
51
|
} }
|
|
51
52
|
function AIAgentFormComponentExtended_form_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelementStart(0, "h1",
|
|
53
|
+
i0.ɵɵelementStart(0, "h1", 15);
|
|
53
54
|
i0.ɵɵtext(1);
|
|
54
55
|
i0.ɵɵelementEnd();
|
|
55
56
|
} if (rf & 2) {
|
|
@@ -58,8 +59,8 @@ function AIAgentFormComponentExtended_form_2_Conditional_11_Template(rf, ctx) {
|
|
|
58
59
|
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled AI Agent");
|
|
59
60
|
} }
|
|
60
61
|
function AIAgentFormComponentExtended_form_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
-
i0.ɵɵelementStart(0, "span",
|
|
62
|
-
i0.ɵɵelement(1, "i",
|
|
62
|
+
i0.ɵɵelementStart(0, "span", 30);
|
|
63
|
+
i0.ɵɵelement(1, "i", 31);
|
|
63
64
|
i0.ɵɵtext(2);
|
|
64
65
|
i0.ɵɵelementEnd();
|
|
65
66
|
} if (rf & 2) {
|
|
@@ -69,20 +70,17 @@ function AIAgentFormComponentExtended_form_2_Conditional_13_Template(rf, ctx) {
|
|
|
69
70
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
70
71
|
} }
|
|
71
72
|
function AIAgentFormComponentExtended_form_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
-
i0.ɵɵelementStart(0, "span",
|
|
73
|
-
i0.ɵɵ
|
|
74
|
-
i0.ɵɵtext(2);
|
|
73
|
+
i0.ɵɵelementStart(0, "span", 18);
|
|
74
|
+
i0.ɵɵtext(1);
|
|
75
75
|
i0.ɵɵelementEnd();
|
|
76
76
|
} if (rf & 2) {
|
|
77
77
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
78
78
|
i0.ɵɵadvance();
|
|
79
|
-
i0.ɵɵ
|
|
80
|
-
i0.ɵɵadvance();
|
|
81
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ExecutionMode, " ");
|
|
79
|
+
i0.ɵɵtextInterpolate1(" Agent Type: ", ctx_r1.record.Type, " ");
|
|
82
80
|
} }
|
|
83
81
|
function AIAgentFormComponentExtended_form_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
-
i0.ɵɵelementStart(0, "span",
|
|
85
|
-
i0.ɵɵelement(1, "i",
|
|
82
|
+
i0.ɵɵelementStart(0, "span", 19);
|
|
83
|
+
i0.ɵɵelement(1, "i", 32);
|
|
86
84
|
i0.ɵɵtext(2);
|
|
87
85
|
i0.ɵɵelementEnd();
|
|
88
86
|
} if (rf & 2) {
|
|
@@ -92,9 +90,9 @@ function AIAgentFormComponentExtended_form_2_Conditional_15_Template(rf, ctx) {
|
|
|
92
90
|
} }
|
|
93
91
|
function AIAgentFormComponentExtended_form_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
94
92
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
95
|
-
i0.ɵɵelementStart(0, "button",
|
|
93
|
+
i0.ɵɵelementStart(0, "button", 33);
|
|
96
94
|
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
97
|
-
i0.ɵɵelement(1, "i",
|
|
95
|
+
i0.ɵɵelement(1, "i", 34);
|
|
98
96
|
i0.ɵɵtext(2, " Run ");
|
|
99
97
|
i0.ɵɵelementEnd();
|
|
100
98
|
} if (rf & 2) {
|
|
@@ -102,16 +100,41 @@ function AIAgentFormComponentExtended_form_2_Conditional_17_Template(rf, ctx) {
|
|
|
102
100
|
i0.ɵɵproperty("disabled", ctx_r1.record.Status !== "Active");
|
|
103
101
|
} }
|
|
104
102
|
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
-
i0.ɵɵelement(0, "i",
|
|
103
|
+
i0.ɵɵelement(0, "i", 36);
|
|
106
104
|
i0.ɵɵtext(1);
|
|
107
105
|
} if (rf & 2) {
|
|
108
106
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
109
107
|
i0.ɵɵadvance();
|
|
110
|
-
i0.ɵɵtextInterpolate1("
|
|
108
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.agentType.Name, " Configuration ");
|
|
111
109
|
} }
|
|
112
|
-
function
|
|
110
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
113
111
|
i0.ɵɵelementStart(0, "div", 37);
|
|
114
|
-
i0.ɵɵ
|
|
112
|
+
i0.ɵɵelementContainer(1, null, 1);
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
} if (rf & 2) {
|
|
115
|
+
i0.ɵɵstyleProp("display", "block");
|
|
116
|
+
} }
|
|
117
|
+
function AIAgentFormComponentExtended_form_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
119
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 35);
|
|
120
|
+
i0.ɵɵlistener("stateChange", function AIAgentFormComponentExtended_form_2_Conditional_22_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCustomSectionStateChange($event)); });
|
|
121
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Template, 3, 2, "ng-template", 28);
|
|
122
|
+
i0.ɵɵelementEnd();
|
|
123
|
+
} if (rf & 2) {
|
|
124
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
125
|
+
i0.ɵɵproperty("expanded", ctx_r1.agentType.UIFormSectionExpandedByDefault);
|
|
126
|
+
} }
|
|
127
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelement(0, "i", 38);
|
|
129
|
+
i0.ɵɵtext(1);
|
|
130
|
+
} if (rf & 2) {
|
|
131
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
132
|
+
i0.ɵɵadvance();
|
|
133
|
+
i0.ɵɵtextInterpolate1(" Execution History", ctx_r1.executionHistoryCount > 0 ? " (" + ctx_r1.executionHistoryCount + ")" : "", " ");
|
|
134
|
+
} }
|
|
135
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
137
|
+
i0.ɵɵelement(1, "i", 38);
|
|
115
138
|
i0.ɵɵelementStart(2, "h4");
|
|
116
139
|
i0.ɵɵtext(3, "No Execution History");
|
|
117
140
|
i0.ɵɵelementEnd();
|
|
@@ -119,157 +142,157 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Condit
|
|
|
119
142
|
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
120
143
|
i0.ɵɵelementEnd()();
|
|
121
144
|
} }
|
|
122
|
-
function
|
|
123
|
-
i0.ɵɵelementStart(0, "span",
|
|
124
|
-
i0.ɵɵelement(1, "i",
|
|
145
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
147
|
+
i0.ɵɵelement(1, "i", 60);
|
|
125
148
|
i0.ɵɵtext(2);
|
|
126
149
|
i0.ɵɵelementEnd();
|
|
127
150
|
} if (rf & 2) {
|
|
128
|
-
const
|
|
151
|
+
const execution_r7 = i0.ɵɵnextContext().$implicit;
|
|
129
152
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
130
153
|
i0.ɵɵadvance(2);
|
|
131
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatExecutionTimeFromDates(
|
|
154
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatExecutionTimeFromDates(execution_r7.StartedAt, execution_r7.CompletedAt), " ");
|
|
132
155
|
} }
|
|
133
|
-
function
|
|
134
|
-
i0.ɵɵelementStart(0, "div",
|
|
156
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
i0.ɵɵelementStart(0, "div", 58);
|
|
135
158
|
i0.ɵɵtext(1);
|
|
136
159
|
i0.ɵɵelementEnd();
|
|
137
160
|
} if (rf & 2) {
|
|
138
|
-
const
|
|
161
|
+
const execution_r7 = i0.ɵɵnextContext().$implicit;
|
|
139
162
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
140
163
|
i0.ɵɵadvance();
|
|
141
|
-
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultPreview(
|
|
164
|
+
i0.ɵɵtextInterpolate(ctx_r1.getExecutionResultPreview(execution_r7, true));
|
|
142
165
|
} }
|
|
143
|
-
function
|
|
144
|
-
i0.ɵɵelementStart(0, "div",
|
|
166
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 61)(1, "h5");
|
|
145
168
|
i0.ɵɵtext(2, "Result");
|
|
146
169
|
i0.ɵɵelementEnd();
|
|
147
|
-
i0.ɵɵelement(3, "mj-code-editor",
|
|
170
|
+
i0.ɵɵelement(3, "mj-code-editor", 67);
|
|
148
171
|
i0.ɵɵelementEnd();
|
|
149
172
|
} if (rf & 2) {
|
|
150
|
-
const
|
|
173
|
+
const execution_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
151
174
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
152
175
|
i0.ɵɵadvance(3);
|
|
153
|
-
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(
|
|
176
|
+
i0.ɵɵproperty("value", ctx_r1.getExecutionResultPreview(execution_r7, false))("readonly", true)("lineWrapping", true);
|
|
154
177
|
} }
|
|
155
|
-
function
|
|
156
|
-
i0.ɵɵelementStart(0, "div",
|
|
157
|
-
i0.ɵɵelement(2, "i",
|
|
178
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 62)(1, "h5");
|
|
180
|
+
i0.ɵɵelement(2, "i", 68);
|
|
158
181
|
i0.ɵɵtext(3, " Error");
|
|
159
182
|
i0.ɵɵelementEnd();
|
|
160
|
-
i0.ɵɵelementStart(4, "div",
|
|
183
|
+
i0.ɵɵelementStart(4, "div", 69);
|
|
161
184
|
i0.ɵɵtext(5);
|
|
162
185
|
i0.ɵɵelementEnd()();
|
|
163
186
|
} if (rf & 2) {
|
|
164
|
-
const
|
|
187
|
+
const execution_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
165
188
|
i0.ɵɵadvance(5);
|
|
166
|
-
i0.ɵɵtextInterpolate(
|
|
189
|
+
i0.ɵɵtextInterpolate(execution_r7.ErrorMessage);
|
|
167
190
|
} }
|
|
168
|
-
function
|
|
169
|
-
i0.ɵɵelementStart(0, "div",
|
|
191
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "span", 65);
|
|
170
193
|
i0.ɵɵtext(2, "Completed:");
|
|
171
194
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵelementStart(3, "span",
|
|
195
|
+
i0.ɵɵelementStart(3, "span", 66);
|
|
173
196
|
i0.ɵɵtext(4);
|
|
174
197
|
i0.ɵɵpipe(5, "date");
|
|
175
198
|
i0.ɵɵelementEnd()();
|
|
176
199
|
} if (rf & 2) {
|
|
177
|
-
const
|
|
200
|
+
const execution_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
178
201
|
i0.ɵɵadvance(4);
|
|
179
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1,
|
|
202
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, execution_r7.CompletedAt, "medium"));
|
|
180
203
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "div",
|
|
204
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "span", 65);
|
|
183
206
|
i0.ɵɵtext(2, "Conversation:");
|
|
184
207
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(3, "span",
|
|
208
|
+
i0.ɵɵelementStart(3, "span", 66);
|
|
186
209
|
i0.ɵɵtext(4);
|
|
187
210
|
i0.ɵɵelementEnd()();
|
|
188
211
|
} if (rf & 2) {
|
|
189
|
-
const
|
|
212
|
+
const execution_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
190
213
|
i0.ɵɵadvance(4);
|
|
191
|
-
i0.ɵɵtextInterpolate(
|
|
214
|
+
i0.ɵɵtextInterpolate(execution_r7.ConversationID);
|
|
192
215
|
} }
|
|
193
|
-
function
|
|
194
|
-
i0.ɵɵelementStart(0, "div",
|
|
195
|
-
i0.ɵɵtemplate(1,
|
|
196
|
-
i0.ɵɵelementStart(3, "div",
|
|
216
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
217
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
218
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_1_Template, 4, 3, "div", 61)(2, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_2_Template, 6, 1, "div", 62);
|
|
219
|
+
i0.ɵɵelementStart(3, "div", 63)(4, "div", 64)(5, "span", 65);
|
|
197
220
|
i0.ɵɵtext(6, "Started:");
|
|
198
221
|
i0.ɵɵelementEnd();
|
|
199
|
-
i0.ɵɵelementStart(7, "span",
|
|
222
|
+
i0.ɵɵelementStart(7, "span", 66);
|
|
200
223
|
i0.ɵɵtext(8);
|
|
201
224
|
i0.ɵɵpipe(9, "date");
|
|
202
225
|
i0.ɵɵelementEnd()();
|
|
203
|
-
i0.ɵɵtemplate(10,
|
|
226
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_10_Template, 6, 4, "div", 64)(11, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Conditional_11_Template, 5, 1, "div", 64);
|
|
204
227
|
i0.ɵɵelementEnd()();
|
|
205
228
|
} if (rf & 2) {
|
|
206
|
-
const
|
|
229
|
+
const execution_r7 = i0.ɵɵnextContext().$implicit;
|
|
207
230
|
i0.ɵɵadvance();
|
|
208
|
-
i0.ɵɵconditional(
|
|
231
|
+
i0.ɵɵconditional(execution_r7.Result ? 1 : -1);
|
|
209
232
|
i0.ɵɵadvance();
|
|
210
|
-
i0.ɵɵconditional(
|
|
233
|
+
i0.ɵɵconditional(execution_r7.ErrorMessage ? 2 : -1);
|
|
211
234
|
i0.ɵɵadvance(6);
|
|
212
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5,
|
|
235
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, execution_r7.StartedAt, "medium"));
|
|
213
236
|
i0.ɵɵadvance(2);
|
|
214
|
-
i0.ɵɵconditional(
|
|
237
|
+
i0.ɵɵconditional(execution_r7.CompletedAt ? 10 : -1);
|
|
215
238
|
i0.ɵɵadvance();
|
|
216
|
-
i0.ɵɵconditional(
|
|
239
|
+
i0.ɵɵconditional(execution_r7.ConversationID ? 11 : -1);
|
|
217
240
|
} }
|
|
218
|
-
function
|
|
219
|
-
const
|
|
220
|
-
i0.ɵɵelementStart(0, "div",
|
|
241
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
243
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div")(2, "div", 47);
|
|
221
244
|
i0.ɵɵelement(3, "i");
|
|
222
245
|
i0.ɵɵelementEnd();
|
|
223
|
-
i0.ɵɵelementStart(4, "div",
|
|
224
|
-
i0.ɵɵlistener("click", function
|
|
225
|
-
i0.ɵɵelementStart(6, "div")(7, "div",
|
|
226
|
-
i0.ɵɵelement(8, "i",
|
|
246
|
+
i0.ɵɵelementStart(4, "div", 48)(5, "div", 49);
|
|
247
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template_div_click_5_listener() { const execution_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.toggleExecutionExpanded(execution_r7.ID)); });
|
|
248
|
+
i0.ɵɵelementStart(6, "div")(7, "div", 50);
|
|
249
|
+
i0.ɵɵelement(8, "i", 51);
|
|
227
250
|
i0.ɵɵtext(9);
|
|
228
|
-
i0.ɵɵelementStart(10, "span",
|
|
251
|
+
i0.ɵɵelementStart(10, "span", 52);
|
|
229
252
|
i0.ɵɵtext(11);
|
|
230
253
|
i0.ɵɵpipe(12, "date");
|
|
231
254
|
i0.ɵɵelementEnd()();
|
|
232
|
-
i0.ɵɵelementStart(13, "div",
|
|
255
|
+
i0.ɵɵelementStart(13, "div", 53)(14, "span", 30);
|
|
233
256
|
i0.ɵɵtext(15);
|
|
234
257
|
i0.ɵɵelementEnd();
|
|
235
|
-
i0.ɵɵtemplate(16,
|
|
236
|
-
i0.ɵɵelementStart(17, "div",
|
|
237
|
-
i0.ɵɵlistener("click", function
|
|
238
|
-
i0.ɵɵelement(19, "i",
|
|
258
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_16_Template, 3, 1, "span", 54);
|
|
259
|
+
i0.ɵɵelementStart(17, "div", 55)(18, "button", 56);
|
|
260
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template_button_click_18_listener($event) { const execution_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.openExecutionRecord(execution_r7.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
261
|
+
i0.ɵɵelement(19, "i", 57);
|
|
239
262
|
i0.ɵɵelementEnd()()();
|
|
240
|
-
i0.ɵɵtemplate(20,
|
|
263
|
+
i0.ɵɵtemplate(20, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_20_Template, 2, 1, "div", 58);
|
|
241
264
|
i0.ɵɵelementEnd()();
|
|
242
|
-
i0.ɵɵtemplate(21,
|
|
265
|
+
i0.ɵɵtemplate(21, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Conditional_21_Template, 12, 8, "div", 59);
|
|
243
266
|
i0.ɵɵelementEnd()()();
|
|
244
267
|
} if (rf & 2) {
|
|
245
|
-
const
|
|
268
|
+
const execution_r7 = ctx.$implicit;
|
|
246
269
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
247
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
270
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r7.ID]);
|
|
248
271
|
i0.ɵɵadvance(2);
|
|
249
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(
|
|
272
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r7.Status));
|
|
250
273
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(
|
|
274
|
+
i0.ɵɵclassMap(ctx_r1.getExecutionStatusIcon(execution_r7.Status));
|
|
252
275
|
i0.ɵɵadvance(5);
|
|
253
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[
|
|
276
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedExecutions[execution_r7.ID]);
|
|
254
277
|
i0.ɵɵadvance();
|
|
255
|
-
i0.ɵɵtextInterpolate1(" Execution #",
|
|
278
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r7.ID.substring(0, 8), " ");
|
|
256
279
|
i0.ɵɵadvance(2);
|
|
257
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16,
|
|
280
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(12, 16, execution_r7.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
258
281
|
i0.ɵɵadvance(3);
|
|
259
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(
|
|
282
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getExecutionStatusColor(execution_r7.Status));
|
|
260
283
|
i0.ɵɵadvance();
|
|
261
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
284
|
+
i0.ɵɵtextInterpolate1(" ", execution_r7.Status || "Unknown", " ");
|
|
262
285
|
i0.ɵɵadvance();
|
|
263
|
-
i0.ɵɵconditional(
|
|
286
|
+
i0.ɵɵconditional(execution_r7.CompletedAt ? 16 : -1);
|
|
264
287
|
i0.ɵɵadvance(4);
|
|
265
|
-
i0.ɵɵconditional(
|
|
288
|
+
i0.ɵɵconditional(execution_r7.Result && !ctx_r1.expandedExecutions[execution_r7.ID] ? 20 : -1);
|
|
266
289
|
i0.ɵɵadvance();
|
|
267
|
-
i0.ɵɵconditional(ctx_r1.expandedExecutions[
|
|
290
|
+
i0.ɵɵconditional(ctx_r1.expandedExecutions[execution_r7.ID] ? 21 : -1);
|
|
268
291
|
} }
|
|
269
|
-
function
|
|
270
|
-
const
|
|
271
|
-
i0.ɵɵelementStart(0, "div",
|
|
272
|
-
i0.ɵɵlistener("click", function
|
|
292
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
293
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
294
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
295
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agent Runs", "")); });
|
|
273
296
|
i0.ɵɵelementStart(1, "span");
|
|
274
297
|
i0.ɵɵtext(2);
|
|
275
298
|
i0.ɵɵelementEnd()();
|
|
@@ -278,10 +301,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Condit
|
|
|
278
301
|
i0.ɵɵadvance(2);
|
|
279
302
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.executionHistoryCount, " executions...");
|
|
280
303
|
} }
|
|
281
|
-
function
|
|
282
|
-
i0.ɵɵelementStart(0, "div",
|
|
283
|
-
i0.ɵɵrepeaterCreate(1,
|
|
284
|
-
i0.ɵɵtemplate(3,
|
|
304
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
306
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_For_2_Template, 22, 19, "div", 44, _forTrack0);
|
|
307
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
285
308
|
i0.ɵɵelementEnd();
|
|
286
309
|
} if (rf & 2) {
|
|
287
310
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -290,134 +313,134 @@ function AIAgentFormComponentExtended_form_2_Conditional_22_ng_template_2_Condit
|
|
|
290
313
|
i0.ɵɵadvance(2);
|
|
291
314
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount > ctx_r1.recentExecutions.length ? 3 : -1);
|
|
292
315
|
} }
|
|
293
|
-
function
|
|
294
|
-
i0.ɵɵelementStart(0, "div",
|
|
316
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
317
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "div", 40)(2, "div", 41);
|
|
295
318
|
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
296
319
|
i0.ɵɵelementEnd()();
|
|
297
|
-
i0.ɵɵtemplate(4,
|
|
320
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_4_Template, 6, 0, "div", 42)(5, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Conditional_5_Template, 4, 1, "div", 43);
|
|
298
321
|
i0.ɵɵelementEnd();
|
|
299
322
|
} if (rf & 2) {
|
|
300
323
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
301
324
|
i0.ɵɵadvance(4);
|
|
302
325
|
i0.ɵɵconditional(ctx_r1.executionHistoryCount === 0 ? 4 : 5);
|
|
303
326
|
} }
|
|
304
|
-
function
|
|
305
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
306
|
-
i0.ɵɵtemplate(1,
|
|
327
|
+
function AIAgentFormComponentExtended_form_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
328
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
329
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Template, 6, 1, "ng-template", 28);
|
|
307
330
|
i0.ɵɵelementEnd();
|
|
308
331
|
} if (rf & 2) {
|
|
309
332
|
i0.ɵɵproperty("expanded", false);
|
|
310
333
|
} }
|
|
311
|
-
function
|
|
312
|
-
i0.ɵɵelement(0, "i",
|
|
334
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
+
i0.ɵɵelement(0, "i", 71);
|
|
313
336
|
i0.ɵɵtext(1);
|
|
314
337
|
} if (rf & 2) {
|
|
315
338
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
339
|
i0.ɵɵadvance();
|
|
317
340
|
i0.ɵɵtextInterpolate1(" Actions", ctx_r1.actionCount > 0 ? " (" + ctx_r1.actionCount + ")" : "", " ");
|
|
318
341
|
} }
|
|
319
|
-
function
|
|
320
|
-
const
|
|
321
|
-
i0.ɵɵelementStart(0, "button",
|
|
322
|
-
i0.ɵɵlistener("click", function
|
|
323
|
-
i0.ɵɵelement(1, "i",
|
|
342
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
344
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
345
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
346
|
+
i0.ɵɵelement(1, "i", 77);
|
|
324
347
|
i0.ɵɵtext(2, " Add Action ");
|
|
325
348
|
i0.ɵɵelementEnd();
|
|
326
349
|
} }
|
|
327
|
-
function
|
|
328
|
-
const
|
|
329
|
-
i0.ɵɵelementStart(0, "button",
|
|
330
|
-
i0.ɵɵlistener("click", function
|
|
331
|
-
i0.ɵɵelement(1, "i",
|
|
350
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
351
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
352
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
353
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.configureActions()); });
|
|
354
|
+
i0.ɵɵelement(1, "i", 77);
|
|
332
355
|
i0.ɵɵtext(2, " Configure First Action ");
|
|
333
356
|
i0.ɵɵelementEnd();
|
|
334
357
|
} }
|
|
335
|
-
function
|
|
336
|
-
i0.ɵɵelementStart(0, "div",
|
|
337
|
-
i0.ɵɵelement(1, "i",
|
|
358
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
359
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
360
|
+
i0.ɵɵelement(1, "i", 71);
|
|
338
361
|
i0.ɵɵelementStart(2, "h4");
|
|
339
362
|
i0.ɵɵtext(3, "No Actions Configured");
|
|
340
363
|
i0.ɵɵelementEnd();
|
|
341
364
|
i0.ɵɵelementStart(4, "p");
|
|
342
365
|
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
343
366
|
i0.ɵɵelementEnd();
|
|
344
|
-
i0.ɵɵtemplate(6,
|
|
367
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "button", 78);
|
|
345
368
|
i0.ɵɵelementEnd();
|
|
346
369
|
} if (rf & 2) {
|
|
347
370
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
348
371
|
i0.ɵɵadvance(6);
|
|
349
372
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateActions ? 6 : -1);
|
|
350
373
|
} }
|
|
351
|
-
function
|
|
352
|
-
i0.ɵɵelementStart(0, "div",
|
|
374
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
375
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
353
376
|
i0.ɵɵtext(1);
|
|
354
377
|
i0.ɵɵelementEnd();
|
|
355
378
|
} if (rf & 2) {
|
|
356
|
-
const
|
|
379
|
+
const action_r12 = i0.ɵɵnextContext().$implicit;
|
|
357
380
|
i0.ɵɵadvance();
|
|
358
|
-
i0.ɵɵtextInterpolate(
|
|
381
|
+
i0.ɵɵtextInterpolate(action_r12.Description);
|
|
359
382
|
} }
|
|
360
|
-
function
|
|
361
|
-
i0.ɵɵelementStart(0, "span",
|
|
383
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
384
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
362
385
|
i0.ɵɵtext(1);
|
|
363
386
|
i0.ɵɵelementEnd();
|
|
364
387
|
} if (rf & 2) {
|
|
365
|
-
const
|
|
388
|
+
const action_r12 = i0.ɵɵnextContext().$implicit;
|
|
366
389
|
i0.ɵɵadvance();
|
|
367
|
-
i0.ɵɵtextInterpolate(
|
|
390
|
+
i0.ɵɵtextInterpolate(action_r12.Type);
|
|
368
391
|
} }
|
|
369
|
-
function
|
|
370
|
-
const
|
|
371
|
-
i0.ɵɵelementStart(0, "button",
|
|
372
|
-
i0.ɵɵlistener("click", function
|
|
373
|
-
i0.ɵɵelement(1, "i",
|
|
392
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
394
|
+
i0.ɵɵelementStart(0, "button", 93);
|
|
395
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r13); const action_r12 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeAction(action_r12, $event)); });
|
|
396
|
+
i0.ɵɵelement(1, "i", 94);
|
|
374
397
|
i0.ɵɵelementEnd();
|
|
375
398
|
} }
|
|
376
|
-
function
|
|
377
|
-
const
|
|
378
|
-
i0.ɵɵelementStart(0, "div",
|
|
379
|
-
i0.ɵɵlistener("click", function
|
|
380
|
-
i0.ɵɵelementStart(1, "div",
|
|
399
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
401
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
402
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const action_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("Actions", action_r12.ID)); });
|
|
403
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
381
404
|
i0.ɵɵelement(2, "i");
|
|
382
405
|
i0.ɵɵelementEnd();
|
|
383
|
-
i0.ɵɵelementStart(3, "div",
|
|
406
|
+
i0.ɵɵelementStart(3, "div", 83)(4, "div", 84);
|
|
384
407
|
i0.ɵɵtext(5);
|
|
385
408
|
i0.ɵɵelementEnd();
|
|
386
|
-
i0.ɵɵtemplate(6,
|
|
387
|
-
i0.ɵɵelementStart(7, "div",
|
|
388
|
-
i0.ɵɵtemplate(8,
|
|
389
|
-
i0.ɵɵelementStart(9, "span",
|
|
390
|
-
i0.ɵɵelement(10, "i",
|
|
409
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 1, "div", 85);
|
|
410
|
+
i0.ɵɵelementStart(7, "div", 86);
|
|
411
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 87);
|
|
412
|
+
i0.ɵɵelementStart(9, "span", 88);
|
|
413
|
+
i0.ɵɵelement(10, "i", 89);
|
|
391
414
|
i0.ɵɵtext(11);
|
|
392
415
|
i0.ɵɵelementEnd()()();
|
|
393
|
-
i0.ɵɵelementStart(12, "div",
|
|
394
|
-
i0.ɵɵtemplate(13,
|
|
395
|
-
i0.ɵɵelement(14, "i",
|
|
416
|
+
i0.ɵɵelementStart(12, "div", 90);
|
|
417
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 0, "button", 91);
|
|
418
|
+
i0.ɵɵelement(14, "i", 92);
|
|
396
419
|
i0.ɵɵelementEnd()();
|
|
397
420
|
} if (rf & 2) {
|
|
398
|
-
const
|
|
421
|
+
const action_r12 = ctx.$implicit;
|
|
399
422
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
400
423
|
i0.ɵɵadvance(2);
|
|
401
|
-
i0.ɵɵclassMap(ctx_r1.getActionIcon(
|
|
424
|
+
i0.ɵɵclassMap(ctx_r1.getActionIcon(action_r12));
|
|
402
425
|
i0.ɵɵadvance(3);
|
|
403
|
-
i0.ɵɵtextInterpolate(
|
|
426
|
+
i0.ɵɵtextInterpolate(action_r12.Name || "Untitled Action");
|
|
404
427
|
i0.ɵɵadvance();
|
|
405
|
-
i0.ɵɵconditional(
|
|
428
|
+
i0.ɵɵconditional(action_r12.Description ? 6 : -1);
|
|
406
429
|
i0.ɵɵadvance(2);
|
|
407
|
-
i0.ɵɵconditional(
|
|
430
|
+
i0.ɵɵconditional(action_r12.Type ? 8 : -1);
|
|
408
431
|
i0.ɵɵadvance();
|
|
409
|
-
i0.ɵɵclassProp("active",
|
|
432
|
+
i0.ɵɵclassProp("active", action_r12.Status === "Active")("inactive", action_r12.Status !== "Active");
|
|
410
433
|
i0.ɵɵadvance();
|
|
411
|
-
i0.ɵɵclassProp("fa-check-circle",
|
|
434
|
+
i0.ɵɵclassProp("fa-check-circle", action_r12.Status === "Active")("fa-times-circle", action_r12.Status !== "Active");
|
|
412
435
|
i0.ɵɵadvance();
|
|
413
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
436
|
+
i0.ɵɵtextInterpolate1(" ", action_r12.Status, " ");
|
|
414
437
|
i0.ɵɵadvance(2);
|
|
415
438
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteActions ? 13 : -1);
|
|
416
439
|
} }
|
|
417
|
-
function
|
|
418
|
-
const
|
|
419
|
-
i0.ɵɵelementStart(0, "div",
|
|
420
|
-
i0.ɵɵlistener("click", function
|
|
440
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
441
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
442
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
443
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Actions", "")); });
|
|
421
444
|
i0.ɵɵelementStart(1, "span");
|
|
422
445
|
i0.ɵɵtext(2);
|
|
423
446
|
i0.ɵɵelementEnd()();
|
|
@@ -426,10 +449,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Condit
|
|
|
426
449
|
i0.ɵɵadvance(2);
|
|
427
450
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.actionCount, " actions...");
|
|
428
451
|
} }
|
|
429
|
-
function
|
|
430
|
-
i0.ɵɵelementStart(0, "div",
|
|
431
|
-
i0.ɵɵrepeaterCreate(1,
|
|
432
|
-
i0.ɵɵtemplate(3,
|
|
452
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
453
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
454
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_For_2_Template, 15, 15, "div", 80, _forTrack0);
|
|
455
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
433
456
|
i0.ɵɵelementEnd();
|
|
434
457
|
} if (rf & 2) {
|
|
435
458
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -438,11 +461,11 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Condit
|
|
|
438
461
|
i0.ɵɵadvance(2);
|
|
439
462
|
i0.ɵɵconditional(ctx_r1.actionCount > ctx_r1.agentActions.length ? 3 : -1);
|
|
440
463
|
} }
|
|
441
|
-
function
|
|
442
|
-
i0.ɵɵelementStart(0, "div",
|
|
443
|
-
i0.ɵɵtemplate(3,
|
|
464
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 73);
|
|
466
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_3_Template, 3, 0, "button", 74);
|
|
444
467
|
i0.ɵɵelementEnd()();
|
|
445
|
-
i0.ɵɵtemplate(4,
|
|
468
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_4_Template, 7, 1, "div", 42)(5, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Conditional_5_Template, 4, 1, "div", 75);
|
|
446
469
|
i0.ɵɵelementEnd();
|
|
447
470
|
} if (rf & 2) {
|
|
448
471
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -451,159 +474,159 @@ function AIAgentFormComponentExtended_form_2_Conditional_23_ng_template_2_Templa
|
|
|
451
474
|
i0.ɵɵadvance();
|
|
452
475
|
i0.ɵɵconditional(ctx_r1.actionCount === 0 ? 4 : 5);
|
|
453
476
|
} }
|
|
454
|
-
function
|
|
455
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
456
|
-
i0.ɵɵtemplate(1,
|
|
477
|
+
function AIAgentFormComponentExtended_form_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
478
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
479
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Template, 6, 2, "ng-template", 28);
|
|
457
480
|
i0.ɵɵelementEnd();
|
|
458
481
|
} if (rf & 2) {
|
|
459
482
|
i0.ɵɵproperty("expanded", false);
|
|
460
483
|
} }
|
|
461
|
-
function
|
|
462
|
-
i0.ɵɵelement(0, "i",
|
|
484
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
485
|
+
i0.ɵɵelement(0, "i", 32);
|
|
463
486
|
i0.ɵɵtext(1);
|
|
464
487
|
} if (rf & 2) {
|
|
465
488
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
466
489
|
i0.ɵɵadvance();
|
|
467
490
|
i0.ɵɵtextInterpolate1(" Sub-Agents", ctx_r1.subAgentCount > 0 ? " (" + ctx_r1.subAgentCount + ")" : "", " ");
|
|
468
491
|
} }
|
|
469
|
-
function
|
|
470
|
-
const
|
|
471
|
-
i0.ɵɵelementStart(0, "button",
|
|
472
|
-
i0.ɵɵlistener("click", function
|
|
473
|
-
i0.ɵɵelement(1, "i",
|
|
492
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
493
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
494
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
495
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addSubAgents()); });
|
|
496
|
+
i0.ɵɵelement(1, "i", 77);
|
|
474
497
|
i0.ɵɵtext(2, " Add Subagent ");
|
|
475
498
|
i0.ɵɵelementEnd();
|
|
476
|
-
i0.ɵɵelementStart(3, "button",
|
|
477
|
-
i0.ɵɵlistener("click", function
|
|
478
|
-
i0.ɵɵelement(4, "i",
|
|
499
|
+
i0.ɵɵelementStart(3, "button", 95);
|
|
500
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
501
|
+
i0.ɵɵelement(4, "i", 77);
|
|
479
502
|
i0.ɵɵtext(5, " Create Sub-Agent ");
|
|
480
503
|
i0.ɵɵelementEnd();
|
|
481
504
|
} }
|
|
482
|
-
function
|
|
483
|
-
const
|
|
484
|
-
i0.ɵɵelementStart(0, "button",
|
|
485
|
-
i0.ɵɵlistener("click", function
|
|
486
|
-
i0.ɵɵelement(1, "i",
|
|
505
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
507
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
508
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addSubAgents()); });
|
|
509
|
+
i0.ɵɵelement(1, "i", 77);
|
|
487
510
|
i0.ɵɵtext(2, " Add Subagent ");
|
|
488
511
|
i0.ɵɵelementEnd();
|
|
489
|
-
i0.ɵɵelementStart(3, "button",
|
|
490
|
-
i0.ɵɵlistener("click", function
|
|
491
|
-
i0.ɵɵelement(4, "i",
|
|
512
|
+
i0.ɵɵelementStart(3, "button", 96);
|
|
513
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.createSubAgent()); });
|
|
514
|
+
i0.ɵɵelement(4, "i", 77);
|
|
492
515
|
i0.ɵɵtext(5, " Create First Sub-Agent ");
|
|
493
516
|
i0.ɵɵelementEnd();
|
|
494
517
|
} }
|
|
495
|
-
function
|
|
496
|
-
i0.ɵɵelementStart(0, "div",
|
|
497
|
-
i0.ɵɵelement(1, "i",
|
|
518
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
519
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
520
|
+
i0.ɵɵelement(1, "i", 32);
|
|
498
521
|
i0.ɵɵelementStart(2, "h4");
|
|
499
522
|
i0.ɵɵtext(3, "No Sub-Agents");
|
|
500
523
|
i0.ɵɵelementEnd();
|
|
501
524
|
i0.ɵɵelementStart(4, "p");
|
|
502
525
|
i0.ɵɵtext(5, "Create sub-agents to build a hierarchical structure for complex workflows.");
|
|
503
526
|
i0.ɵɵelementEnd();
|
|
504
|
-
i0.ɵɵtemplate(6,
|
|
527
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template, 6, 0);
|
|
505
528
|
i0.ɵɵelementEnd();
|
|
506
529
|
} if (rf & 2) {
|
|
507
530
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
508
531
|
i0.ɵɵadvance(6);
|
|
509
532
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 6 : -1);
|
|
510
533
|
} }
|
|
511
|
-
function
|
|
512
|
-
i0.ɵɵelement(0, "img",
|
|
534
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
+
i0.ɵɵelement(0, "img", 99);
|
|
513
536
|
} if (rf & 2) {
|
|
514
|
-
const
|
|
515
|
-
i0.ɵɵproperty("src",
|
|
537
|
+
const subAgent_r18 = i0.ɵɵnextContext().$implicit;
|
|
538
|
+
i0.ɵɵproperty("src", subAgent_r18.LogoURL, i0.ɵɵsanitizeUrl)("alt", subAgent_r18.Name + " logo");
|
|
516
539
|
} }
|
|
517
|
-
function
|
|
540
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
518
541
|
i0.ɵɵelement(0, "i");
|
|
519
542
|
} if (rf & 2) {
|
|
520
|
-
const
|
|
543
|
+
const subAgent_r18 = i0.ɵɵnextContext().$implicit;
|
|
521
544
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
522
|
-
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(
|
|
545
|
+
i0.ɵɵclassMap(ctx_r1.getSubAgentIcon(subAgent_r18));
|
|
523
546
|
} }
|
|
524
|
-
function
|
|
525
|
-
i0.ɵɵelementStart(0, "div",
|
|
547
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
548
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
526
549
|
i0.ɵɵtext(1);
|
|
527
550
|
i0.ɵɵelementEnd();
|
|
528
551
|
} if (rf & 2) {
|
|
529
|
-
const
|
|
552
|
+
const subAgent_r18 = i0.ɵɵnextContext().$implicit;
|
|
530
553
|
i0.ɵɵadvance();
|
|
531
|
-
i0.ɵɵtextInterpolate(
|
|
554
|
+
i0.ɵɵtextInterpolate(subAgent_r18.Description);
|
|
532
555
|
} }
|
|
533
|
-
function
|
|
534
|
-
i0.ɵɵelementStart(0, "span",
|
|
556
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
557
|
+
i0.ɵɵelementStart(0, "span", 88);
|
|
535
558
|
i0.ɵɵtext(1);
|
|
536
559
|
i0.ɵɵelementEnd();
|
|
537
560
|
} if (rf & 2) {
|
|
538
|
-
const
|
|
561
|
+
const subAgent_r18 = i0.ɵɵnextContext().$implicit;
|
|
539
562
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
540
563
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusBadgeColor());
|
|
541
564
|
i0.ɵɵadvance();
|
|
542
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
565
|
+
i0.ɵɵtextInterpolate1(" ", subAgent_r18.Status, " ");
|
|
543
566
|
} }
|
|
544
|
-
function
|
|
545
|
-
i0.ɵɵelementStart(0, "span",
|
|
567
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
568
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
546
569
|
i0.ɵɵtext(1);
|
|
547
570
|
i0.ɵɵelementEnd();
|
|
548
571
|
} if (rf & 2) {
|
|
549
|
-
const
|
|
572
|
+
const subAgent_r18 = i0.ɵɵnextContext().$implicit;
|
|
550
573
|
i0.ɵɵadvance();
|
|
551
|
-
i0.ɵɵtextInterpolate(
|
|
574
|
+
i0.ɵɵtextInterpolate(subAgent_r18.ExecutionMode);
|
|
552
575
|
} }
|
|
553
|
-
function
|
|
554
|
-
const
|
|
555
|
-
i0.ɵɵelementStart(0, "button",
|
|
556
|
-
i0.ɵɵlistener("click", function
|
|
557
|
-
i0.ɵɵelement(1, "i",
|
|
576
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
577
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
578
|
+
i0.ɵɵelementStart(0, "button", 103);
|
|
579
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r19); const subAgent_r18 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openSubAgentAdvancedSettings(subAgent_r18, $event)); });
|
|
580
|
+
i0.ɵɵelement(1, "i", 104);
|
|
558
581
|
i0.ɵɵelementEnd();
|
|
559
582
|
} }
|
|
560
|
-
function
|
|
561
|
-
const
|
|
562
|
-
i0.ɵɵelementStart(0, "button",
|
|
563
|
-
i0.ɵɵlistener("click", function
|
|
564
|
-
i0.ɵɵelement(1, "i",
|
|
583
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
584
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
585
|
+
i0.ɵɵelementStart(0, "button", 105);
|
|
586
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r20); const subAgent_r18 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removeSubAgent(subAgent_r18, $event)); });
|
|
587
|
+
i0.ɵɵelement(1, "i", 94);
|
|
565
588
|
i0.ɵɵelementEnd();
|
|
566
589
|
} }
|
|
567
|
-
function
|
|
568
|
-
const
|
|
569
|
-
i0.ɵɵelementStart(0, "div",
|
|
570
|
-
i0.ɵɵlistener("click", function
|
|
571
|
-
i0.ɵɵelementStart(1, "div",
|
|
572
|
-
i0.ɵɵtemplate(2,
|
|
590
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
591
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
592
|
+
i0.ɵɵelementStart(0, "div", 98);
|
|
593
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const subAgent_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", subAgent_r18.ID)); });
|
|
594
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
595
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_2_Template, 1, 2, "img", 99)(3, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_3_Template, 1, 2, "i", 12);
|
|
573
596
|
i0.ɵɵelementEnd();
|
|
574
|
-
i0.ɵɵelementStart(4, "div",
|
|
597
|
+
i0.ɵɵelementStart(4, "div", 83)(5, "div", 84);
|
|
575
598
|
i0.ɵɵtext(6);
|
|
576
599
|
i0.ɵɵelementEnd();
|
|
577
|
-
i0.ɵɵtemplate(7,
|
|
578
|
-
i0.ɵɵelementStart(8, "div",
|
|
579
|
-
i0.ɵɵtemplate(9,
|
|
600
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_7_Template, 2, 1, "div", 85);
|
|
601
|
+
i0.ɵɵelementStart(8, "div", 86);
|
|
602
|
+
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_9_Template, 2, 3, "span", 100)(10, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_10_Template, 2, 1, "span", 87);
|
|
580
603
|
i0.ɵɵelementEnd()();
|
|
581
|
-
i0.ɵɵelementStart(11, "div",
|
|
582
|
-
i0.ɵɵtemplate(12,
|
|
583
|
-
i0.ɵɵelement(14, "i",
|
|
604
|
+
i0.ɵɵelementStart(11, "div", 90);
|
|
605
|
+
i0.ɵɵtemplate(12, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_12_Template, 2, 0, "button", 101)(13, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_13_Template, 2, 0, "button", 102);
|
|
606
|
+
i0.ɵɵelement(14, "i", 92);
|
|
584
607
|
i0.ɵɵelementEnd()();
|
|
585
608
|
} if (rf & 2) {
|
|
586
|
-
const
|
|
609
|
+
const subAgent_r18 = ctx.$implicit;
|
|
587
610
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
588
611
|
i0.ɵɵadvance(2);
|
|
589
|
-
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(
|
|
612
|
+
i0.ɵɵconditional(ctx_r1.hasSubAgentLogoURL(subAgent_r18) ? 2 : 3);
|
|
590
613
|
i0.ɵɵadvance(4);
|
|
591
|
-
i0.ɵɵtextInterpolate(
|
|
614
|
+
i0.ɵɵtextInterpolate(subAgent_r18.Name || "Untitled Sub-Agent");
|
|
592
615
|
i0.ɵɵadvance();
|
|
593
|
-
i0.ɵɵconditional(
|
|
616
|
+
i0.ɵɵconditional(subAgent_r18.Description ? 7 : -1);
|
|
594
617
|
i0.ɵɵadvance(2);
|
|
595
|
-
i0.ɵɵconditional(
|
|
618
|
+
i0.ɵɵconditional(subAgent_r18.Status ? 9 : -1);
|
|
596
619
|
i0.ɵɵadvance();
|
|
597
|
-
i0.ɵɵconditional(
|
|
620
|
+
i0.ɵɵconditional(subAgent_r18.ExecutionMode ? 10 : -1);
|
|
598
621
|
i0.ɵɵadvance(2);
|
|
599
622
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateSubAgents ? 12 : -1);
|
|
600
623
|
i0.ɵɵadvance();
|
|
601
624
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeleteSubAgents ? 13 : -1);
|
|
602
625
|
} }
|
|
603
|
-
function
|
|
604
|
-
const
|
|
605
|
-
i0.ɵɵelementStart(0, "div",
|
|
606
|
-
i0.ɵɵlistener("click", function
|
|
626
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
627
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
628
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
629
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agents", "")); });
|
|
607
630
|
i0.ɵɵelementStart(1, "span");
|
|
608
631
|
i0.ɵɵtext(2);
|
|
609
632
|
i0.ɵɵelementEnd()();
|
|
@@ -612,10 +635,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Condit
|
|
|
612
635
|
i0.ɵɵadvance(2);
|
|
613
636
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.subAgentCount, " sub-agents...");
|
|
614
637
|
} }
|
|
615
|
-
function
|
|
616
|
-
i0.ɵɵelementStart(0, "div",
|
|
617
|
-
i0.ɵɵrepeaterCreate(1,
|
|
618
|
-
i0.ɵɵtemplate(3,
|
|
638
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
639
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
640
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_For_2_Template, 15, 7, "div", 97, _forTrack0);
|
|
641
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
619
642
|
i0.ɵɵelementEnd();
|
|
620
643
|
} if (rf & 2) {
|
|
621
644
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -624,14 +647,14 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Condit
|
|
|
624
647
|
i0.ɵɵadvance(2);
|
|
625
648
|
i0.ɵɵconditional(ctx_r1.subAgentCount > ctx_r1.subAgents.length ? 3 : -1);
|
|
626
649
|
} }
|
|
627
|
-
function
|
|
628
|
-
i0.ɵɵelementStart(0, "div",
|
|
650
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
651
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
629
652
|
i0.ɵɵtext(3, " Manage hierarchical relationships with child agents that work under this agent. ");
|
|
630
653
|
i0.ɵɵelementEnd();
|
|
631
|
-
i0.ɵɵelementStart(4, "div",
|
|
632
|
-
i0.ɵɵtemplate(5,
|
|
654
|
+
i0.ɵɵelementStart(4, "div", 73);
|
|
655
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_5_Template, 6, 0);
|
|
633
656
|
i0.ɵɵelementEnd()();
|
|
634
|
-
i0.ɵɵtemplate(6,
|
|
657
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_6_Template, 7, 1, "div", 42)(7, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Conditional_7_Template, 4, 1, "div", 75);
|
|
635
658
|
i0.ɵɵelementEnd();
|
|
636
659
|
} if (rf & 2) {
|
|
637
660
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -640,33 +663,33 @@ function AIAgentFormComponentExtended_form_2_Conditional_24_ng_template_2_Templa
|
|
|
640
663
|
i0.ɵɵadvance();
|
|
641
664
|
i0.ɵɵconditional(ctx_r1.subAgentCount === 0 ? 6 : 7);
|
|
642
665
|
} }
|
|
643
|
-
function
|
|
644
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
645
|
-
i0.ɵɵtemplate(1,
|
|
666
|
+
function AIAgentFormComponentExtended_form_2_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
667
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
668
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Template, 8, 2, "ng-template", 28);
|
|
646
669
|
i0.ɵɵelementEnd();
|
|
647
670
|
} if (rf & 2) {
|
|
648
671
|
i0.ɵɵproperty("expanded", false);
|
|
649
672
|
} }
|
|
650
|
-
function
|
|
651
|
-
i0.ɵɵelement(0, "i",
|
|
673
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
674
|
+
i0.ɵɵelement(0, "i", 106);
|
|
652
675
|
i0.ɵɵtext(1);
|
|
653
676
|
} if (rf & 2) {
|
|
654
677
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
655
678
|
i0.ɵɵadvance();
|
|
656
679
|
i0.ɵɵtextInterpolate1(" Prompts", ctx_r1.promptCount > 0 ? " (" + ctx_r1.promptCount + ")" : "", " ");
|
|
657
680
|
} }
|
|
658
|
-
function
|
|
659
|
-
const
|
|
660
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
661
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
681
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
682
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
683
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 113);
|
|
684
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ModelSelectionMode, $event) || (ctx_r1.record.ModelSelectionMode = $event); return i0.ɵɵresetView($event); });
|
|
662
685
|
i0.ɵɵelementEnd();
|
|
663
686
|
} if (rf & 2) {
|
|
664
687
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
665
688
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.ModelSelectionMode);
|
|
666
689
|
i0.ɵɵproperty("data", ctx_r1.modelSelectionModes)("valuePrimitive", true);
|
|
667
690
|
} }
|
|
668
|
-
function
|
|
669
|
-
i0.ɵɵelementStart(0, "span",
|
|
691
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
692
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
670
693
|
i0.ɵɵtext(1);
|
|
671
694
|
i0.ɵɵelementEnd();
|
|
672
695
|
} if (rf & 2) {
|
|
@@ -674,106 +697,106 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
674
697
|
i0.ɵɵadvance();
|
|
675
698
|
i0.ɵɵtextInterpolate(ctx_r1.record.ModelSelectionMode || "Agent Type");
|
|
676
699
|
} }
|
|
677
|
-
function
|
|
678
|
-
const
|
|
679
|
-
i0.ɵɵelementStart(0, "button",
|
|
680
|
-
i0.ɵɵlistener("click", function
|
|
681
|
-
i0.ɵɵelement(1, "i",
|
|
700
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
701
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
702
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
703
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
704
|
+
i0.ɵɵelement(1, "i", 77);
|
|
682
705
|
i0.ɵɵtext(2, " Add Prompt ");
|
|
683
706
|
i0.ɵɵelementEnd();
|
|
684
707
|
} }
|
|
685
|
-
function
|
|
686
|
-
const
|
|
687
|
-
i0.ɵɵelementStart(0, "button",
|
|
688
|
-
i0.ɵɵlistener("click", function
|
|
689
|
-
i0.ɵɵelement(1, "i",
|
|
708
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
709
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
710
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
711
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addPrompt()); });
|
|
712
|
+
i0.ɵɵelement(1, "i", 77);
|
|
690
713
|
i0.ɵɵtext(2, " Create First Prompt ");
|
|
691
714
|
i0.ɵɵelementEnd();
|
|
692
715
|
} }
|
|
693
|
-
function
|
|
694
|
-
i0.ɵɵelementStart(0, "div",
|
|
695
|
-
i0.ɵɵelement(1, "i",
|
|
716
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
717
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
718
|
+
i0.ɵɵelement(1, "i", 106);
|
|
696
719
|
i0.ɵɵelementStart(2, "h4");
|
|
697
720
|
i0.ɵɵtext(3, "No Prompts Configured");
|
|
698
721
|
i0.ɵɵelementEnd();
|
|
699
722
|
i0.ɵɵelementStart(4, "p");
|
|
700
723
|
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
701
724
|
i0.ɵɵelementEnd();
|
|
702
|
-
i0.ɵɵtemplate(6,
|
|
725
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_11_Conditional_6_Template, 3, 0, "button", 78);
|
|
703
726
|
i0.ɵɵelementEnd();
|
|
704
727
|
} if (rf & 2) {
|
|
705
728
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
706
729
|
i0.ɵɵadvance(6);
|
|
707
730
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNewPrompts ? 6 : -1);
|
|
708
731
|
} }
|
|
709
|
-
function
|
|
710
|
-
i0.ɵɵelementStart(0, "div",
|
|
732
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
733
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
711
734
|
i0.ɵɵtext(1);
|
|
712
735
|
i0.ɵɵelementEnd();
|
|
713
736
|
} if (rf & 2) {
|
|
714
|
-
const
|
|
737
|
+
const prompt_r26 = i0.ɵɵnextContext().$implicit;
|
|
715
738
|
i0.ɵɵadvance();
|
|
716
|
-
i0.ɵɵtextInterpolate2("",
|
|
739
|
+
i0.ɵɵtextInterpolate2("", prompt_r26.TemplateText.substring(0, 120), "", prompt_r26.TemplateText.length > 120 ? "..." : "", "");
|
|
717
740
|
} }
|
|
718
|
-
function
|
|
719
|
-
i0.ɵɵelementStart(0, "span",
|
|
741
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
742
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
720
743
|
i0.ɵɵtext(1);
|
|
721
744
|
i0.ɵɵelementEnd();
|
|
722
745
|
} if (rf & 2) {
|
|
723
|
-
const
|
|
746
|
+
const prompt_r26 = i0.ɵɵnextContext().$implicit;
|
|
724
747
|
i0.ɵɵadvance();
|
|
725
|
-
i0.ɵɵtextInterpolate(
|
|
748
|
+
i0.ɵɵtextInterpolate(prompt_r26.PromptRole);
|
|
726
749
|
} }
|
|
727
|
-
function
|
|
728
|
-
const
|
|
729
|
-
i0.ɵɵelementStart(0, "button",
|
|
730
|
-
i0.ɵɵlistener("click", function
|
|
731
|
-
i0.ɵɵelement(1, "i",
|
|
750
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
751
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
752
|
+
i0.ɵɵelementStart(0, "button", 103);
|
|
753
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r27); const prompt_r26 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openPromptAdvancedSettings(prompt_r26, $event)); });
|
|
754
|
+
i0.ɵɵelement(1, "i", 104);
|
|
732
755
|
i0.ɵɵelementEnd();
|
|
733
756
|
} }
|
|
734
|
-
function
|
|
735
|
-
const
|
|
736
|
-
i0.ɵɵelementStart(0, "button",
|
|
737
|
-
i0.ɵɵlistener("click", function
|
|
738
|
-
i0.ɵɵelement(1, "i",
|
|
757
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
758
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
759
|
+
i0.ɵɵelementStart(0, "button", 118);
|
|
760
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r28); const prompt_r26 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePrompt(prompt_r26, $event)); });
|
|
761
|
+
i0.ɵɵelement(1, "i", 94);
|
|
739
762
|
i0.ɵɵelementEnd();
|
|
740
763
|
} }
|
|
741
|
-
function
|
|
742
|
-
const
|
|
743
|
-
i0.ɵɵelementStart(0, "div",
|
|
744
|
-
i0.ɵɵlistener("click", function
|
|
745
|
-
i0.ɵɵelementStart(1, "div",
|
|
746
|
-
i0.ɵɵelement(2, "i",
|
|
764
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
765
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
766
|
+
i0.ɵɵelementStart(0, "div", 115);
|
|
767
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Template_div_click_0_listener() { const prompt_r26 = i0.ɵɵrestoreView(_r25).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", prompt_r26.ID)); });
|
|
768
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
769
|
+
i0.ɵɵelement(2, "i", 116);
|
|
747
770
|
i0.ɵɵelementEnd();
|
|
748
|
-
i0.ɵɵelementStart(3, "div",
|
|
771
|
+
i0.ɵɵelementStart(3, "div", 83)(4, "div", 84);
|
|
749
772
|
i0.ɵɵtext(5);
|
|
750
773
|
i0.ɵɵelementEnd();
|
|
751
|
-
i0.ɵɵtemplate(6,
|
|
752
|
-
i0.ɵɵelementStart(7, "div",
|
|
753
|
-
i0.ɵɵtemplate(8,
|
|
774
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_6_Template, 2, 2, "div", 85);
|
|
775
|
+
i0.ɵɵelementStart(7, "div", 86);
|
|
776
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_8_Template, 2, 1, "span", 87);
|
|
754
777
|
i0.ɵɵelementEnd()();
|
|
755
|
-
i0.ɵɵelementStart(9, "div",
|
|
756
|
-
i0.ɵɵtemplate(10,
|
|
757
|
-
i0.ɵɵelement(12, "i",
|
|
778
|
+
i0.ɵɵelementStart(9, "div", 90);
|
|
779
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_10_Template, 2, 0, "button", 101)(11, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Conditional_11_Template, 2, 0, "button", 117);
|
|
780
|
+
i0.ɵɵelement(12, "i", 92);
|
|
758
781
|
i0.ɵɵelementEnd()();
|
|
759
782
|
} if (rf & 2) {
|
|
760
|
-
const
|
|
783
|
+
const prompt_r26 = ctx.$implicit;
|
|
761
784
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
762
785
|
i0.ɵɵadvance(5);
|
|
763
|
-
i0.ɵɵtextInterpolate(
|
|
786
|
+
i0.ɵɵtextInterpolate(prompt_r26.Name);
|
|
764
787
|
i0.ɵɵadvance();
|
|
765
|
-
i0.ɵɵconditional(
|
|
788
|
+
i0.ɵɵconditional(prompt_r26.TemplateText ? 6 : -1);
|
|
766
789
|
i0.ɵɵadvance(2);
|
|
767
|
-
i0.ɵɵconditional(
|
|
790
|
+
i0.ɵɵconditional(prompt_r26.PromptRole ? 8 : -1);
|
|
768
791
|
i0.ɵɵadvance(2);
|
|
769
792
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePrompts ? 10 : -1);
|
|
770
793
|
i0.ɵɵadvance();
|
|
771
794
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanDeletePrompts ? 11 : -1);
|
|
772
795
|
} }
|
|
773
|
-
function
|
|
774
|
-
const
|
|
775
|
-
i0.ɵɵelementStart(0, "div",
|
|
776
|
-
i0.ɵɵlistener("click", function
|
|
796
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
797
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
798
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
799
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Prompts", "")); });
|
|
777
800
|
i0.ɵɵelementStart(1, "span");
|
|
778
801
|
i0.ɵɵtext(2);
|
|
779
802
|
i0.ɵɵelementEnd()();
|
|
@@ -782,10 +805,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
782
805
|
i0.ɵɵadvance(2);
|
|
783
806
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.promptCount, " prompts...");
|
|
784
807
|
} }
|
|
785
|
-
function
|
|
786
|
-
i0.ɵɵelementStart(0, "div",
|
|
787
|
-
i0.ɵɵrepeaterCreate(1,
|
|
788
|
-
i0.ɵɵtemplate(3,
|
|
808
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
809
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
810
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_For_2_Template, 13, 5, "div", 114, _forTrack0);
|
|
811
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_Conditional_3_Template, 3, 1, "div", 45);
|
|
789
812
|
i0.ɵɵelementEnd();
|
|
790
813
|
} if (rf & 2) {
|
|
791
814
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -794,17 +817,17 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Condit
|
|
|
794
817
|
i0.ɵɵadvance(2);
|
|
795
818
|
i0.ɵɵconditional(ctx_r1.promptCount > ctx_r1.agentPrompts.length ? 3 : -1);
|
|
796
819
|
} }
|
|
797
|
-
function
|
|
798
|
-
i0.ɵɵelementStart(0, "div",
|
|
799
|
-
i0.ɵɵelement(5, "i",
|
|
820
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
821
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 107)(3, "div", 108)(4, "label", 109);
|
|
822
|
+
i0.ɵɵelement(5, "i", 110);
|
|
800
823
|
i0.ɵɵtext(6, " Model Selection: ");
|
|
801
824
|
i0.ɵɵelementEnd();
|
|
802
|
-
i0.ɵɵtemplate(7,
|
|
825
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist", 111)(8, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_8_Template, 2, 1, "span", 112);
|
|
803
826
|
i0.ɵɵelementEnd()();
|
|
804
|
-
i0.ɵɵelementStart(9, "div",
|
|
805
|
-
i0.ɵɵtemplate(10,
|
|
827
|
+
i0.ɵɵelementStart(9, "div", 73);
|
|
828
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_10_Template, 3, 0, "button", 74);
|
|
806
829
|
i0.ɵɵelementEnd()();
|
|
807
|
-
i0.ɵɵtemplate(11,
|
|
830
|
+
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_11_Template, 7, 1, "div", 42)(12, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Conditional_12_Template, 4, 1, "div", 75);
|
|
808
831
|
i0.ɵɵelementEnd();
|
|
809
832
|
} if (rf & 2) {
|
|
810
833
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -815,24 +838,24 @@ function AIAgentFormComponentExtended_form_2_Conditional_25_ng_template_2_Templa
|
|
|
815
838
|
i0.ɵɵadvance();
|
|
816
839
|
i0.ɵɵconditional(ctx_r1.promptCount === 0 ? 11 : 12);
|
|
817
840
|
} }
|
|
818
|
-
function
|
|
819
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
820
|
-
i0.ɵɵtemplate(1,
|
|
841
|
+
function AIAgentFormComponentExtended_form_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
842
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
843
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Template, 13, 3, "ng-template", 28);
|
|
821
844
|
i0.ɵɵelementEnd();
|
|
822
845
|
} if (rf & 2) {
|
|
823
846
|
i0.ɵɵproperty("expanded", false);
|
|
824
847
|
} }
|
|
825
|
-
function
|
|
826
|
-
i0.ɵɵelement(0, "i",
|
|
848
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
849
|
+
i0.ɵɵelement(0, "i", 119);
|
|
827
850
|
i0.ɵɵtext(1);
|
|
828
851
|
} if (rf & 2) {
|
|
829
852
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
830
853
|
i0.ɵɵadvance();
|
|
831
854
|
i0.ɵɵtextInterpolate1(" Learning Cycles", ctx_r1.learningCycleCount > 0 ? " (" + ctx_r1.learningCycleCount + ")" : "", " ");
|
|
832
855
|
} }
|
|
833
|
-
function
|
|
834
|
-
i0.ɵɵelementStart(0, "div",
|
|
835
|
-
i0.ɵɵelement(1, "i",
|
|
856
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
857
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
858
|
+
i0.ɵɵelement(1, "i", 119);
|
|
836
859
|
i0.ɵɵelementStart(2, "h4");
|
|
837
860
|
i0.ɵɵtext(3, "No Learning Cycles");
|
|
838
861
|
i0.ɵɵelementEnd();
|
|
@@ -840,55 +863,55 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Condit
|
|
|
840
863
|
i0.ɵɵtext(5, "Learning cycles will appear here as the agent processes requests and improves over time.");
|
|
841
864
|
i0.ɵɵelementEnd()();
|
|
842
865
|
} }
|
|
843
|
-
function
|
|
844
|
-
i0.ɵɵelementStart(0, "span",
|
|
845
|
-
i0.ɵɵelement(1, "i",
|
|
866
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
867
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
868
|
+
i0.ɵɵelement(1, "i", 122);
|
|
846
869
|
i0.ɵɵtext(2);
|
|
847
870
|
i0.ɵɵpipe(3, "date");
|
|
848
871
|
i0.ɵɵelementEnd();
|
|
849
872
|
} if (rf & 2) {
|
|
850
|
-
const
|
|
873
|
+
const cycle_r31 = i0.ɵɵnextContext().$implicit;
|
|
851
874
|
i0.ɵɵadvance(2);
|
|
852
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
875
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r31.StartedAt, "short"), " ");
|
|
853
876
|
} }
|
|
854
|
-
function
|
|
855
|
-
i0.ɵɵelementStart(0, "span",
|
|
877
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
878
|
+
i0.ɵɵelementStart(0, "span", 88);
|
|
856
879
|
i0.ɵɵtext(1);
|
|
857
880
|
i0.ɵɵelementEnd();
|
|
858
881
|
} if (rf & 2) {
|
|
859
|
-
const
|
|
882
|
+
const cycle_r31 = i0.ɵɵnextContext().$implicit;
|
|
860
883
|
i0.ɵɵadvance();
|
|
861
|
-
i0.ɵɵtextInterpolate(
|
|
884
|
+
i0.ɵɵtextInterpolate(cycle_r31.Status);
|
|
862
885
|
} }
|
|
863
|
-
function
|
|
864
|
-
const
|
|
865
|
-
i0.ɵɵelementStart(0, "div",
|
|
866
|
-
i0.ɵɵlistener("click", function
|
|
867
|
-
i0.ɵɵelementStart(1, "div",
|
|
868
|
-
i0.ɵɵelement(2, "i",
|
|
886
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
887
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
888
|
+
i0.ɵɵelementStart(0, "div", 121);
|
|
889
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", cycle_r31.ID)); });
|
|
890
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
891
|
+
i0.ɵɵelement(2, "i", 119);
|
|
869
892
|
i0.ɵɵelementEnd();
|
|
870
|
-
i0.ɵɵelementStart(3, "div",
|
|
893
|
+
i0.ɵɵelementStart(3, "div", 83)(4, "div", 84);
|
|
871
894
|
i0.ɵɵtext(5);
|
|
872
895
|
i0.ɵɵelementEnd();
|
|
873
|
-
i0.ɵɵelementStart(6, "div",
|
|
874
|
-
i0.ɵɵtemplate(7,
|
|
896
|
+
i0.ɵɵelementStart(6, "div", 86);
|
|
897
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 87)(8, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 88);
|
|
875
898
|
i0.ɵɵelementEnd()();
|
|
876
|
-
i0.ɵɵelementStart(9, "div",
|
|
877
|
-
i0.ɵɵelement(10, "i",
|
|
899
|
+
i0.ɵɵelementStart(9, "div", 90);
|
|
900
|
+
i0.ɵɵelement(10, "i", 92);
|
|
878
901
|
i0.ɵɵelementEnd()();
|
|
879
902
|
} if (rf & 2) {
|
|
880
|
-
const
|
|
903
|
+
const cycle_r31 = ctx.$implicit;
|
|
881
904
|
i0.ɵɵadvance(5);
|
|
882
|
-
i0.ɵɵtextInterpolate1("Learning Cycle ",
|
|
905
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r31.ID.substring(0, 8), "");
|
|
883
906
|
i0.ɵɵadvance(2);
|
|
884
|
-
i0.ɵɵconditional(
|
|
907
|
+
i0.ɵɵconditional(cycle_r31.StartedAt ? 7 : -1);
|
|
885
908
|
i0.ɵɵadvance();
|
|
886
|
-
i0.ɵɵconditional(
|
|
909
|
+
i0.ɵɵconditional(cycle_r31.Status ? 8 : -1);
|
|
887
910
|
} }
|
|
888
|
-
function
|
|
889
|
-
const
|
|
890
|
-
i0.ɵɵelementStart(0, "div",
|
|
891
|
-
i0.ɵɵlistener("click", function
|
|
911
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
912
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
913
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
914
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
892
915
|
i0.ɵɵelementStart(1, "span");
|
|
893
916
|
i0.ɵɵtext(2);
|
|
894
917
|
i0.ɵɵelementEnd()();
|
|
@@ -897,10 +920,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Condit
|
|
|
897
920
|
i0.ɵɵadvance(2);
|
|
898
921
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.learningCycleCount, " cycles...");
|
|
899
922
|
} }
|
|
900
|
-
function
|
|
901
|
-
i0.ɵɵelementStart(0, "div",
|
|
902
|
-
i0.ɵɵrepeaterCreate(1,
|
|
903
|
-
i0.ɵɵtemplate(3,
|
|
923
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
924
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
925
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 120, _forTrack0);
|
|
926
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
904
927
|
i0.ɵɵelementEnd();
|
|
905
928
|
} if (rf & 2) {
|
|
906
929
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -909,114 +932,114 @@ function AIAgentFormComponentExtended_form_2_Conditional_26_ng_template_2_Condit
|
|
|
909
932
|
i0.ɵɵadvance(2);
|
|
910
933
|
i0.ɵɵconditional(ctx_r1.learningCycleCount > ctx_r1.learningCycles.length ? 3 : -1);
|
|
911
934
|
} }
|
|
912
|
-
function
|
|
913
|
-
i0.ɵɵelementStart(0, "div",
|
|
935
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
936
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
914
937
|
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
915
938
|
i0.ɵɵelementEnd()();
|
|
916
|
-
i0.ɵɵtemplate(4,
|
|
939
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_4_Template, 6, 0, "div", 42)(5, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Conditional_5_Template, 4, 1, "div", 75);
|
|
917
940
|
i0.ɵɵelementEnd();
|
|
918
941
|
} if (rf & 2) {
|
|
919
942
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
920
943
|
i0.ɵɵadvance(4);
|
|
921
944
|
i0.ɵɵconditional(ctx_r1.learningCycleCount === 0 ? 4 : 5);
|
|
922
945
|
} }
|
|
923
|
-
function
|
|
924
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
925
|
-
i0.ɵɵtemplate(1,
|
|
946
|
+
function AIAgentFormComponentExtended_form_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
947
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
948
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Template, 6, 1, "ng-template", 28);
|
|
926
949
|
i0.ɵɵelementEnd();
|
|
927
950
|
} if (rf & 2) {
|
|
928
951
|
i0.ɵɵproperty("expanded", false);
|
|
929
952
|
} }
|
|
930
|
-
function
|
|
931
|
-
i0.ɵɵelement(0, "i",
|
|
953
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
954
|
+
i0.ɵɵelement(0, "i", 123);
|
|
932
955
|
i0.ɵɵtext(1);
|
|
933
956
|
} if (rf & 2) {
|
|
934
957
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
935
958
|
i0.ɵɵadvance();
|
|
936
959
|
i0.ɵɵtextInterpolate1(" Notes", ctx_r1.noteCount > 0 ? " (" + ctx_r1.noteCount + ")" : "", " ");
|
|
937
960
|
} }
|
|
938
|
-
function
|
|
939
|
-
const
|
|
940
|
-
i0.ɵɵelementStart(0, "button",
|
|
941
|
-
i0.ɵɵlistener("click", function
|
|
942
|
-
i0.ɵɵelement(1, "i",
|
|
961
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
962
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
963
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
964
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
965
|
+
i0.ɵɵelement(1, "i", 77);
|
|
943
966
|
i0.ɵɵtext(2, " Add Note ");
|
|
944
967
|
i0.ɵɵelementEnd();
|
|
945
968
|
} }
|
|
946
|
-
function
|
|
947
|
-
const
|
|
948
|
-
i0.ɵɵelementStart(0, "button",
|
|
949
|
-
i0.ɵɵlistener("click", function
|
|
950
|
-
i0.ɵɵelement(1, "i",
|
|
969
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
970
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
971
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
972
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNote()); });
|
|
973
|
+
i0.ɵɵelement(1, "i", 77);
|
|
951
974
|
i0.ɵɵtext(2, " Create First Note ");
|
|
952
975
|
i0.ɵɵelementEnd();
|
|
953
976
|
} }
|
|
954
|
-
function
|
|
955
|
-
i0.ɵɵelementStart(0, "div",
|
|
956
|
-
i0.ɵɵelement(1, "i",
|
|
977
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
978
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
979
|
+
i0.ɵɵelement(1, "i", 123);
|
|
957
980
|
i0.ɵɵelementStart(2, "h4");
|
|
958
981
|
i0.ɵɵtext(3, "No Notes");
|
|
959
982
|
i0.ɵɵelementEnd();
|
|
960
983
|
i0.ɵɵelementStart(4, "p");
|
|
961
984
|
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
962
985
|
i0.ɵɵelementEnd();
|
|
963
|
-
i0.ɵɵtemplate(6,
|
|
986
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "button", 78);
|
|
964
987
|
i0.ɵɵelementEnd();
|
|
965
988
|
} if (rf & 2) {
|
|
966
989
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
967
990
|
i0.ɵɵadvance(6);
|
|
968
991
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreateNotes ? 6 : -1);
|
|
969
992
|
} }
|
|
970
|
-
function
|
|
971
|
-
i0.ɵɵelementStart(0, "div",
|
|
993
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
994
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
972
995
|
i0.ɵɵtext(1);
|
|
973
996
|
i0.ɵɵelementEnd();
|
|
974
997
|
} if (rf & 2) {
|
|
975
|
-
const
|
|
998
|
+
const note_r36 = i0.ɵɵnextContext().$implicit;
|
|
976
999
|
i0.ɵɵadvance();
|
|
977
|
-
i0.ɵɵtextInterpolate2("",
|
|
1000
|
+
i0.ɵɵtextInterpolate2("", note_r36.Note.substring(0, 100), "", note_r36.Note.length > 100 ? "..." : "", "");
|
|
978
1001
|
} }
|
|
979
|
-
function
|
|
980
|
-
i0.ɵɵelementStart(0, "span",
|
|
981
|
-
i0.ɵɵelement(1, "i",
|
|
1002
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1003
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
1004
|
+
i0.ɵɵelement(1, "i", 122);
|
|
982
1005
|
i0.ɵɵtext(2);
|
|
983
1006
|
i0.ɵɵpipe(3, "date");
|
|
984
1007
|
i0.ɵɵelementEnd();
|
|
985
1008
|
} if (rf & 2) {
|
|
986
|
-
const
|
|
1009
|
+
const note_r36 = i0.ɵɵnextContext().$implicit;
|
|
987
1010
|
i0.ɵɵadvance(2);
|
|
988
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1,
|
|
1011
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r36.__mj_CreatedAt, "short"), " ");
|
|
989
1012
|
} }
|
|
990
|
-
function
|
|
991
|
-
const
|
|
992
|
-
i0.ɵɵelementStart(0, "div",
|
|
993
|
-
i0.ɵɵlistener("click", function
|
|
994
|
-
i0.ɵɵelementStart(1, "div",
|
|
995
|
-
i0.ɵɵelement(2, "i",
|
|
1013
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1014
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
1015
|
+
i0.ɵɵelementStart(0, "div", 125);
|
|
1016
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r36 = i0.ɵɵrestoreView(_r35).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", note_r36.ID)); });
|
|
1017
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
1018
|
+
i0.ɵɵelement(2, "i", 123);
|
|
996
1019
|
i0.ɵɵelementEnd();
|
|
997
|
-
i0.ɵɵelementStart(3, "div",
|
|
1020
|
+
i0.ɵɵelementStart(3, "div", 83)(4, "div", 84);
|
|
998
1021
|
i0.ɵɵtext(5);
|
|
999
1022
|
i0.ɵɵelementEnd();
|
|
1000
|
-
i0.ɵɵtemplate(6,
|
|
1001
|
-
i0.ɵɵelementStart(7, "div",
|
|
1002
|
-
i0.ɵɵtemplate(8,
|
|
1023
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 85);
|
|
1024
|
+
i0.ɵɵelementStart(7, "div", 86);
|
|
1025
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 87);
|
|
1003
1026
|
i0.ɵɵelementEnd()();
|
|
1004
|
-
i0.ɵɵelementStart(9, "div",
|
|
1005
|
-
i0.ɵɵelement(10, "i",
|
|
1027
|
+
i0.ɵɵelementStart(9, "div", 90);
|
|
1028
|
+
i0.ɵɵelement(10, "i", 92);
|
|
1006
1029
|
i0.ɵɵelementEnd()();
|
|
1007
1030
|
} if (rf & 2) {
|
|
1008
|
-
const
|
|
1031
|
+
const note_r36 = ctx.$implicit;
|
|
1009
1032
|
i0.ɵɵadvance(5);
|
|
1010
|
-
i0.ɵɵtextInterpolate(
|
|
1033
|
+
i0.ɵɵtextInterpolate(note_r36.Type || "Note");
|
|
1011
1034
|
i0.ɵɵadvance();
|
|
1012
|
-
i0.ɵɵconditional(
|
|
1035
|
+
i0.ɵɵconditional(note_r36.Note ? 6 : -1);
|
|
1013
1036
|
i0.ɵɵadvance(2);
|
|
1014
|
-
i0.ɵɵconditional(
|
|
1037
|
+
i0.ɵɵconditional(note_r36.__mj_CreatedAt ? 8 : -1);
|
|
1015
1038
|
} }
|
|
1016
|
-
function
|
|
1017
|
-
const
|
|
1018
|
-
i0.ɵɵelementStart(0, "div",
|
|
1019
|
-
i0.ɵɵlistener("click", function
|
|
1039
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1040
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
1041
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
1042
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("AI Agent Notes", "")); });
|
|
1020
1043
|
i0.ɵɵelementStart(1, "span");
|
|
1021
1044
|
i0.ɵɵtext(2);
|
|
1022
1045
|
i0.ɵɵelementEnd()();
|
|
@@ -1025,10 +1048,10 @@ function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Condit
|
|
|
1025
1048
|
i0.ɵɵadvance(2);
|
|
1026
1049
|
i0.ɵɵtextInterpolate1("View all ", ctx_r1.noteCount, " notes...");
|
|
1027
1050
|
} }
|
|
1028
|
-
function
|
|
1029
|
-
i0.ɵɵelementStart(0, "div",
|
|
1030
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1031
|
-
i0.ɵɵtemplate(3,
|
|
1051
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1052
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
1053
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 124, _forTrack0);
|
|
1054
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
1032
1055
|
i0.ɵɵelementEnd();
|
|
1033
1056
|
} if (rf & 2) {
|
|
1034
1057
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1037,14 +1060,14 @@ function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Condit
|
|
|
1037
1060
|
i0.ɵɵadvance(2);
|
|
1038
1061
|
i0.ɵɵconditional(ctx_r1.noteCount > ctx_r1.agentNotes.length ? 3 : -1);
|
|
1039
1062
|
} }
|
|
1040
|
-
function
|
|
1041
|
-
i0.ɵɵelementStart(0, "div",
|
|
1063
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1064
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
1042
1065
|
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
1043
1066
|
i0.ɵɵelementEnd();
|
|
1044
|
-
i0.ɵɵelementStart(4, "div",
|
|
1045
|
-
i0.ɵɵtemplate(5,
|
|
1067
|
+
i0.ɵɵelementStart(4, "div", 73);
|
|
1068
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_5_Template, 3, 0, "button", 74);
|
|
1046
1069
|
i0.ɵɵelementEnd()();
|
|
1047
|
-
i0.ɵɵtemplate(6,
|
|
1070
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_6_Template, 7, 1, "div", 42)(7, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Conditional_7_Template, 4, 1, "div", 75);
|
|
1048
1071
|
i0.ɵɵelementEnd();
|
|
1049
1072
|
} if (rf & 2) {
|
|
1050
1073
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1053,78 +1076,78 @@ function AIAgentFormComponentExtended_form_2_Conditional_27_ng_template_2_Templa
|
|
|
1053
1076
|
i0.ɵɵadvance();
|
|
1054
1077
|
i0.ɵɵconditional(ctx_r1.noteCount === 0 ? 6 : 7);
|
|
1055
1078
|
} }
|
|
1056
|
-
function
|
|
1057
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
1058
|
-
i0.ɵɵtemplate(1,
|
|
1079
|
+
function AIAgentFormComponentExtended_form_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
1080
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 26);
|
|
1081
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_1_Template, 2, 1, "ng-template", 27)(2, AIAgentFormComponentExtended_form_2_Conditional_28_ng_template_2_Template, 8, 2, "ng-template", 28);
|
|
1059
1082
|
i0.ɵɵelementEnd();
|
|
1060
1083
|
} if (rf & 2) {
|
|
1061
1084
|
i0.ɵɵproperty("expanded", false);
|
|
1062
1085
|
} }
|
|
1063
|
-
function
|
|
1064
|
-
i0.ɵɵelement(0, "i",
|
|
1086
|
+
function AIAgentFormComponentExtended_form_2_ng_template_30_Template(rf, ctx) { if (rf & 1) {
|
|
1087
|
+
i0.ɵɵelement(0, "i", 126);
|
|
1065
1088
|
i0.ɵɵtext(1, " Payload ");
|
|
1066
1089
|
} }
|
|
1067
|
-
function
|
|
1068
|
-
const
|
|
1069
|
-
i0.ɵɵelementStart(0, "div",
|
|
1090
|
+
function AIAgentFormComponentExtended_form_2_ng_template_31_Template(rf, ctx) { if (rf & 1) {
|
|
1091
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
1092
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
1070
1093
|
i0.ɵɵtext(3, " Configure how this agent handles data payloads and validation. ");
|
|
1071
1094
|
i0.ɵɵelementEnd()();
|
|
1072
|
-
i0.ɵɵelementStart(4, "div",
|
|
1073
|
-
i0.ɵɵelement(6, "i",
|
|
1095
|
+
i0.ɵɵelementStart(4, "div", 127)(5, "h4", 128);
|
|
1096
|
+
i0.ɵɵelement(6, "i", 104);
|
|
1074
1097
|
i0.ɵɵtext(7, " Configuration ");
|
|
1075
1098
|
i0.ɵɵelementEnd();
|
|
1076
|
-
i0.ɵɵelementStart(8, "div",
|
|
1077
|
-
i0.ɵɵelement(9, "mj-form-field",
|
|
1099
|
+
i0.ɵɵelementStart(8, "div", 129);
|
|
1100
|
+
i0.ɵɵelement(9, "mj-form-field", 130)(10, "mj-form-field", 131)(11, "mj-form-field", 132);
|
|
1078
1101
|
i0.ɵɵelementEnd()();
|
|
1079
|
-
i0.ɵɵelementStart(12, "div",
|
|
1080
|
-
i0.ɵɵelement(14, "i",
|
|
1102
|
+
i0.ɵɵelementStart(12, "div", 133)(13, "h4", 128);
|
|
1103
|
+
i0.ɵɵelement(14, "i", 134);
|
|
1081
1104
|
i0.ɵɵtext(15, " Path Configuration ");
|
|
1082
1105
|
i0.ɵɵelementEnd();
|
|
1083
|
-
i0.ɵɵelementStart(16, "div",
|
|
1084
|
-
i0.ɵɵelement(18, "i",
|
|
1106
|
+
i0.ɵɵelementStart(16, "div", 135)(17, "label", 136);
|
|
1107
|
+
i0.ɵɵelement(18, "i", 137);
|
|
1085
1108
|
i0.ɵɵtext(19, " Downstream Paths ");
|
|
1086
|
-
i0.ɵɵelementStart(20, "span",
|
|
1109
|
+
i0.ɵɵelementStart(20, "span", 138);
|
|
1087
1110
|
i0.ɵɵtext(21, "JSON array of paths to pass to sub-agents");
|
|
1088
1111
|
i0.ɵɵelementEnd()();
|
|
1089
|
-
i0.ɵɵelementStart(22, "mj-code-editor",
|
|
1090
|
-
i0.ɵɵlistener("valueChange", function
|
|
1112
|
+
i0.ɵɵelementStart(22, "mj-code-editor", 139);
|
|
1113
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_31_Template_mj_code_editor_valueChange_22_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadDownstreamPaths", $event)); });
|
|
1091
1114
|
i0.ɵɵelementEnd()();
|
|
1092
|
-
i0.ɵɵelementStart(23, "div",
|
|
1093
|
-
i0.ɵɵelement(25, "i",
|
|
1115
|
+
i0.ɵɵelementStart(23, "div", 135)(24, "label", 136);
|
|
1116
|
+
i0.ɵɵelement(25, "i", 140);
|
|
1094
1117
|
i0.ɵɵtext(26, " Upstream Paths ");
|
|
1095
|
-
i0.ɵɵelementStart(27, "span",
|
|
1118
|
+
i0.ɵɵelementStart(27, "span", 138);
|
|
1096
1119
|
i0.ɵɵtext(28, "JSON array of paths to return to parent agent");
|
|
1097
1120
|
i0.ɵɵelementEnd()();
|
|
1098
|
-
i0.ɵɵelementStart(29, "mj-code-editor",
|
|
1099
|
-
i0.ɵɵlistener("valueChange", function
|
|
1121
|
+
i0.ɵɵelementStart(29, "mj-code-editor", 139);
|
|
1122
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_31_Template_mj_code_editor_valueChange_29_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadUpstreamPaths", $event)); });
|
|
1100
1123
|
i0.ɵɵelementEnd()();
|
|
1101
|
-
i0.ɵɵelementStart(30, "div",
|
|
1102
|
-
i0.ɵɵelement(32, "i",
|
|
1124
|
+
i0.ɵɵelementStart(30, "div", 135)(31, "label", 136);
|
|
1125
|
+
i0.ɵɵelement(32, "i", 141);
|
|
1103
1126
|
i0.ɵɵtext(33, " Self Read Paths ");
|
|
1104
|
-
i0.ɵɵelementStart(34, "span",
|
|
1127
|
+
i0.ɵɵelementStart(34, "span", 138);
|
|
1105
1128
|
i0.ɵɵtext(35, "JSON array of paths this agent can read");
|
|
1106
1129
|
i0.ɵɵelementEnd()();
|
|
1107
|
-
i0.ɵɵelementStart(36, "mj-code-editor",
|
|
1108
|
-
i0.ɵɵlistener("valueChange", function
|
|
1130
|
+
i0.ɵɵelementStart(36, "mj-code-editor", 139);
|
|
1131
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_31_Template_mj_code_editor_valueChange_36_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfReadPaths", $event)); });
|
|
1109
1132
|
i0.ɵɵelementEnd()();
|
|
1110
|
-
i0.ɵɵelementStart(37, "div",
|
|
1111
|
-
i0.ɵɵelement(39, "i",
|
|
1133
|
+
i0.ɵɵelementStart(37, "div", 135)(38, "label", 136);
|
|
1134
|
+
i0.ɵɵelement(39, "i", 142);
|
|
1112
1135
|
i0.ɵɵtext(40, " Self Write Paths ");
|
|
1113
|
-
i0.ɵɵelementStart(41, "span",
|
|
1136
|
+
i0.ɵɵelementStart(41, "span", 138);
|
|
1114
1137
|
i0.ɵɵtext(42, "JSON array of paths this agent can write to");
|
|
1115
1138
|
i0.ɵɵelementEnd()();
|
|
1116
|
-
i0.ɵɵelementStart(43, "mj-code-editor",
|
|
1117
|
-
i0.ɵɵlistener("valueChange", function
|
|
1139
|
+
i0.ɵɵelementStart(43, "mj-code-editor", 139);
|
|
1140
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_31_Template_mj_code_editor_valueChange_43_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("PayloadSelfWritePaths", $event)); });
|
|
1118
1141
|
i0.ɵɵelementEnd()()();
|
|
1119
|
-
i0.ɵɵelementStart(44, "div",
|
|
1120
|
-
i0.ɵɵelement(46, "i",
|
|
1142
|
+
i0.ɵɵelementStart(44, "div", 143)(45, "h4", 128);
|
|
1143
|
+
i0.ɵɵelement(46, "i", 144);
|
|
1121
1144
|
i0.ɵɵtext(47, " Final Payload Validation ");
|
|
1122
1145
|
i0.ɵɵelementEnd();
|
|
1123
|
-
i0.ɵɵelementStart(48, "div",
|
|
1146
|
+
i0.ɵɵelementStart(48, "div", 135)(49, "label", 136)(50, "span", 138);
|
|
1124
1147
|
i0.ɵɵtext(51, "JSON validation rules or schema for final payload validation");
|
|
1125
1148
|
i0.ɵɵelementEnd()();
|
|
1126
|
-
i0.ɵɵelementStart(52, "mj-code-editor",
|
|
1127
|
-
i0.ɵɵlistener("valueChange", function
|
|
1149
|
+
i0.ɵɵelementStart(52, "mj-code-editor", 145);
|
|
1150
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_31_Template_mj_code_editor_valueChange_52_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updatePayloadField("FinalPayloadValidation", $event)); });
|
|
1128
1151
|
i0.ɵɵelementEnd()()()();
|
|
1129
1152
|
} if (rf & 2) {
|
|
1130
1153
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1145,16 +1168,16 @@ function AIAgentFormComponentExtended_form_2_ng_template_30_Template(rf, ctx) {
|
|
|
1145
1168
|
i0.ɵɵadvance(9);
|
|
1146
1169
|
i0.ɵɵproperty("value", ctx_r1.record.FinalPayloadValidation || "{}")("readonly", !ctx_r1.EditMode)("lineWrapping", true);
|
|
1147
1170
|
} }
|
|
1148
|
-
function
|
|
1149
|
-
i0.ɵɵelement(0, "i",
|
|
1171
|
+
function AIAgentFormComponentExtended_form_2_ng_template_33_Template(rf, ctx) { if (rf & 1) {
|
|
1172
|
+
i0.ɵɵelement(0, "i", 146);
|
|
1150
1173
|
i0.ɵɵtext(1, " Execution Guardrails ");
|
|
1151
1174
|
} }
|
|
1152
|
-
function
|
|
1153
|
-
i0.ɵɵelementStart(0, "div",
|
|
1175
|
+
function AIAgentFormComponentExtended_form_2_ng_template_34_Template(rf, ctx) { if (rf & 1) {
|
|
1176
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
1154
1177
|
i0.ɵɵtext(3, " Set limits to prevent runaway agent executions and control resource usage. ");
|
|
1155
1178
|
i0.ɵɵelementEnd()();
|
|
1156
|
-
i0.ɵɵelementStart(4, "div",
|
|
1157
|
-
i0.ɵɵelement(5, "mj-form-field",
|
|
1179
|
+
i0.ɵɵelementStart(4, "div", 147);
|
|
1180
|
+
i0.ɵɵelement(5, "mj-form-field", 148)(6, "mj-form-field", 149)(7, "mj-form-field", 150)(8, "mj-form-field", 151);
|
|
1158
1181
|
i0.ɵɵelementEnd()();
|
|
1159
1182
|
} if (rf & 2) {
|
|
1160
1183
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1167,26 +1190,26 @@ function AIAgentFormComponentExtended_form_2_ng_template_33_Template(rf, ctx) {
|
|
|
1167
1190
|
i0.ɵɵadvance();
|
|
1168
1191
|
i0.ɵɵproperty("EditMode", ctx_r1.EditMode)("record", ctx_r1.record);
|
|
1169
1192
|
} }
|
|
1170
|
-
function
|
|
1171
|
-
i0.ɵɵelement(0, "i",
|
|
1193
|
+
function AIAgentFormComponentExtended_form_2_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
1194
|
+
i0.ɵɵelement(0, "i", 104);
|
|
1172
1195
|
i0.ɵɵtext(1, " Configuration ");
|
|
1173
1196
|
} }
|
|
1174
|
-
function
|
|
1175
|
-
const
|
|
1176
|
-
i0.ɵɵelementStart(0, "div",
|
|
1197
|
+
function AIAgentFormComponentExtended_form_2_ng_template_37_Template(rf, ctx) { if (rf & 1) {
|
|
1198
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
1199
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "div", 40)(2, "div", 41);
|
|
1177
1200
|
i0.ɵɵtext(3, " Advanced configuration settings for agent behavior and execution. ");
|
|
1178
1201
|
i0.ɵɵelementEnd()();
|
|
1179
|
-
i0.ɵɵelementStart(4, "div",
|
|
1180
|
-
i0.ɵɵelement(5, "mj-form-field",
|
|
1202
|
+
i0.ɵɵelementStart(4, "div", 147);
|
|
1203
|
+
i0.ɵɵelement(5, "mj-form-field", 152)(6, "mj-form-field", 153)(7, "mj-form-field", 154)(8, "mj-form-field", 155)(9, "mj-form-field", 156)(10, "mj-form-field", 157)(11, "mj-form-field", 158)(12, "mj-form-field", 159)(13, "mj-form-field", 160);
|
|
1181
1204
|
i0.ɵɵelementEnd();
|
|
1182
|
-
i0.ɵɵelementStart(14, "div",
|
|
1183
|
-
i0.ɵɵelement(16, "i",
|
|
1205
|
+
i0.ɵɵelementStart(14, "div", 161)(15, "h4", 128);
|
|
1206
|
+
i0.ɵɵelement(16, "i", 162);
|
|
1184
1207
|
i0.ɵɵtext(17, " Context Compression ");
|
|
1185
1208
|
i0.ɵɵelementEnd()();
|
|
1186
|
-
i0.ɵɵelementStart(18, "div",
|
|
1187
|
-
i0.ɵɵlistener("valueChange", function
|
|
1209
|
+
i0.ɵɵelementStart(18, "div", 147)(19, "mj-form-field", 163);
|
|
1210
|
+
i0.ɵɵlistener("valueChange", function AIAgentFormComponentExtended_form_2_ng_template_37_Template_mj_form_field_valueChange_19_listener($event) { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContextCompressionToggle($event)); });
|
|
1188
1211
|
i0.ɵɵelementEnd();
|
|
1189
|
-
i0.ɵɵelement(20, "mj-form-field",
|
|
1212
|
+
i0.ɵɵelement(20, "mj-form-field", 164)(21, "mj-form-field", 165)(22, "mj-form-field", 166);
|
|
1190
1213
|
i0.ɵɵelementEnd()();
|
|
1191
1214
|
} if (rf & 2) {
|
|
1192
1215
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1219,32 +1242,32 @@ function AIAgentFormComponentExtended_form_2_ng_template_36_Template(rf, ctx) {
|
|
|
1219
1242
|
} }
|
|
1220
1243
|
function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
1221
1244
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1222
|
-
i0.ɵɵelementStart(0, "form",
|
|
1223
|
-
i0.ɵɵelement(2, "mj-form-toolbar",
|
|
1224
|
-
i0.ɵɵelementStart(3, "div",
|
|
1225
|
-
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_7_Template, 1, 2, "img",
|
|
1226
|
-
i0.ɵɵelementEnd();
|
|
1227
|
-
i0.ɵɵelementStart(9, "div",
|
|
1228
|
-
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_10_Template, 1, 1, "kendo-textbox",
|
|
1229
|
-
i0.ɵɵelementStart(12, "div",
|
|
1230
|
-
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_13_Template, 3, 3, "span",
|
|
1245
|
+
i0.ɵɵelementStart(0, "form", 5, 0);
|
|
1246
|
+
i0.ɵɵelement(2, "mj-form-toolbar", 6);
|
|
1247
|
+
i0.ɵɵelementStart(3, "div", 7)(4, "div", 8)(5, "div", 9)(6, "div", 10);
|
|
1248
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_2_Conditional_7_Template, 1, 2, "img", 11)(8, AIAgentFormComponentExtended_form_2_Conditional_8_Template, 1, 2, "i", 12);
|
|
1249
|
+
i0.ɵɵelementEnd();
|
|
1250
|
+
i0.ɵɵelementStart(9, "div", 13);
|
|
1251
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_2_Conditional_10_Template, 1, 1, "kendo-textbox", 14)(11, AIAgentFormComponentExtended_form_2_Conditional_11_Template, 2, 1, "h1", 15);
|
|
1252
|
+
i0.ɵɵelementStart(12, "div", 16);
|
|
1253
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_2_Conditional_13_Template, 3, 3, "span", 17)(14, AIAgentFormComponentExtended_form_2_Conditional_14_Template, 2, 1, "span", 18)(15, AIAgentFormComponentExtended_form_2_Conditional_15_Template, 3, 1, "span", 19);
|
|
1231
1254
|
i0.ɵɵelementEnd()()();
|
|
1232
|
-
i0.ɵɵelementStart(16, "div",
|
|
1233
|
-
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_2_Conditional_17_Template, 3, 1, "button",
|
|
1234
|
-
i0.ɵɵelementStart(18, "button",
|
|
1255
|
+
i0.ɵɵelementStart(16, "div", 20);
|
|
1256
|
+
i0.ɵɵtemplate(17, AIAgentFormComponentExtended_form_2_Conditional_17_Template, 3, 1, "button", 21);
|
|
1257
|
+
i0.ɵɵelementStart(18, "button", 22);
|
|
1235
1258
|
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_2_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshRelatedData()); });
|
|
1236
|
-
i0.ɵɵelement(19, "i",
|
|
1259
|
+
i0.ɵɵelement(19, "i", 23);
|
|
1237
1260
|
i0.ɵɵelementEnd()()()();
|
|
1238
|
-
i0.ɵɵelementStart(20, "div",
|
|
1239
|
-
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_2_Conditional_22_Template, 3, 1, "kendo-panelbar-item",
|
|
1240
|
-
i0.ɵɵelementStart(
|
|
1241
|
-
i0.ɵɵtemplate(
|
|
1261
|
+
i0.ɵɵelementStart(20, "div", 24)(21, "kendo-panelbar", 25);
|
|
1262
|
+
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_2_Conditional_22_Template, 3, 1, "kendo-panelbar-item", 26)(23, AIAgentFormComponentExtended_form_2_Conditional_23_Template, 3, 1, "kendo-panelbar-item", 26)(24, AIAgentFormComponentExtended_form_2_Conditional_24_Template, 3, 1, "kendo-panelbar-item", 26)(25, AIAgentFormComponentExtended_form_2_Conditional_25_Template, 3, 1, "kendo-panelbar-item", 26)(26, AIAgentFormComponentExtended_form_2_Conditional_26_Template, 3, 1, "kendo-panelbar-item", 26)(27, AIAgentFormComponentExtended_form_2_Conditional_27_Template, 3, 1, "kendo-panelbar-item", 26)(28, AIAgentFormComponentExtended_form_2_Conditional_28_Template, 3, 1, "kendo-panelbar-item", 26);
|
|
1263
|
+
i0.ɵɵelementStart(29, "kendo-panelbar-item", 26);
|
|
1264
|
+
i0.ɵɵtemplate(30, AIAgentFormComponentExtended_form_2_ng_template_30_Template, 2, 0, "ng-template", 27)(31, AIAgentFormComponentExtended_form_2_ng_template_31_Template, 53, 21, "ng-template", 28);
|
|
1242
1265
|
i0.ɵɵelementEnd();
|
|
1243
|
-
i0.ɵɵelementStart(
|
|
1244
|
-
i0.ɵɵtemplate(
|
|
1266
|
+
i0.ɵɵelementStart(32, "kendo-panelbar-item", 26);
|
|
1267
|
+
i0.ɵɵtemplate(33, AIAgentFormComponentExtended_form_2_ng_template_33_Template, 2, 0, "ng-template", 27)(34, AIAgentFormComponentExtended_form_2_ng_template_34_Template, 9, 8, "ng-template", 28);
|
|
1245
1268
|
i0.ɵɵelementEnd();
|
|
1246
|
-
i0.ɵɵelementStart(
|
|
1247
|
-
i0.ɵɵtemplate(
|
|
1269
|
+
i0.ɵɵelementStart(35, "kendo-panelbar-item", 26);
|
|
1270
|
+
i0.ɵɵtemplate(36, AIAgentFormComponentExtended_form_2_ng_template_36_Template, 2, 0, "ng-template", 27)(37, AIAgentFormComponentExtended_form_2_ng_template_37_Template, 23, 26, "ng-template", 28);
|
|
1248
1271
|
i0.ɵɵelementEnd()()()();
|
|
1249
1272
|
} if (rf & 2) {
|
|
1250
1273
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1257,13 +1280,15 @@ function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1257
1280
|
i0.ɵɵadvance(3);
|
|
1258
1281
|
i0.ɵɵconditional(ctx_r1.record.Status ? 13 : -1);
|
|
1259
1282
|
i0.ɵɵadvance();
|
|
1260
|
-
i0.ɵɵconditional(ctx_r1.record.
|
|
1283
|
+
i0.ɵɵconditional(ctx_r1.record.Type ? 14 : -1);
|
|
1261
1284
|
i0.ɵɵadvance();
|
|
1262
1285
|
i0.ɵɵconditional(ctx_r1.record.Parent ? 15 : -1);
|
|
1263
1286
|
i0.ɵɵadvance(2);
|
|
1264
1287
|
i0.ɵɵconditional(ctx_r1.record.ID ? 17 : -1);
|
|
1265
|
-
i0.ɵɵadvance(
|
|
1266
|
-
i0.ɵɵ
|
|
1288
|
+
i0.ɵɵadvance(4);
|
|
1289
|
+
i0.ɵɵproperty("keepItemContent", true);
|
|
1290
|
+
i0.ɵɵadvance();
|
|
1291
|
+
i0.ɵɵconditional(ctx_r1.record.ID && ctx_r1.agentType && ctx_r1.agentType.UIFormSectionKey ? 22 : -1);
|
|
1267
1292
|
i0.ɵɵadvance();
|
|
1268
1293
|
i0.ɵɵconditional(ctx_r1.record.ID ? 23 : -1);
|
|
1269
1294
|
i0.ɵɵadvance();
|
|
@@ -1275,6 +1300,8 @@ function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1275
1300
|
i0.ɵɵadvance();
|
|
1276
1301
|
i0.ɵɵconditional(ctx_r1.record.ID ? 27 : -1);
|
|
1277
1302
|
i0.ɵɵadvance();
|
|
1303
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 28 : -1);
|
|
1304
|
+
i0.ɵɵadvance();
|
|
1278
1305
|
i0.ɵɵproperty("expanded", false);
|
|
1279
1306
|
i0.ɵɵadvance(3);
|
|
1280
1307
|
i0.ɵɵproperty("expanded", false);
|
|
@@ -1312,6 +1339,22 @@ function AIAgentFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1312
1339
|
* ```
|
|
1313
1340
|
*/
|
|
1314
1341
|
let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AIAgentFormComponent {
|
|
1342
|
+
set customSectionContainer(container) {
|
|
1343
|
+
this._customSectionContainer = container;
|
|
1344
|
+
// When the container becomes available, load the custom section if needed
|
|
1345
|
+
if (container && this.agentType?.UIFormSectionKey && !this.customSectionLoaded) {
|
|
1346
|
+
setTimeout(() => this.loadCustomFormSection(), 0);
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
get customSectionContainer() {
|
|
1350
|
+
return this._customSectionContainer;
|
|
1351
|
+
}
|
|
1352
|
+
/** Update custom section when EditMode changes */
|
|
1353
|
+
ngDoCheck() {
|
|
1354
|
+
if (this.customSectionComponent && this.customSectionComponent.EditMode !== this.EditMode) {
|
|
1355
|
+
this.customSectionComponent.EditMode = this.EditMode;
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1315
1358
|
// Main AI Agent permissions inherited from BaseFormComponent:
|
|
1316
1359
|
// - UserCanEdit (Update permission)
|
|
1317
1360
|
// - UserCanRead (Read permission)
|
|
@@ -1438,6 +1481,14 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1438
1481
|
this.viewContainerRef = viewContainerRef;
|
|
1439
1482
|
this.agentManagementService = agentManagementService;
|
|
1440
1483
|
this.testHarnessService = testHarnessService;
|
|
1484
|
+
/** The agent type entity for this agent */
|
|
1485
|
+
this.agentType = null;
|
|
1486
|
+
/** Reference to the dynamically loaded custom section component */
|
|
1487
|
+
this.customSectionComponent = null;
|
|
1488
|
+
/** Track if custom section has been loaded to avoid reloading */
|
|
1489
|
+
this.customSectionLoaded = false;
|
|
1490
|
+
/** Track the component reference to check if it still exists */
|
|
1491
|
+
this.customSectionComponentRef = null;
|
|
1441
1492
|
// === Related Entity Counts ===
|
|
1442
1493
|
/** Number of sub-agents under this agent */
|
|
1443
1494
|
this.subAgentCount = 0;
|
|
@@ -1486,13 +1537,19 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1486
1537
|
this.isPerformingCancel = false;
|
|
1487
1538
|
}
|
|
1488
1539
|
/**
|
|
1489
|
-
*
|
|
1490
|
-
* if an agent record is already available.
|
|
1540
|
+
* After view initialization, load any custom form section if defined
|
|
1491
1541
|
*/
|
|
1492
|
-
async
|
|
1493
|
-
|
|
1542
|
+
async ngAfterViewInit() {
|
|
1543
|
+
// Use Promise to defer loading to avoid change detection issues
|
|
1494
1544
|
if (this.record?.ID) {
|
|
1495
1545
|
await this.loadRelatedCounts();
|
|
1546
|
+
await this.loadAgentType();
|
|
1547
|
+
// Force change detection to render the panel bar item
|
|
1548
|
+
this.cdr.detectChanges();
|
|
1549
|
+
// Defer custom section loading to next tick after DOM updates
|
|
1550
|
+
setTimeout(() => {
|
|
1551
|
+
this.loadCustomFormSection();
|
|
1552
|
+
}, 0);
|
|
1496
1553
|
}
|
|
1497
1554
|
}
|
|
1498
1555
|
/**
|
|
@@ -1595,6 +1652,77 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
1595
1652
|
executionHistoryCount: this.executionHistoryCount
|
|
1596
1653
|
};
|
|
1597
1654
|
}
|
|
1655
|
+
/**
|
|
1656
|
+
* Loads the agent type entity for this agent
|
|
1657
|
+
* @private
|
|
1658
|
+
*/
|
|
1659
|
+
async loadAgentType() {
|
|
1660
|
+
if (!this.record?.TypeID) {
|
|
1661
|
+
return;
|
|
1662
|
+
}
|
|
1663
|
+
try {
|
|
1664
|
+
const md = new Metadata();
|
|
1665
|
+
this.agentType = await md.GetEntityObject('MJ: AI Agent Types');
|
|
1666
|
+
if (this.agentType) {
|
|
1667
|
+
await this.agentType.Load(this.record.TypeID);
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
catch (error) {
|
|
1671
|
+
console.error('Error loading agent type:', error);
|
|
1672
|
+
this.agentType = null;
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
/**
|
|
1676
|
+
* Dynamically loads a custom form section if the agent type defines one
|
|
1677
|
+
* @private
|
|
1678
|
+
*/
|
|
1679
|
+
loadCustomFormSection() {
|
|
1680
|
+
if (!this.agentType?.UIFormSectionKey || !this.customSectionContainer) {
|
|
1681
|
+
return;
|
|
1682
|
+
}
|
|
1683
|
+
// Check if component still exists in container
|
|
1684
|
+
if (this.customSectionLoaded && this.customSectionContainer.length > 0) {
|
|
1685
|
+
return;
|
|
1686
|
+
}
|
|
1687
|
+
try {
|
|
1688
|
+
// Build the full registration key (Entity.Section pattern)
|
|
1689
|
+
const sectionKey = `AI Agents.${this.agentType.UIFormSectionKey}`;
|
|
1690
|
+
// Get the component registration from the class factory
|
|
1691
|
+
const registration = MJGlobal.Instance.ClassFactory.GetRegistration(BaseFormSectionComponent, sectionKey);
|
|
1692
|
+
if (registration && registration.SubClass) {
|
|
1693
|
+
// Clear any existing custom section
|
|
1694
|
+
this.customSectionContainer.clear();
|
|
1695
|
+
// Create the component
|
|
1696
|
+
const componentRef = this.customSectionContainer.createComponent(registration.SubClass);
|
|
1697
|
+
this.customSectionComponent = componentRef.instance;
|
|
1698
|
+
this.customSectionComponentRef = componentRef;
|
|
1699
|
+
// Pass the record and edit mode to the custom section
|
|
1700
|
+
this.customSectionComponent.record = this.record;
|
|
1701
|
+
this.customSectionComponent.EditMode = this.EditMode;
|
|
1702
|
+
// Mark as loaded
|
|
1703
|
+
this.customSectionLoaded = true;
|
|
1704
|
+
// Trigger change detection
|
|
1705
|
+
this.cdr.detectChanges();
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
catch (error) {
|
|
1709
|
+
console.error('Error loading custom form section:', error);
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
/**
|
|
1713
|
+
* Handles state change events for the custom section panel
|
|
1714
|
+
* @param event The panel bar state change event
|
|
1715
|
+
*/
|
|
1716
|
+
onCustomSectionStateChange(event) {
|
|
1717
|
+
console.log('Panel state change:', event.expanded, 'Container:', this.customSectionContainer, 'Loaded:', this.customSectionLoaded);
|
|
1718
|
+
// When panel is expanded, check if we need to load or reload the custom section
|
|
1719
|
+
if (event.expanded && this.agentType?.UIFormSectionKey) {
|
|
1720
|
+
// Always try to load on expand to handle cases where container might have been recreated
|
|
1721
|
+
setTimeout(() => {
|
|
1722
|
+
this.loadCustomFormSection();
|
|
1723
|
+
}, 0);
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1598
1726
|
/**
|
|
1599
1727
|
* Restores the UI to its original state using saved snapshots
|
|
1600
1728
|
* @private
|
|
@@ -2833,10 +2961,15 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
2833
2961
|
}
|
|
2834
2962
|
}
|
|
2835
2963
|
static { this.ɵfac = function AIAgentFormComponentExtended_Factory(t) { return new (t || AIAgentFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.DialogService), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i4.AIAgentManagementService), i0.ɵɵdirectiveInject(i5.AITestHarnessDialogService)); }; }
|
|
2836
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]],
|
|
2837
|
-
i0.ɵɵ
|
|
2838
|
-
|
|
2839
|
-
|
|
2964
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], viewQuery: function AIAgentFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
|
|
2965
|
+
i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
|
|
2966
|
+
} if (rf & 2) {
|
|
2967
|
+
let _t;
|
|
2968
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSectionContainer = _t.first);
|
|
2969
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["form", "ngForm"], ["customSectionContainer", ""], [1, "record-form-container"], ["kendoDialogContainer", ""], ["class", "record-form", 4, "ngIf"], [1, "record-form"], [3, "form"], [1, "agent-header"], [1, "agent-header-content"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-info"], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent"], [1, "agent-actions"], ["kendoButton", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "disabled"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "keepItemContent"], [3, "expanded"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-sitemap"], ["kendoButton", "", "themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [3, "stateChange", "expanded"], [1, "fa-solid", "fa-puzzle-piece"], [1, "panel-content", "custom-agent-type-section"], [1, "fa-solid", "fa-history"], [1, "panel-content", "execution-history-panel"], [1, "section-header"], [1, "section-description"], [1, "empty-state"], [1, "timeline-list"], [1, "timeline-item", 3, "expanded"], [1, "view-more-item"], [1, "timeline-item"], [1, "timeline-marker"], [1, "timeline-content"], [1, "timeline-header", 3, "click"], [1, "timeline-title"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "timeline-date"], [1, "timeline-meta"], [1, "execution-time"], [1, "timeline-actions"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "timeline-preview"], [1, "timeline-expanded-content"], [1, "fa-solid", "fa-stopwatch"], [1, "result-section"], [1, "error-section"], [1, "execution-details"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], ["language", "json", 2, "max-height", "200px", "width", "100%", 3, "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "view-more-item", 3, "click"], [1, "fa-solid", "fa-bolt"], [1, "panel-content"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", "size", "small"], [1, "entity-list"], ["kendoButton", "", "themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", "themeColor", "primary"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "entity-item", "action-item"], [1, "entity-item", "action-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "status-tag"], [1, "fa-solid"], [1, "item-actions"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action"], [1, "fa-solid", "fa-external-link"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action", 3, "click"], [1, "fa-solid", "fa-trash"], ["kendoButton", "", "themeColor", "secondary", "size", "small", 3, "click"], ["kendoButton", "", "themeColor", "secondary", 3, "click"], [1, "entity-item", "sub-agent-item"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "sub-agent-logo", 3, "src", "alt"], [1, "status-tag", 3, "background-color"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove sub-agent"], ["kendoButton", "", "fillMode", "flat", "themeColor", "primary", "size", "small", "title", "Advanced settings", 3, "click"], [1, "fa-solid", "fa-cog"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove sub-agent", 3, "click"], [1, "fa-solid", "fa-comments"], [1, "prompt-controls"], [1, "model-selection-mode"], [1, "model-selection-label"], [1, "fa-solid", "fa-sliders"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModel", "data", "valuePrimitive"], [1, "model-selection-value"], ["name", "modelSelectionMode", "textField", "text", "valueField", "value", 1, "model-selection-dropdown", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "entity-item", "prompt-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "fa-solid", "fa-comment-dots"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt", 3, "click"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "fa-solid", "fa-box"], [1, "payload-config-section"], [1, "subsection-title"], [1, "payload-config-grid"], ["FieldName", "PayloadScope", "Type", "textbox", "Caption", "Payload Scope", "Description", "Path to narrow payload (e.g., /functionalRequirements)", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMode", "Type", "dropdownlist", "Caption", "Validation Mode", "Description", "Action on validation failure", 3, "EditMode", "record"], ["FieldName", "FinalPayloadValidationMaxRetries", "Type", "numerictextbox", "Caption", "Max Retries", "Description", "Maximum validation retry attempts", 3, "EditMode", "record"], [1, "payload-paths-section"], [1, "fa-solid", "fa-route"], [1, "payload-field-group"], [1, "payload-field-label"], [1, "fa-solid", "fa-arrow-down"], [1, "field-description"], ["language", "json", 2, "height", "120px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-arrow-up"], [1, "fa-solid", "fa-eye"], [1, "fa-solid", "fa-pen"], [1, "payload-validation-section"], [1, "fa-solid", "fa-shield-check"], ["language", "json", 2, "height", "200px", "width", "100%", 3, "valueChange", "value", "readonly", "lineWrapping"], [1, "fa-solid", "fa-shield-halved"], [1, "form-fields-grid"], ["FieldName", "MaxCostPerRun", "Type", "numerictextbox", "Caption", "Max Cost ($)", "Description", "Maximum cost per run", 3, "EditMode", "record"], ["FieldName", "MaxTokensPerRun", "Type", "numerictextbox", "Caption", "Max Tokens", "Description", "Maximum tokens per run", 3, "EditMode", "record"], ["FieldName", "MaxIterationsPerRun", "Type", "numerictextbox", "Caption", "Max Iterations", "Description", "Maximum prompt iterations", 3, "EditMode", "record"], ["FieldName", "MaxTimePerRun", "Type", "numerictextbox", "Caption", "Max Time (seconds)", "Description", "Maximum execution time", 3, "EditMode", "record"], ["FieldName", "Status", "Type", "dropdownlist", "Caption", "Status", "Description", "Agent availability status", 3, "EditMode", "record"], ["FieldName", "ExecutionMode", "Type", "dropdownlist", "Caption", "Execution Mode", "Description", "How sub-agents are executed", 3, "EditMode", "record"], ["FieldName", "ExecutionOrder", "Type", "numerictextbox", "Caption", "Execution Order", "Description", "Order when run with siblings", 3, "EditMode", "record"], ["FieldName", "ExposeAsAction", "Type", "checkbox", "Caption", "Expose as Action", "Description", "Make available as an action", 3, "EditMode", "record"], ["FieldName", "TypeID", "Type", "dropdownlist", "Caption", "Agent Type", "Description", "Category of this agent", "LinkType", "Record", "LinkEntityName", "MJ: AI Agent Types", 3, "EditMode", "record"], ["FieldName", "DriverClass", "Type", "textbox", "Caption", "Driver Class", "Description", "Custom implementation class", 3, "EditMode", "record"], ["FieldName", "IconClass", "Type", "textbox", "Caption", "Icon Class", "Description", "Font Awesome icon class", 3, "EditMode", "record"], ["FieldName", "Description", "Type", "textarea", "Caption", "Description", "Description", "Detailed agent description", 2, "grid-column", "span 2", 3, "EditMode", "record"], ["FieldName", "LogoURL", "Type", "textbox", "Caption", "Logo URL", "Description", "URL for agent logo image", 2, "grid-column", "span 2", 3, "EditMode", "record"], [1, "subsection-divider"], [1, "fa-solid", "fa-compress"], ["FieldName", "EnableContextCompression", "Type", "checkbox", "Caption", "Enable Compression", "Description", "Compress long conversations", 3, "valueChange", "EditMode", "record"], ["FieldName", "ContextCompressionMessageThreshold", "Type", "numerictextbox", "Caption", "Message Threshold", "Description", "Messages before compression", 3, "EditMode", "record"], ["FieldName", "ContextCompressionMessageRetentionCount", "Type", "numerictextbox", "Caption", "Messages to Keep", "Description", "Recent messages to retain", 3, "EditMode", "record"], ["FieldName", "ContextCompressionPromptID", "Type", "dropdownlist", "Caption", "Compression Prompt", "Description", "Prompt for summarization", "LinkType", "Record", "LinkEntityName", "AI Prompts", 3, "EditMode", "record"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
2970
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
2971
|
+
i0.ɵɵelement(1, "div", 3);
|
|
2972
|
+
i0.ɵɵtemplate(2, AIAgentFormComponentExtended_form_2_Template, 38, 18, "form", 4);
|
|
2840
2973
|
i0.ɵɵelementEnd();
|
|
2841
2974
|
} if (rf & 2) {
|
|
2842
2975
|
i0.ɵɵadvance(2);
|
|
@@ -2849,8 +2982,11 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
2849
2982
|
export { AIAgentFormComponentExtended };
|
|
2850
2983
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
2851
2984
|
type: Component,
|
|
2852
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Compact Header with Agent Overview -->\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n @if (hasLogoURL()) {\n <img [src]=\"record.LogoURL\" [alt]=\"record.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon()\"></i>\n }\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n class=\"agent-name-input\">\n </kendo-textbox>\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.ExecutionMode) {\n <span class=\"execution-mode\">\n <i [class]=\"getExecutionModeIcon(record.ExecutionMode)\"></i>\n {{ record.ExecutionMode }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button kendoButton themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <kendo-panelbar>\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History{{ executionHistoryCount > 0 ? ' (' + executionHistoryCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Review execution history, requests, and performance metrics for this agent.\n </div>\n </div>\n \n @if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\n } @else {\n <div class=\"timeline-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"timeline-item\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div>\n <div class=\"timeline-marker\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div>\n <div class=\"timeline-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n <span class=\"timeline-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</span>\n </div>\n <div class=\"timeline-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n {{ execution.Status || 'Unknown' }}\n </span>\n @if (execution.CompletedAt) {\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n {{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}\n </span>\n }\n <div class=\"timeline-actions\">\n <button class=\"btn-primary\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (execution.Result && !expandedExecutions[execution.ID]) {\n <div class=\"timeline-preview\">{{ getExecutionResultPreview(execution, true) }}</div>\n }\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"timeline-expanded-content\">\n @if (execution.Result) {\n <div class=\"result-section\">\n <h5>Result</h5>\n <mj-code-editor \n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n <div class=\"execution-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Started:</span>\n <span class=\"detail-value\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Completed:</span>\n <span class=\"detail-value\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Conversation:</span>\n <span class=\"detail-value\">{{ execution.ConversationID }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\">\n <span>View all {{ executionHistoryCount }} executions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Actions -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions{{ actionCount > 0 ? ' (' + actionCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n \n @if (actionCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents{{ subAgentCount > 0 ? ' (' + subAgentCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage hierarchical relationships with child agents that work under this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create Sub-Agent\n </button>\n }\n </div>\n </div>\n \n @if (subAgentCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Create sub-agents to build a hierarchical structure for complex workflows.</p>\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (subAgent of subAgents; track subAgent.ID) {\n <div class=\"entity-item sub-agent-item\" (click)=\"navigateToEntity('AI Agents', subAgent.ID)\">\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(subAgent)) {\n <img [src]=\"subAgent.LogoURL\" [alt]=\"subAgent.Name + ' logo'\" class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(subAgent)\"></i>\n }\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ subAgent.Name || 'Untitled Sub-Agent' }}</div>\n @if (subAgent.Description) {\n <div class=\"item-preview\">{{ subAgent.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (subAgent.Status) {\n <span class=\"status-tag\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ subAgent.Status }}\n </span>\n }\n @if (subAgent.ExecutionMode) {\n <span class=\"meta-tag\">{{ subAgent.ExecutionMode }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openSubAgentAdvancedSettings(subAgent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeleteSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeSubAgent(subAgent, $event)\"\n title=\"Remove sub-agent\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (subAgentCount > subAgents.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agents', '')\">\n <span>View all {{ subAgentCount }} sub-agents...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts{{ promptCount > 0 ? ' (' + promptCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [data]=\"modelSelectionModes\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n \n @if (promptCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n \n @if (learningCycleCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n \n @if (noteCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n\n <!-- Payload -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-box\"></i> Payload\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads and validation.\n </div>\n </div>\n \n <!-- Configuration Fields -->\n <div class=\"payload-config-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </h4>\n <div class=\"payload-config-grid\">\n <!-- Payload Scope -->\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"Payload Scope\"\n Description=\"Path to narrow payload (e.g., /functionalRequirements)\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Mode -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"Validation Mode\"\n Description=\"Action on validation failure\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Max Retries -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"Max Retries\"\n Description=\"Maximum validation retry attempts\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <!-- Path Configuration -->\n <div class=\"payload-paths-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-route\"></i> Path Configuration\n </h4>\n \n <!-- Downstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-down\"></i> Downstream Paths\n <span class=\"field-description\">JSON array of paths to pass to sub-agents</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-up\"></i> Upstream Paths\n <span class=\"field-description\">JSON array of paths to return to parent agent</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-eye\"></i> Self Read Paths\n <span class=\"field-description\">JSON array of paths this agent can read</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-pen\"></i> Self Write Paths\n <span class=\"field-description\">JSON array of paths this agent can write to</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Validation Rules -->\n <div class=\"payload-validation-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-shield-check\"></i> Final Payload Validation\n </h4>\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <span class=\"field-description\">JSON validation rules or schema for final payload validation</span>\n </label>\n <mj-code-editor \n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n <!-- Execution Guardrails (New Separate Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"MaxCostPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTokensPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxIterationsPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTimePerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n <!-- Configuration (Settings Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Advanced configuration settings for agent behavior and execution.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <!-- Core Settings -->\n <mj-form-field \n FieldName=\"Status\" \n Type=\"dropdownlist\"\n Caption=\"Status\"\n Description=\"Agent availability status\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"Execution Mode\"\n Description=\"How sub-agents are executed\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"Execution Order\"\n Description=\"Order when run with siblings\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"Expose as Action\"\n Description=\"Make available as an action\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"TypeID\" \n Type=\"dropdownlist\"\n Caption=\"Agent Type\"\n Description=\"Category of this agent\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"MJ: AI Agent Types\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"Driver Class\"\n Description=\"Custom implementation class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"Icon Class\"\n Description=\"Font Awesome icon class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"Description\"\n Description=\"Detailed agent description\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"Logo URL\"\n Description=\"URL for agent logo image\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n </div>\n\n <!-- Context Compression Settings -->\n <div class=\"subsection-divider\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-compress\"></i> Context Compression\n </h4>\n </div>\n\n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"Enable Compression\"\n Description=\"Compress long conversations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"Message Threshold\"\n Description=\"Messages before compression\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"Messages to Keep\"\n Description=\"Recent messages to retain\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionPromptID\" \n Type=\"dropdownlist\"\n Caption=\"Compression Prompt\"\n Description=\"Prompt for summarization\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"AI Prompts\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n\n </kendo-panelbar>\n </div>\n </form>\n\n</div>", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper i {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary:hover {\n background: #1976d2;\n}\n\n.action-button.secondary {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary:hover {\n background: #5a6268;\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n/* Kendo PanelBar Styling */\n::ng-deep .k-panelbar {\n border: none;\n background: transparent;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n::ng-deep .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n::ng-deep .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: white;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item .item-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item .item-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item .item-icon {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item .item-icon {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item .item-icon {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon i {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: white;\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: #2196f3;\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: #2196f3;\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker i {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card .card-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card .card-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon i {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: white;\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: #2196f3;\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: #6c757d;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.result-content,\n.error-content {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n \n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button {\n flex: 1;\n justify-content: center;\n }\n \n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n \n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content {\n padding: 20px 16px;\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon {\n width: 36px;\n height: 36px;\n }\n \n .item-icon i {\n font-size: 16px;\n }\n \n .item-title {\n font-size: 15px;\n }\n \n .item-preview {\n font-size: 13px;\n }\n \n .item-meta {\n gap: 8px;\n }\n \n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker i {\n font-size: 12px;\n }\n \n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date {\n align-self: flex-start;\n }\n \n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n"] }]
|
|
2853
|
-
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }, { type: i4.AIAgentManagementService }, { type: i5.AITestHarnessDialogService }],
|
|
2985
|
+
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.Type) {\n <span class=\"execution-mode\">\n Agent Type: {{ record.Type }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <button kendoButton themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <kendo-panelbar [keepItemContent]=\"true\">\n <!-- Custom Agent Type Section (if defined) -->\n @if (record.ID && agentType && agentType.UIFormSectionKey) {\n <kendo-panelbar-item \n [expanded]=\"agentType.UIFormSectionExpandedByDefault\" \n (stateChange)=\"onCustomSectionStateChange($event)\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-puzzle-piece\"></i> {{ agentType.Name }} Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content custom-agent-type-section\" [style.display]=\"'block'\">\n <ng-container #customSectionContainer></ng-container>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History{{ executionHistoryCount > 0 ? ' (' + executionHistoryCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content execution-history-panel\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Review execution history, requests, and performance metrics for this agent.\n </div>\n </div>\n \n @if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\n } @else {\n <div class=\"timeline-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"timeline-item\" [class.expanded]=\"expandedExecutions[execution.ID]\">\n <div>\n <div class=\"timeline-marker\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-header\" (click)=\"toggleExecutionExpanded(execution.ID)\">\n <div>\n <div class=\"timeline-title\">\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"expandedExecutions[execution.ID]\"></i>\n Execution #{{ execution.ID.substring(0, 8) }}\n <span class=\"timeline-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</span>\n </div>\n <div class=\"timeline-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n {{ execution.Status || 'Unknown' }}\n </span>\n @if (execution.CompletedAt) {\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n {{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}\n </span>\n }\n <div class=\"timeline-actions\">\n <button class=\"btn-primary\" (click)=\"openExecutionRecord(execution.ID); $event.stopPropagation()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n </div>\n @if (execution.Result && !expandedExecutions[execution.ID]) {\n <div class=\"timeline-preview\">{{ getExecutionResultPreview(execution, true) }}</div>\n }\n </div>\n </div>\n @if (expandedExecutions[execution.ID]) {\n <div class=\"timeline-expanded-content\">\n @if (execution.Result) {\n <div class=\"result-section\">\n <h5>Result</h5>\n <mj-code-editor \n [value]=\"getExecutionResultPreview(execution, false)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"max-height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (execution.ErrorMessage) {\n <div class=\"error-section\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h5>\n <div class=\"error-content\">{{ execution.ErrorMessage }}</div>\n </div>\n }\n <div class=\"execution-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Started:</span>\n <span class=\"detail-value\">{{ execution.StartedAt | date:'medium' }}</span>\n </div>\n @if (execution.CompletedAt) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Completed:</span>\n <span class=\"detail-value\">{{ execution.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (execution.ConversationID) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Conversation:</span>\n <span class=\"detail-value\">{{ execution.ConversationID }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('MJ: AI Agent Runs', '')\">\n <span>View all {{ executionHistoryCount }} executions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Actions -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions{{ actionCount > 0 ? ' (' + actionCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </button>\n }\n </div>\n </div>\n \n @if (actionCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode && UserCanCreateActions) {\n <button kendoButton themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('Actions', action.ID)\">\n <div class=\"item-icon\">\n <i [class]=\"getActionIcon(action)\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanDeleteActions) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents{{ subAgentCount > 0 ? ' (' + subAgentCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage hierarchical relationships with child agents that work under this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create Sub-Agent\n </button>\n }\n </div>\n </div>\n \n @if (subAgentCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Create sub-agents to build a hierarchical structure for complex workflows.</p>\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton themeColor=\"primary\" (click)=\"addSubAgents()\">\n <i class=\"fa-solid fa-plus\"></i> Add Subagent\n </button>\n <button kendoButton themeColor=\"secondary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (subAgent of subAgents; track subAgent.ID) {\n <div class=\"entity-item sub-agent-item\" (click)=\"navigateToEntity('AI Agents', subAgent.ID)\">\n <div class=\"item-icon\">\n @if (hasSubAgentLogoURL(subAgent)) {\n <img [src]=\"subAgent.LogoURL\" [alt]=\"subAgent.Name + ' logo'\" class=\"sub-agent-logo\">\n } @else {\n <i [class]=\"getSubAgentIcon(subAgent)\"></i>\n }\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ subAgent.Name || 'Untitled Sub-Agent' }}</div>\n @if (subAgent.Description) {\n <div class=\"item-preview\">{{ subAgent.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (subAgent.Status) {\n <span class=\"status-tag\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ subAgent.Status }}\n </span>\n }\n @if (subAgent.ExecutionMode) {\n <span class=\"meta-tag\">{{ subAgent.ExecutionMode }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreateSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openSubAgentAdvancedSettings(subAgent, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeleteSubAgents) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeSubAgent(subAgent, $event)\"\n title=\"Remove sub-agent\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (subAgentCount > subAgents.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agents', '')\">\n <span>View all {{ subAgentCount }} sub-agents...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Prompts (With Model Selection) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts{{ promptCount > 0 ? ' (' + promptCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"prompt-controls\">\n <!-- Model Selection Mode Control -->\n <div class=\"model-selection-mode\">\n <label class=\"model-selection-label\">\n <i class=\"fa-solid fa-sliders\"></i>\n Model Selection:\n </label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.ModelSelectionMode\"\n name=\"modelSelectionMode\"\n [data]=\"modelSelectionModes\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"model-selection-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"model-selection-value\">{{ record.ModelSelectionMode || 'Agent Type' }}</span>\n }\n </div>\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </button>\n }\n </div>\n </div>\n \n @if (promptCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode && UserCanCreateNewPrompts) {\n <button kendoButton themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Name }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode && UserCanCreatePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openPromptAdvancedSettings(prompt, $event)\"\n title=\"Advanced settings\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n }\n @if (EditMode && UserCanDeletePrompts) {\n <button kendoButton\n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n \n @if (learningCycleCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </button>\n }\n </div>\n </div>\n \n @if (noteCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode && UserCanCreateNotes) {\n <button kendoButton themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n\n <!-- Payload -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-box\"></i> Payload\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Configure how this agent handles data payloads and validation.\n </div>\n </div>\n \n <!-- Configuration Fields -->\n <div class=\"payload-config-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </h4>\n <div class=\"payload-config-grid\">\n <!-- Payload Scope -->\n <mj-form-field \n FieldName=\"PayloadScope\" \n Type=\"textbox\"\n Caption=\"Payload Scope\"\n Description=\"Path to narrow payload (e.g., /functionalRequirements)\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Mode -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMode\" \n Type=\"dropdownlist\"\n Caption=\"Validation Mode\"\n Description=\"Action on validation failure\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <!-- Final Payload Validation Max Retries -->\n <mj-form-field \n FieldName=\"FinalPayloadValidationMaxRetries\" \n Type=\"numerictextbox\"\n Caption=\"Max Retries\"\n Description=\"Maximum validation retry attempts\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n\n <!-- Path Configuration -->\n <div class=\"payload-paths-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-route\"></i> Path Configuration\n </h4>\n \n <!-- Downstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-down\"></i> Downstream Paths\n <span class=\"field-description\">JSON array of paths to pass to sub-agents</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadDownstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadDownstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Upstream Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-arrow-up\"></i> Upstream Paths\n <span class=\"field-description\">JSON array of paths to return to parent agent</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadUpstreamPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadUpstreamPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Read Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-eye\"></i> Self Read Paths\n <span class=\"field-description\">JSON array of paths this agent can read</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfReadPaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfReadPaths', $event)\">\n </mj-code-editor>\n </div>\n\n <!-- Self Write Paths -->\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <i class=\"fa-solid fa-pen\"></i> Self Write Paths\n <span class=\"field-description\">JSON array of paths this agent can write to</span>\n </label>\n <mj-code-editor \n [value]=\"record.PayloadSelfWritePaths || '[]'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 120px; width: 100%;\"\n (valueChange)=\"updatePayloadField('PayloadSelfWritePaths', $event)\">\n </mj-code-editor>\n </div>\n </div>\n\n <!-- Validation Rules -->\n <div class=\"payload-validation-section\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-shield-check\"></i> Final Payload Validation\n </h4>\n <div class=\"payload-field-group\">\n <label class=\"payload-field-label\">\n <span class=\"field-description\">JSON validation rules or schema for final payload validation</span>\n </label>\n <mj-code-editor \n [value]=\"record.FinalPayloadValidation || '{}'\"\n [readonly]=\"!EditMode\"\n language=\"json\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\"\n (valueChange)=\"updatePayloadField('FinalPayloadValidation', $event)\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n <!-- Execution Guardrails (New Separate Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-shield-halved\"></i> Execution Guardrails\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Set limits to prevent runaway agent executions and control resource usage.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"MaxCostPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Cost ($)\"\n Description=\"Maximum cost per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTokensPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Tokens\"\n Description=\"Maximum tokens per run\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxIterationsPerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Iterations\"\n Description=\"Maximum prompt iterations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"MaxTimePerRun\" \n Type=\"numerictextbox\"\n Caption=\"Max Time (seconds)\"\n Description=\"Maximum execution time\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n <!-- Configuration (Settings Panel) -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-cog\"></i> Configuration\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Advanced configuration settings for agent behavior and execution.\n </div>\n </div>\n \n <div class=\"form-fields-grid\">\n <!-- Core Settings -->\n <mj-form-field \n FieldName=\"Status\" \n Type=\"dropdownlist\"\n Caption=\"Status\"\n Description=\"Agent availability status\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionMode\" \n Type=\"dropdownlist\"\n Caption=\"Execution Mode\"\n Description=\"How sub-agents are executed\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExecutionOrder\" \n Type=\"numerictextbox\"\n Caption=\"Execution Order\"\n Description=\"Order when run with siblings\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ExposeAsAction\" \n Type=\"checkbox\"\n Caption=\"Expose as Action\"\n Description=\"Make available as an action\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"TypeID\" \n Type=\"dropdownlist\"\n Caption=\"Agent Type\"\n Description=\"Category of this agent\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"MJ: AI Agent Types\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"DriverClass\" \n Type=\"textbox\"\n Caption=\"Driver Class\"\n Description=\"Custom implementation class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"IconClass\" \n Type=\"textbox\"\n Caption=\"Icon Class\"\n Description=\"Font Awesome icon class\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"Description\" \n Type=\"textarea\"\n Caption=\"Description\"\n Description=\"Detailed agent description\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"LogoURL\" \n Type=\"textbox\"\n Caption=\"Logo URL\"\n Description=\"URL for agent logo image\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n style=\"grid-column: span 2;\">\n </mj-form-field>\n </div>\n\n <!-- Context Compression Settings -->\n <div class=\"subsection-divider\">\n <h4 class=\"subsection-title\">\n <i class=\"fa-solid fa-compress\"></i> Context Compression\n </h4>\n </div>\n\n <div class=\"form-fields-grid\">\n <mj-form-field \n FieldName=\"EnableContextCompression\" \n Type=\"checkbox\"\n Caption=\"Enable Compression\"\n Description=\"Compress long conversations\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n (valueChange)=\"onContextCompressionToggle($event)\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageThreshold\" \n Type=\"numerictextbox\"\n Caption=\"Message Threshold\"\n Description=\"Messages before compression\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionMessageRetentionCount\" \n Type=\"numerictextbox\"\n Caption=\"Messages to Keep\"\n Description=\"Recent messages to retain\"\n [EditMode]=\"EditMode\"\n [record]=\"record\">\n </mj-form-field>\n\n <mj-form-field \n FieldName=\"ContextCompressionPromptID\" \n Type=\"dropdownlist\"\n Caption=\"Compression Prompt\"\n Description=\"Prompt for summarization\"\n [EditMode]=\"EditMode\"\n [record]=\"record\"\n LinkType=\"Record\"\n LinkEntityName=\"AI Prompts\">\n </mj-form-field>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n\n\n\n </kendo-panelbar>\n </div>\n </form>\n\n</div>", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper i {\n color: white;\n font-size: 24px;\n}\n\n.agent-icon-wrapper img.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n/* Prompt Controls Section */\n.prompt-controls {\n flex: 1;\n margin-right: 16px;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary:hover {\n background: #1976d2;\n}\n\n.action-button.secondary {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary:hover {\n background: #5a6268;\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n/* Kendo PanelBar Styling */\n::ng-deep .k-panelbar {\n border: none;\n background: transparent;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n::ng-deep .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n::ng-deep .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: white;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item .item-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item .item-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item .item-icon {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item .item-icon {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item .item-icon {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon i {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: white;\n}\n\n.item-icon img.sub-agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 6px;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* Payload Section Styles */\n.payload-config-section,\n.payload-paths-section,\n.payload-validation-section {\n margin-bottom: 32px;\n}\n\n.subsection-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 16px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.subsection-title i {\n color: #2196f3;\n}\n\n.subsection-divider {\n margin-top: 32px;\n margin-bottom: 16px;\n padding-top: 24px;\n border-top: 1px solid #e0e6ed;\n}\n\n.payload-config-grid {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.payload-field-group {\n margin-bottom: 20px;\n}\n\n.payload-field-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n}\n\n.payload-field-label i {\n color: #6c757d;\n font-size: 16px;\n}\n\n.field-description {\n font-size: 12px;\n font-weight: normal;\n color: #6c757d;\n margin-left: auto;\n}\n\n/* Code editor styling */\n.payload-field-group mj-code-editor {\n border: 1px solid #dee2e6;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.payload-field-group mj-code-editor:hover {\n border-color: #2196f3;\n}\n\n/* Payload textarea styling */\n.payload-field-group mj-form-field ::ng-deep textarea {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n min-height: 120px;\n resize: vertical;\n}\n\n/* Execution History Panel */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker i {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card .card-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card .card-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon i {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: white;\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: #2196f3;\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n flex-direction: column;\n margin-bottom: 24px;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n border: 1px solid transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n border-color: #e0e6ed;\n}\n\n.timeline-item.expanded {\n background: #f8f9fa;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.1);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-item > div:first-child {\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: #6c757d;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: flex-start;\n}\n\n.timeline-header {\n flex: 1;\n cursor: pointer;\n}\n\n.timeline-header > div:first-child {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.expand-icon {\n transition: transform 0.3s ease;\n margin-right: 8px;\n color: #6c757d;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n margin-left: auto;\n}\n\n.timeline-preview {\n font-size: 13px;\n color: #6c757d;\n line-height: 1.5;\n margin-top: 8px;\n padding: 8px 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e0e6ed;\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Expanded Content Styles */\n.timeline-expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.result-section,\n.error-section {\n margin-bottom: 20px;\n}\n\n.result-section h5,\n.error-section h5 {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.error-section h5 {\n color: #dc3545;\n}\n\n.result-content,\n.error-content {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 14px;\n line-height: 1.6;\n color: #495057;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Code editor styling within result section */\n.result-section mj-code-editor {\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-content {\n background: #f8d7da;\n border-color: #f5c6cb;\n color: #721c24;\n}\n\n.execution-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n min-width: 80px;\n}\n\n.detail-value {\n font-size: 14px;\n color: #495057;\n word-break: break-all;\n}\n\n.timeline-actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196f3;\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n}\n\n.btn-primary i {\n font-size: 12px;\n}\n\n/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n \n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button {\n flex: 1;\n justify-content: center;\n }\n \n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n \n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content {\n padding: 20px 16px;\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon {\n width: 36px;\n height: 36px;\n }\n \n .item-icon i {\n font-size: 16px;\n }\n \n .item-title {\n font-size: 15px;\n }\n \n .item-preview {\n font-size: 13px;\n }\n \n .item-meta {\n gap: 8px;\n }\n \n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker i {\n font-size: 12px;\n }\n \n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date {\n align-self: flex-start;\n }\n \n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}\n\n/* Execution History Panel - Max Height and Scroll */\n.execution-history-panel {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Custom scrollbar for execution history */\n.execution-history-panel::-webkit-scrollbar {\n width: 8px;\n}\n\n.execution-history-panel::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 4px;\n}\n\n.execution-history-panel::-webkit-scrollbar-thumb:hover {\n background: #a0a0a0;\n}\n\n"] }]
|
|
2986
|
+
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }, { type: i4.AIAgentManagementService }, { type: i5.AITestHarnessDialogService }], { customSectionContainer: [{
|
|
2987
|
+
type: ViewChild,
|
|
2988
|
+
args: ['customSectionContainer', { read: ViewContainerRef }]
|
|
2989
|
+
}] }); })();
|
|
2854
2990
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 52 }); })();
|
|
2855
2991
|
export function LoadAIAgentFormComponentExtended() {
|
|
2856
2992
|
// This function is called to ensure the component is loaded and registered
|