@memberjunction/ng-core-entity-forms 2.50.0 → 2.52.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 +215 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +171 -11
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1411 -145
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +40 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +965 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +80 -5
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +938 -448
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +40 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +530 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts +90 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-form.component.js +1579 -0
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +32 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.js +320 -0
- package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +15 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +96 -0
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts +50 -0
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -0
- package/dist/lib/custom/Actions/action-test-harness.component.js +708 -0
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts +244 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js +1327 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-monitor.component.js.map +1 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts +19 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js +458 -0
- package/dist/lib/custom/ai-test-harness/agent-execution-node.component.js.map +1 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts +78 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js +157 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness-dialog.component.js.map +1 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts +589 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js +3140 -0
- package/dist/lib/custom/ai-test-harness/ai-test-harness.component.js.map +1 -0
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts +8 -0
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js +57 -0
- package/dist/lib/custom/ai-test-harness/json-viewer-window.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +33 -21
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +97 -18
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +35 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +290 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -0
- package/dist/lib/custom/test-harness-dialog.service.d.ts +111 -0
- package/dist/lib/custom/test-harness-dialog.service.d.ts.map +1 -0
- package/dist/lib/custom/test-harness-dialog.service.js +211 -0
- package/dist/lib/custom/test-harness-dialog.service.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +12 -11
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts +54 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js +492 -0
- package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +8 -7
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +8 -7
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +8 -7
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +12 -11
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +12 -11
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +94 -4
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +12 -11
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +103 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +12 -11
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +16 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -11
- package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.d.ts +0 -52
- package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.js +0 -590
- package/dist/lib/custom/AIAgents/ai-agent-execution-dialog.component.js.map +0 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts +0 -94
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js +0 -792
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js.map +0 -1
|
@@ -7,220 +7,1117 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { Component } from '@angular/core';
|
|
8
8
|
import { RegisterClass } from '@memberjunction/global';
|
|
9
9
|
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
10
|
-
import { Metadata } from '@memberjunction/core';
|
|
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';
|
|
13
|
+
import { EntitySelectorDialogComponent } from '../shared/entity-selector-dialog.component';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@
|
|
15
|
-
import * as i2 from "@angular/
|
|
16
|
-
import * as i3 from "@progress/kendo-angular-
|
|
17
|
-
import * as i4 from "@
|
|
18
|
-
import * as i5 from "@
|
|
19
|
-
import * as i6 from "@progress/kendo-angular-
|
|
20
|
-
import * as i7 from "@
|
|
21
|
-
import * as i8 from "@
|
|
22
|
-
import * as i9 from "@memberjunction/ng-
|
|
23
|
-
import * as i10 from "
|
|
15
|
+
import * as i1 from "@memberjunction/ng-shared";
|
|
16
|
+
import * as i2 from "@angular/router";
|
|
17
|
+
import * as i3 from "@progress/kendo-angular-dialog";
|
|
18
|
+
import * as i4 from "@angular/common";
|
|
19
|
+
import * as i5 from "@angular/forms";
|
|
20
|
+
import * as i6 from "@progress/kendo-angular-layout";
|
|
21
|
+
import * as i7 from "@progress/kendo-angular-inputs";
|
|
22
|
+
import * as i8 from "@progress/kendo-angular-buttons";
|
|
23
|
+
import * as i9 from "@memberjunction/ng-form-toolbar";
|
|
24
|
+
import * as i10 from "@memberjunction/ng-container-directives";
|
|
25
|
+
import * as i11 from "../ai-test-harness/ai-test-harness.component";
|
|
24
26
|
const _c0 = ["*"];
|
|
25
|
-
const
|
|
26
|
-
const _c2 = () => ({ text: "Pending", value: "Pending" });
|
|
27
|
-
const _c3 = () => ({ text: "Disabled", value: "Disabled" });
|
|
28
|
-
const _c4 = (a0, a1, a2) => [a0, a1, a2];
|
|
27
|
+
const _forTrack0 = ($index, $item) => $item.ID;
|
|
29
28
|
function AIAgentFormComponentExtended_form_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
const
|
|
31
|
-
i0.ɵɵelementStart(0, "kendo-textbox",
|
|
32
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_1_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
29
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
30
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 27);
|
|
31
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_1_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
33
32
|
i0.ɵɵelementEnd();
|
|
34
33
|
} if (rf & 2) {
|
|
35
|
-
const
|
|
36
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
34
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
35
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
|
|
37
36
|
} }
|
|
38
37
|
function AIAgentFormComponentExtended_form_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
-
i0.ɵɵelementStart(0, "
|
|
38
|
+
i0.ɵɵelementStart(0, "h1", 13);
|
|
40
39
|
i0.ɵɵtext(1);
|
|
41
40
|
i0.ɵɵelementEnd();
|
|
42
|
-
|
|
43
|
-
i0.ɵɵ
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled AI Agent");
|
|
45
|
+
} }
|
|
46
|
+
function AIAgentFormComponentExtended_form_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "span", 28);
|
|
48
|
+
i0.ɵɵelement(1, "i", 29);
|
|
49
|
+
i0.ɵɵtext(2);
|
|
44
50
|
i0.ɵɵelementEnd();
|
|
45
51
|
} if (rf & 2) {
|
|
46
|
-
const
|
|
52
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
53
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getStatusBadgeColor());
|
|
54
|
+
i0.ɵɵadvance(2);
|
|
55
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status, " ");
|
|
56
|
+
} }
|
|
57
|
+
function AIAgentFormComponentExtended_form_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelementStart(0, "span", 16);
|
|
59
|
+
i0.ɵɵelement(1, "i");
|
|
60
|
+
i0.ɵɵtext(2);
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
47
64
|
i0.ɵɵadvance();
|
|
48
|
-
i0.ɵɵ
|
|
65
|
+
i0.ɵɵclassMap(ctx_r2.getExecutionModeIcon(ctx_r2.record.ExecutionMode));
|
|
49
66
|
i0.ɵɵadvance();
|
|
50
|
-
i0.ɵɵ
|
|
67
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.ExecutionMode, " ");
|
|
68
|
+
} }
|
|
69
|
+
function AIAgentFormComponentExtended_form_1_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵelementStart(0, "span", 17);
|
|
71
|
+
i0.ɵɵelement(1, "i", 30);
|
|
72
|
+
i0.ɵɵtext(2);
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
} if (rf & 2) {
|
|
75
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
76
|
+
i0.ɵɵadvance(2);
|
|
77
|
+
i0.ɵɵtextInterpolate1(" Child of ", ctx_r2.record.Parent, " ");
|
|
78
|
+
} }
|
|
79
|
+
function AIAgentFormComponentExtended_form_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
81
|
+
i0.ɵɵelementStart(0, "kendo-button", 31);
|
|
82
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_16_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.openTestHarness()); });
|
|
83
|
+
i0.ɵɵelement(1, "i", 32);
|
|
84
|
+
i0.ɵɵtext(2, " Run ");
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
88
|
+
i0.ɵɵproperty("disabled", ctx_r2.record.Status !== "Active");
|
|
89
|
+
} }
|
|
90
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelement(0, "i", 33);
|
|
92
|
+
i0.ɵɵtext(1);
|
|
93
|
+
} if (rf & 2) {
|
|
94
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
51
95
|
i0.ɵɵadvance();
|
|
52
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
96
|
+
i0.ɵɵtextInterpolate1(" Prompts", ctx_r2.promptCount > 0 ? " (" + ctx_r2.promptCount + ")" : "", " ");
|
|
53
97
|
} }
|
|
54
|
-
function
|
|
55
|
-
const
|
|
56
|
-
i0.ɵɵelementStart(0, "
|
|
57
|
-
i0.ɵɵ
|
|
98
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
100
|
+
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
101
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.addPrompt()); });
|
|
102
|
+
i0.ɵɵelement(1, "i", 41);
|
|
103
|
+
i0.ɵɵtext(2, " Add Prompt ");
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
} }
|
|
106
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
108
|
+
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
109
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addPrompt()); });
|
|
110
|
+
i0.ɵɵelement(1, "i", 41);
|
|
111
|
+
i0.ɵɵtext(2, " Create First Prompt ");
|
|
112
|
+
i0.ɵɵelementEnd();
|
|
113
|
+
} }
|
|
114
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
116
|
+
i0.ɵɵelement(1, "i", 33);
|
|
117
|
+
i0.ɵɵelementStart(2, "h4");
|
|
118
|
+
i0.ɵɵtext(3, "No Prompts Configured");
|
|
119
|
+
i0.ɵɵelementEnd();
|
|
120
|
+
i0.ɵɵelementStart(4, "p");
|
|
121
|
+
i0.ɵɵtext(5, "Add prompts to define how this agent processes requests and generates responses.");
|
|
122
|
+
i0.ɵɵelementEnd();
|
|
123
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
58
124
|
i0.ɵɵelementEnd();
|
|
59
|
-
i0.ɵɵelementStart(4, "kendo-dropdownlist", 27);
|
|
60
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AIAgentFormComponentExtended_form_1_Conditional_11_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
61
|
-
i0.ɵɵelementEnd()()();
|
|
62
125
|
} if (rf & 2) {
|
|
63
|
-
const
|
|
64
|
-
i0.ɵɵadvance(
|
|
65
|
-
i0.ɵɵ
|
|
66
|
-
i0.ɵɵproperty("data", i0.ɵɵpureFunction3(6, _c4, i0.ɵɵpureFunction0(3, _c1), i0.ɵɵpureFunction0(4, _c2), i0.ɵɵpureFunction0(5, _c3)))("valuePrimitive", true);
|
|
126
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
127
|
+
i0.ɵɵadvance(6);
|
|
128
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
67
129
|
} }
|
|
68
|
-
function
|
|
69
|
-
i0.ɵɵelementStart(0, "
|
|
130
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
70
132
|
i0.ɵɵtext(1);
|
|
71
133
|
i0.ɵɵelementEnd();
|
|
72
134
|
} if (rf & 2) {
|
|
73
|
-
const
|
|
135
|
+
const prompt_r8 = i0.ɵɵnextContext().$implicit;
|
|
74
136
|
i0.ɵɵadvance();
|
|
75
|
-
i0.ɵɵ
|
|
137
|
+
i0.ɵɵtextInterpolate2("", prompt_r8.TemplateText.substring(0, 120), "", prompt_r8.TemplateText.length > 120 ? "..." : "", "");
|
|
76
138
|
} }
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
i0.ɵɵ
|
|
80
|
-
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_15_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.executeAIAgent()); });
|
|
81
|
-
i0.ɵɵelement(1, "i", 29);
|
|
82
|
-
i0.ɵɵtext(2, " Execute Agent ");
|
|
139
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
141
|
+
i0.ɵɵtext(1);
|
|
83
142
|
i0.ɵɵelementEnd();
|
|
143
|
+
} if (rf & 2) {
|
|
144
|
+
const prompt_r8 = i0.ɵɵnextContext().$implicit;
|
|
145
|
+
i0.ɵɵadvance();
|
|
146
|
+
i0.ɵɵtextInterpolate(prompt_r8.PromptRole);
|
|
84
147
|
} }
|
|
85
|
-
function
|
|
86
|
-
i0.ɵɵ
|
|
87
|
-
i0.ɵɵ
|
|
88
|
-
i0.ɵɵ
|
|
148
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
150
|
+
i0.ɵɵelementStart(0, "kendo-button", 57);
|
|
151
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template_kendo_button_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const prompt_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.removePrompt(prompt_r8, $event)); });
|
|
152
|
+
i0.ɵɵelement(1, "i", 58);
|
|
89
153
|
i0.ɵɵelementEnd();
|
|
90
|
-
} if (rf & 2) {
|
|
91
|
-
i0.ɵɵproperty("disabled", true);
|
|
92
154
|
} }
|
|
93
|
-
function
|
|
94
|
-
i0.ɵɵ
|
|
95
|
-
i0.ɵɵ
|
|
96
|
-
i0.ɵɵ
|
|
155
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
157
|
+
i0.ɵɵelementStart(0, "div", 46);
|
|
158
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const prompt_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Prompts", prompt_r8.ID)); });
|
|
159
|
+
i0.ɵɵelementStart(1, "div", 47);
|
|
160
|
+
i0.ɵɵelement(2, "i", 48);
|
|
97
161
|
i0.ɵɵelementEnd();
|
|
162
|
+
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
163
|
+
i0.ɵɵtext(5);
|
|
164
|
+
i0.ɵɵelementEnd();
|
|
165
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 2, "div", 51);
|
|
166
|
+
i0.ɵɵelementStart(7, "div", 52);
|
|
167
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 53);
|
|
168
|
+
i0.ɵɵelementEnd()();
|
|
169
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
170
|
+
i0.ɵɵtemplate(10, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Conditional_10_Template, 2, 0, "kendo-button", 55);
|
|
171
|
+
i0.ɵɵelement(11, "i", 56);
|
|
172
|
+
i0.ɵɵelementEnd()();
|
|
173
|
+
} if (rf & 2) {
|
|
174
|
+
const prompt_r8 = ctx.$implicit;
|
|
175
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
176
|
+
i0.ɵɵadvance(5);
|
|
177
|
+
i0.ɵɵtextInterpolate(prompt_r8.Type || "System Prompt");
|
|
178
|
+
i0.ɵɵadvance();
|
|
179
|
+
i0.ɵɵconditional(prompt_r8.TemplateText ? 6 : -1);
|
|
180
|
+
i0.ɵɵadvance(2);
|
|
181
|
+
i0.ɵɵconditional(prompt_r8.PromptRole ? 8 : -1);
|
|
182
|
+
i0.ɵɵadvance(2);
|
|
183
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 10 : -1);
|
|
98
184
|
} }
|
|
99
|
-
function
|
|
100
|
-
i0.ɵɵ
|
|
101
|
-
i0.ɵɵ
|
|
185
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
186
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
187
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
188
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Prompts", "")); });
|
|
189
|
+
i0.ɵɵelementStart(1, "span");
|
|
190
|
+
i0.ɵɵtext(2);
|
|
191
|
+
i0.ɵɵelementEnd()();
|
|
192
|
+
} if (rf & 2) {
|
|
193
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
194
|
+
i0.ɵɵadvance(2);
|
|
195
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.promptCount, " prompts...");
|
|
102
196
|
} }
|
|
103
|
-
function
|
|
104
|
-
i0.ɵɵelementStart(0, "div",
|
|
105
|
-
i0.ɵɵ
|
|
197
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
199
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_For_2_Template, 12, 4, "div", 44, _forTrack0);
|
|
200
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
106
201
|
i0.ɵɵelementEnd();
|
|
107
202
|
} if (rf & 2) {
|
|
108
|
-
const
|
|
203
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
109
204
|
i0.ɵɵadvance();
|
|
110
|
-
i0.ɵɵ
|
|
205
|
+
i0.ɵɵrepeater(ctx_r2.agentPrompts);
|
|
206
|
+
i0.ɵɵadvance(2);
|
|
207
|
+
i0.ɵɵconditional(ctx_r2.promptCount > ctx_r2.agentPrompts.length ? 3 : -1);
|
|
208
|
+
} }
|
|
209
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
210
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
|
|
211
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 37);
|
|
212
|
+
i0.ɵɵelementEnd()();
|
|
213
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_4_Template, 7, 1, "div", 38)(5, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
214
|
+
i0.ɵɵelementEnd();
|
|
215
|
+
} if (rf & 2) {
|
|
216
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
217
|
+
i0.ɵɵadvance(3);
|
|
218
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 3 : -1);
|
|
219
|
+
i0.ɵɵadvance();
|
|
220
|
+
i0.ɵɵconditional(ctx_r2.promptCount === 0 ? 4 : 5);
|
|
221
|
+
} }
|
|
222
|
+
function AIAgentFormComponentExtended_form_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
224
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_21_ng_template_2_Template, 6, 2, "ng-template", 26);
|
|
225
|
+
i0.ɵɵelementEnd();
|
|
226
|
+
} if (rf & 2) {
|
|
227
|
+
i0.ɵɵproperty("expanded", true);
|
|
111
228
|
} }
|
|
112
229
|
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
-
i0.ɵɵ
|
|
114
|
-
i0.ɵɵ
|
|
115
|
-
|
|
230
|
+
i0.ɵɵelement(0, "i", 60);
|
|
231
|
+
i0.ɵɵtext(1);
|
|
232
|
+
} if (rf & 2) {
|
|
233
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
234
|
+
i0.ɵɵadvance();
|
|
235
|
+
i0.ɵɵtextInterpolate1(" Actions", ctx_r2.actionCount > 0 ? " (" + ctx_r2.actionCount + ")" : "", " ");
|
|
236
|
+
} }
|
|
237
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
239
|
+
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
240
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_3_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.configureActions()); });
|
|
241
|
+
i0.ɵɵelement(1, "i", 41);
|
|
242
|
+
i0.ɵɵtext(2, " Add Action ");
|
|
116
243
|
i0.ɵɵelementEnd();
|
|
117
244
|
} }
|
|
118
|
-
function
|
|
119
|
-
i0.ɵɵ
|
|
120
|
-
i0.ɵɵ
|
|
121
|
-
i0.ɵɵ
|
|
245
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
246
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
247
|
+
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
248
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.configureActions()); });
|
|
249
|
+
i0.ɵɵelement(1, "i", 41);
|
|
250
|
+
i0.ɵɵtext(2, " Configure First Action ");
|
|
251
|
+
i0.ɵɵelementEnd();
|
|
252
|
+
} }
|
|
253
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
255
|
+
i0.ɵɵelement(1, "i", 60);
|
|
256
|
+
i0.ɵɵelementStart(2, "h4");
|
|
257
|
+
i0.ɵɵtext(3, "No Actions Configured");
|
|
258
|
+
i0.ɵɵelementEnd();
|
|
259
|
+
i0.ɵɵelementStart(4, "p");
|
|
260
|
+
i0.ɵɵtext(5, "Add actions to enable this agent to perform specific tasks and operations.");
|
|
261
|
+
i0.ɵɵelementEnd();
|
|
262
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_4_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
263
|
+
i0.ɵɵelementEnd();
|
|
264
|
+
} if (rf & 2) {
|
|
265
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
266
|
+
i0.ɵɵadvance(6);
|
|
267
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
268
|
+
} }
|
|
269
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
271
|
+
i0.ɵɵtext(1);
|
|
272
|
+
i0.ɵɵelementEnd();
|
|
273
|
+
} if (rf & 2) {
|
|
274
|
+
const action_r14 = i0.ɵɵnextContext().$implicit;
|
|
275
|
+
i0.ɵɵadvance();
|
|
276
|
+
i0.ɵɵtextInterpolate(action_r14.Description);
|
|
277
|
+
} }
|
|
278
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
279
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
280
|
+
i0.ɵɵtext(1);
|
|
281
|
+
i0.ɵɵelementEnd();
|
|
282
|
+
} if (rf & 2) {
|
|
283
|
+
const action_r14 = i0.ɵɵnextContext().$implicit;
|
|
284
|
+
i0.ɵɵadvance();
|
|
285
|
+
i0.ɵɵtextInterpolate(action_r14.Type);
|
|
286
|
+
} }
|
|
287
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
289
|
+
i0.ɵɵelementStart(0, "kendo-button", 66);
|
|
290
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template_kendo_button_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const action_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.removeAction(action_r14, $event)); });
|
|
291
|
+
i0.ɵɵelement(1, "i", 58);
|
|
292
|
+
i0.ɵɵelementEnd();
|
|
293
|
+
} }
|
|
294
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
295
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
296
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
297
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const action_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("Actions", action_r14.ID)); });
|
|
298
|
+
i0.ɵɵelementStart(1, "div", 47);
|
|
299
|
+
i0.ɵɵelement(2, "i", 60);
|
|
300
|
+
i0.ɵɵelementEnd();
|
|
301
|
+
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
302
|
+
i0.ɵɵtext(5);
|
|
303
|
+
i0.ɵɵelementEnd();
|
|
304
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_6_Template, 2, 1, "div", 51);
|
|
305
|
+
i0.ɵɵelementStart(7, "div", 52);
|
|
306
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 53);
|
|
307
|
+
i0.ɵɵelementStart(9, "span", 63);
|
|
308
|
+
i0.ɵɵelement(10, "i", 64);
|
|
309
|
+
i0.ɵɵtext(11);
|
|
310
|
+
i0.ɵɵelementEnd()()();
|
|
311
|
+
i0.ɵɵelementStart(12, "div", 54);
|
|
312
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 0, "kendo-button", 65);
|
|
313
|
+
i0.ɵɵelement(14, "i", 56);
|
|
314
|
+
i0.ɵɵelementEnd()();
|
|
315
|
+
} if (rf & 2) {
|
|
316
|
+
const action_r14 = ctx.$implicit;
|
|
317
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
318
|
+
i0.ɵɵadvance(5);
|
|
319
|
+
i0.ɵɵtextInterpolate(action_r14.Name || "Untitled Action");
|
|
320
|
+
i0.ɵɵadvance();
|
|
321
|
+
i0.ɵɵconditional(action_r14.Description ? 6 : -1);
|
|
322
|
+
i0.ɵɵadvance(2);
|
|
323
|
+
i0.ɵɵconditional(action_r14.Type ? 8 : -1);
|
|
324
|
+
i0.ɵɵadvance();
|
|
325
|
+
i0.ɵɵclassProp("active", action_r14.Status === "Active")("inactive", action_r14.Status !== "Active");
|
|
326
|
+
i0.ɵɵadvance();
|
|
327
|
+
i0.ɵɵclassProp("fa-check-circle", action_r14.Status === "Active")("fa-times-circle", action_r14.Status !== "Active");
|
|
328
|
+
i0.ɵɵadvance();
|
|
329
|
+
i0.ɵɵtextInterpolate1(" ", action_r14.Status, " ");
|
|
330
|
+
i0.ɵɵadvance(2);
|
|
331
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 13 : -1);
|
|
332
|
+
} }
|
|
333
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
335
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
336
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Actions", "")); });
|
|
337
|
+
i0.ɵɵelementStart(1, "span");
|
|
338
|
+
i0.ɵɵtext(2);
|
|
339
|
+
i0.ɵɵelementEnd()();
|
|
340
|
+
} if (rf & 2) {
|
|
341
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
342
|
+
i0.ɵɵadvance(2);
|
|
343
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.actionCount, " actions...");
|
|
344
|
+
} }
|
|
345
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
346
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
347
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_For_2_Template, 15, 13, "div", 61, _forTrack0);
|
|
348
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
349
|
+
i0.ɵɵelementEnd();
|
|
350
|
+
} if (rf & 2) {
|
|
351
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
352
|
+
i0.ɵɵadvance();
|
|
353
|
+
i0.ɵɵrepeater(ctx_r2.agentActions);
|
|
354
|
+
i0.ɵɵadvance(2);
|
|
355
|
+
i0.ɵɵconditional(ctx_r2.actionCount > ctx_r2.agentActions.length ? 3 : -1);
|
|
356
|
+
} }
|
|
357
|
+
function AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
358
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
|
|
359
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_3_Template, 3, 0, "kendo-button", 37);
|
|
360
|
+
i0.ɵɵelementEnd()();
|
|
361
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_4_Template, 7, 1, "div", 38)(5, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
122
362
|
i0.ɵɵelementEnd();
|
|
363
|
+
} if (rf & 2) {
|
|
364
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
365
|
+
i0.ɵɵadvance(3);
|
|
366
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 3 : -1);
|
|
367
|
+
i0.ɵɵadvance();
|
|
368
|
+
i0.ɵɵconditional(ctx_r2.actionCount === 0 ? 4 : 5);
|
|
123
369
|
} }
|
|
124
370
|
function AIAgentFormComponentExtended_form_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelementStart(0, "kendo-
|
|
126
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_1_Template,
|
|
127
|
-
i0.ɵɵ
|
|
128
|
-
|
|
371
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
372
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_22_ng_template_2_Template, 6, 2, "ng-template", 26);
|
|
373
|
+
i0.ɵɵelementEnd();
|
|
374
|
+
} if (rf & 2) {
|
|
375
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
376
|
+
i0.ɵɵproperty("expanded", ctx_r2.actionCount > 0);
|
|
377
|
+
} }
|
|
378
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
379
|
+
i0.ɵɵelement(0, "i", 30);
|
|
380
|
+
i0.ɵɵtext(1);
|
|
381
|
+
} if (rf & 2) {
|
|
382
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
383
|
+
i0.ɵɵadvance();
|
|
384
|
+
i0.ɵɵtextInterpolate1(" Sub-Agents", ctx_r2.subAgentCount > 0 ? " (" + ctx_r2.subAgentCount + ")" : "", " ");
|
|
385
|
+
} }
|
|
386
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
387
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
388
|
+
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
389
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.createSubAgent()); });
|
|
390
|
+
i0.ɵɵelement(1, "i", 41);
|
|
391
|
+
i0.ɵɵtext(2, " Add Sub-Agent ");
|
|
392
|
+
i0.ɵɵelementEnd();
|
|
393
|
+
} }
|
|
394
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
396
|
+
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
397
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.createSubAgent()); });
|
|
398
|
+
i0.ɵɵelement(1, "i", 41);
|
|
399
|
+
i0.ɵɵtext(2, " Create First Sub-Agent ");
|
|
400
|
+
i0.ɵɵelementEnd();
|
|
401
|
+
} }
|
|
402
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
403
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
404
|
+
i0.ɵɵelement(1, "i", 30);
|
|
405
|
+
i0.ɵɵelementStart(2, "h4");
|
|
406
|
+
i0.ɵɵtext(3, "No Sub-Agents");
|
|
407
|
+
i0.ɵɵelementEnd();
|
|
408
|
+
i0.ɵɵelementStart(4, "p");
|
|
409
|
+
i0.ɵɵtext(5, "Create sub-agents to build a hierarchical structure for complex workflows.");
|
|
410
|
+
i0.ɵɵelementEnd();
|
|
411
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
412
|
+
i0.ɵɵelementEnd();
|
|
413
|
+
} if (rf & 2) {
|
|
414
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
415
|
+
i0.ɵɵadvance(6);
|
|
416
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
417
|
+
} }
|
|
418
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
419
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
420
|
+
i0.ɵɵtext(1);
|
|
421
|
+
i0.ɵɵelementEnd();
|
|
422
|
+
} if (rf & 2) {
|
|
423
|
+
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
424
|
+
i0.ɵɵadvance();
|
|
425
|
+
i0.ɵɵtextInterpolate(subAgent_r20.Description);
|
|
426
|
+
} }
|
|
427
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
428
|
+
i0.ɵɵelementStart(0, "span", 63);
|
|
429
|
+
i0.ɵɵtext(1);
|
|
430
|
+
i0.ɵɵelementEnd();
|
|
431
|
+
} if (rf & 2) {
|
|
432
|
+
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
433
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
434
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getStatusBadgeColor());
|
|
435
|
+
i0.ɵɵadvance();
|
|
436
|
+
i0.ɵɵtextInterpolate1(" ", subAgent_r20.Status, " ");
|
|
437
|
+
} }
|
|
438
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
439
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
440
|
+
i0.ɵɵtext(1);
|
|
441
|
+
i0.ɵɵelementEnd();
|
|
442
|
+
} if (rf & 2) {
|
|
443
|
+
const subAgent_r20 = i0.ɵɵnextContext().$implicit;
|
|
444
|
+
i0.ɵɵadvance();
|
|
445
|
+
i0.ɵɵtextInterpolate(subAgent_r20.ExecutionMode);
|
|
446
|
+
} }
|
|
447
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
449
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
450
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const subAgent_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agents", subAgent_r20.ID)); });
|
|
451
|
+
i0.ɵɵelementStart(1, "div", 47);
|
|
452
|
+
i0.ɵɵelement(2, "i", 10);
|
|
453
|
+
i0.ɵɵelementEnd();
|
|
454
|
+
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
455
|
+
i0.ɵɵtext(5);
|
|
456
|
+
i0.ɵɵelementEnd();
|
|
457
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 1, "div", 51);
|
|
458
|
+
i0.ɵɵelementStart(7, "div", 52);
|
|
459
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 2, 3, "span", 70)(9, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Conditional_9_Template, 2, 1, "span", 53);
|
|
460
|
+
i0.ɵɵelementEnd()();
|
|
461
|
+
i0.ɵɵelementStart(10, "div", 54);
|
|
462
|
+
i0.ɵɵelement(11, "i", 56);
|
|
129
463
|
i0.ɵɵelementEnd()();
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
i0.ɵɵ
|
|
133
|
-
i0.ɵɵ
|
|
464
|
+
} if (rf & 2) {
|
|
465
|
+
const subAgent_r20 = ctx.$implicit;
|
|
466
|
+
i0.ɵɵadvance(5);
|
|
467
|
+
i0.ɵɵtextInterpolate(subAgent_r20.Name || "Untitled Sub-Agent");
|
|
468
|
+
i0.ɵɵadvance();
|
|
469
|
+
i0.ɵɵconditional(subAgent_r20.Description ? 6 : -1);
|
|
470
|
+
i0.ɵɵadvance(2);
|
|
471
|
+
i0.ɵɵconditional(subAgent_r20.Status ? 8 : -1);
|
|
472
|
+
i0.ɵɵadvance();
|
|
473
|
+
i0.ɵɵconditional(subAgent_r20.ExecutionMode ? 9 : -1);
|
|
474
|
+
} }
|
|
475
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
477
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
478
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agents", "")); });
|
|
479
|
+
i0.ɵɵelementStart(1, "span");
|
|
480
|
+
i0.ɵɵtext(2);
|
|
134
481
|
i0.ɵɵelementEnd()();
|
|
135
482
|
} if (rf & 2) {
|
|
136
|
-
const
|
|
483
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
484
|
+
i0.ɵɵadvance(2);
|
|
485
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.subAgentCount, " sub-agents...");
|
|
486
|
+
} }
|
|
487
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
488
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
489
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_For_2_Template, 12, 4, "div", 68, _forTrack0);
|
|
490
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
491
|
+
i0.ɵɵelementEnd();
|
|
492
|
+
} if (rf & 2) {
|
|
493
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
494
|
+
i0.ɵɵadvance();
|
|
495
|
+
i0.ɵɵrepeater(ctx_r2.subAgents);
|
|
496
|
+
i0.ɵɵadvance(2);
|
|
497
|
+
i0.ɵɵconditional(ctx_r2.subAgentCount > ctx_r2.subAgents.length ? 3 : -1);
|
|
498
|
+
} }
|
|
499
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
500
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
501
|
+
i0.ɵɵtext(3, " Manage hierarchical relationships with child agents that work under this agent. ");
|
|
502
|
+
i0.ɵɵelementEnd();
|
|
503
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
504
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 37);
|
|
505
|
+
i0.ɵɵelementEnd()();
|
|
506
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_6_Template, 7, 1, "div", 38)(7, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Conditional_7_Template, 4, 1, "div", 39);
|
|
507
|
+
i0.ɵɵelementEnd();
|
|
508
|
+
} if (rf & 2) {
|
|
509
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
510
|
+
i0.ɵɵadvance(5);
|
|
511
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 5 : -1);
|
|
512
|
+
i0.ɵɵadvance();
|
|
513
|
+
i0.ɵɵconditional(ctx_r2.subAgentCount === 0 ? 6 : 7);
|
|
514
|
+
} }
|
|
515
|
+
function AIAgentFormComponentExtended_form_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
516
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
517
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_23_ng_template_2_Template, 8, 2, "ng-template", 26);
|
|
518
|
+
i0.ɵɵelementEnd();
|
|
519
|
+
} if (rf & 2) {
|
|
520
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
521
|
+
i0.ɵɵproperty("expanded", ctx_r2.subAgentCount > 0);
|
|
522
|
+
} }
|
|
523
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
524
|
+
i0.ɵɵelement(0, "i", 71);
|
|
525
|
+
i0.ɵɵtext(1);
|
|
526
|
+
} if (rf & 2) {
|
|
527
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
528
|
+
i0.ɵɵadvance();
|
|
529
|
+
i0.ɵɵtextInterpolate1(" Learning Cycles", ctx_r2.learningCycleCount > 0 ? " (" + ctx_r2.learningCycleCount + ")" : "", " ");
|
|
530
|
+
} }
|
|
531
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
533
|
+
i0.ɵɵelement(1, "i", 71);
|
|
534
|
+
i0.ɵɵelementStart(2, "h4");
|
|
535
|
+
i0.ɵɵtext(3, "No Learning Cycles");
|
|
536
|
+
i0.ɵɵelementEnd();
|
|
537
|
+
i0.ɵɵelementStart(4, "p");
|
|
538
|
+
i0.ɵɵtext(5, "Learning cycles will appear here as the agent processes requests and improves over time.");
|
|
539
|
+
i0.ɵɵelementEnd()();
|
|
540
|
+
} }
|
|
541
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
542
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
543
|
+
i0.ɵɵelement(1, "i", 74);
|
|
544
|
+
i0.ɵɵtext(2);
|
|
545
|
+
i0.ɵɵpipe(3, "date");
|
|
546
|
+
i0.ɵɵelementEnd();
|
|
547
|
+
} if (rf & 2) {
|
|
548
|
+
const cycle_r23 = i0.ɵɵnextContext().$implicit;
|
|
549
|
+
i0.ɵɵadvance(2);
|
|
550
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, cycle_r23.StartedAt, "short"), " ");
|
|
551
|
+
} }
|
|
552
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
553
|
+
i0.ɵɵelementStart(0, "span", 63);
|
|
554
|
+
i0.ɵɵtext(1);
|
|
555
|
+
i0.ɵɵelementEnd();
|
|
556
|
+
} if (rf & 2) {
|
|
557
|
+
const cycle_r23 = i0.ɵɵnextContext().$implicit;
|
|
558
|
+
i0.ɵɵadvance();
|
|
559
|
+
i0.ɵɵtextInterpolate(cycle_r23.Status);
|
|
560
|
+
} }
|
|
561
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
562
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
563
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
564
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const cycle_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Learning Cycles", cycle_r23.ID)); });
|
|
565
|
+
i0.ɵɵelementStart(1, "div", 47);
|
|
566
|
+
i0.ɵɵelement(2, "i", 71);
|
|
567
|
+
i0.ɵɵelementEnd();
|
|
568
|
+
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
569
|
+
i0.ɵɵtext(5);
|
|
570
|
+
i0.ɵɵelementEnd();
|
|
571
|
+
i0.ɵɵelementStart(6, "div", 52);
|
|
572
|
+
i0.ɵɵtemplate(7, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_7_Template, 4, 4, "span", 53)(8, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Conditional_8_Template, 2, 1, "span", 63);
|
|
573
|
+
i0.ɵɵelementEnd()();
|
|
574
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
575
|
+
i0.ɵɵelement(10, "i", 56);
|
|
576
|
+
i0.ɵɵelementEnd()();
|
|
577
|
+
} if (rf & 2) {
|
|
578
|
+
const cycle_r23 = ctx.$implicit;
|
|
579
|
+
i0.ɵɵadvance(5);
|
|
580
|
+
i0.ɵɵtextInterpolate1("Learning Cycle ", cycle_r23.ID.substring(0, 8), "");
|
|
581
|
+
i0.ɵɵadvance(2);
|
|
582
|
+
i0.ɵɵconditional(cycle_r23.StartedAt ? 7 : -1);
|
|
583
|
+
i0.ɵɵadvance();
|
|
584
|
+
i0.ɵɵconditional(cycle_r23.Status ? 8 : -1);
|
|
585
|
+
} }
|
|
586
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
587
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
588
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
589
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Learning Cycles", "")); });
|
|
590
|
+
i0.ɵɵelementStart(1, "span");
|
|
591
|
+
i0.ɵɵtext(2);
|
|
592
|
+
i0.ɵɵelementEnd()();
|
|
593
|
+
} if (rf & 2) {
|
|
594
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
595
|
+
i0.ɵɵadvance(2);
|
|
596
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.learningCycleCount, " cycles...");
|
|
597
|
+
} }
|
|
598
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
599
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
600
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_For_2_Template, 11, 3, "div", 72, _forTrack0);
|
|
601
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
602
|
+
i0.ɵɵelementEnd();
|
|
603
|
+
} if (rf & 2) {
|
|
604
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
605
|
+
i0.ɵɵadvance();
|
|
606
|
+
i0.ɵɵrepeater(ctx_r2.learningCycles);
|
|
607
|
+
i0.ɵɵadvance(2);
|
|
608
|
+
i0.ɵɵconditional(ctx_r2.learningCycleCount > ctx_r2.learningCycles.length ? 3 : -1);
|
|
609
|
+
} }
|
|
610
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
611
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
612
|
+
i0.ɵɵtext(3, " Monitor and manage learning cycles, training sessions, and performance analytics. ");
|
|
613
|
+
i0.ɵɵelementEnd()();
|
|
614
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_4_Template, 6, 0, "div", 38)(5, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Conditional_5_Template, 4, 1, "div", 39);
|
|
615
|
+
i0.ɵɵelementEnd();
|
|
616
|
+
} if (rf & 2) {
|
|
617
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
618
|
+
i0.ɵɵadvance(4);
|
|
619
|
+
i0.ɵɵconditional(ctx_r2.learningCycleCount === 0 ? 4 : 5);
|
|
620
|
+
} }
|
|
621
|
+
function AIAgentFormComponentExtended_form_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
622
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
623
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_24_ng_template_2_Template, 6, 1, "ng-template", 26);
|
|
624
|
+
i0.ɵɵelementEnd();
|
|
625
|
+
} if (rf & 2) {
|
|
137
626
|
i0.ɵɵproperty("expanded", false);
|
|
138
|
-
|
|
139
|
-
|
|
627
|
+
} }
|
|
628
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
629
|
+
i0.ɵɵelement(0, "i", 75);
|
|
630
|
+
i0.ɵɵtext(1);
|
|
631
|
+
} if (rf & 2) {
|
|
632
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
633
|
+
i0.ɵɵadvance();
|
|
634
|
+
i0.ɵɵtextInterpolate1(" Notes", ctx_r2.noteCount > 0 ? " (" + ctx_r2.noteCount + ")" : "", " ");
|
|
635
|
+
} }
|
|
636
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
637
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
638
|
+
i0.ɵɵelementStart(0, "kendo-button", 40);
|
|
639
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_5_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.addNote()); });
|
|
640
|
+
i0.ɵɵelement(1, "i", 41);
|
|
641
|
+
i0.ɵɵtext(2, " Add Note ");
|
|
642
|
+
i0.ɵɵelementEnd();
|
|
643
|
+
} }
|
|
644
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
645
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
646
|
+
i0.ɵɵelementStart(0, "kendo-button", 43);
|
|
647
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template_kendo_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addNote()); });
|
|
648
|
+
i0.ɵɵelement(1, "i", 41);
|
|
649
|
+
i0.ɵɵtext(2, " Create First Note ");
|
|
650
|
+
i0.ɵɵelementEnd();
|
|
651
|
+
} }
|
|
652
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
653
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
654
|
+
i0.ɵɵelement(1, "i", 75);
|
|
655
|
+
i0.ɵɵelementStart(2, "h4");
|
|
656
|
+
i0.ɵɵtext(3, "No Notes");
|
|
657
|
+
i0.ɵɵelementEnd();
|
|
658
|
+
i0.ɵɵelementStart(4, "p");
|
|
659
|
+
i0.ɵɵtext(5, "Add notes to document important information, observations, or instructions for this agent.");
|
|
660
|
+
i0.ɵɵelementEnd();
|
|
661
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_6_Conditional_6_Template, 3, 0, "kendo-button", 42);
|
|
662
|
+
i0.ɵɵelementEnd();
|
|
663
|
+
} if (rf & 2) {
|
|
664
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
665
|
+
i0.ɵɵadvance(6);
|
|
666
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
667
|
+
} }
|
|
668
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
669
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
670
|
+
i0.ɵɵtext(1);
|
|
671
|
+
i0.ɵɵelementEnd();
|
|
672
|
+
} if (rf & 2) {
|
|
673
|
+
const note_r28 = i0.ɵɵnextContext().$implicit;
|
|
674
|
+
i0.ɵɵadvance();
|
|
675
|
+
i0.ɵɵtextInterpolate2("", note_r28.Note.substring(0, 100), "", note_r28.Note.length > 100 ? "..." : "", "");
|
|
676
|
+
} }
|
|
677
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
678
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
679
|
+
i0.ɵɵelement(1, "i", 74);
|
|
680
|
+
i0.ɵɵtext(2);
|
|
681
|
+
i0.ɵɵpipe(3, "date");
|
|
682
|
+
i0.ɵɵelementEnd();
|
|
683
|
+
} if (rf & 2) {
|
|
684
|
+
const note_r28 = i0.ɵɵnextContext().$implicit;
|
|
685
|
+
i0.ɵɵadvance(2);
|
|
686
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, note_r28.__mj_CreatedAt, "short"), " ");
|
|
687
|
+
} }
|
|
688
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
689
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
690
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
691
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Template_div_click_0_listener() { const note_r28 = i0.ɵɵrestoreView(_r27).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Notes", note_r28.ID)); });
|
|
692
|
+
i0.ɵɵelementStart(1, "div", 47);
|
|
693
|
+
i0.ɵɵelement(2, "i", 75);
|
|
694
|
+
i0.ɵɵelementEnd();
|
|
695
|
+
i0.ɵɵelementStart(3, "div", 49)(4, "div", 50);
|
|
696
|
+
i0.ɵɵtext(5);
|
|
697
|
+
i0.ɵɵelementEnd();
|
|
698
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_6_Template, 2, 2, "div", 51);
|
|
699
|
+
i0.ɵɵelementStart(7, "div", 52);
|
|
700
|
+
i0.ɵɵtemplate(8, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Conditional_8_Template, 4, 4, "span", 53);
|
|
701
|
+
i0.ɵɵelementEnd()();
|
|
702
|
+
i0.ɵɵelementStart(9, "div", 54);
|
|
703
|
+
i0.ɵɵelement(10, "i", 56);
|
|
704
|
+
i0.ɵɵelementEnd()();
|
|
705
|
+
} if (rf & 2) {
|
|
706
|
+
const note_r28 = ctx.$implicit;
|
|
707
|
+
i0.ɵɵadvance(5);
|
|
708
|
+
i0.ɵɵtextInterpolate(note_r28.Type || "Note");
|
|
709
|
+
i0.ɵɵadvance();
|
|
710
|
+
i0.ɵɵconditional(note_r28.Note ? 6 : -1);
|
|
711
|
+
i0.ɵɵadvance(2);
|
|
712
|
+
i0.ɵɵconditional(note_r28.__mj_CreatedAt ? 8 : -1);
|
|
713
|
+
} }
|
|
714
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
715
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
716
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
717
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Notes", "")); });
|
|
718
|
+
i0.ɵɵelementStart(1, "span");
|
|
719
|
+
i0.ɵɵtext(2);
|
|
720
|
+
i0.ɵɵelementEnd()();
|
|
721
|
+
} if (rf & 2) {
|
|
722
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
723
|
+
i0.ɵɵadvance(2);
|
|
724
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.noteCount, " notes...");
|
|
725
|
+
} }
|
|
726
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
727
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
728
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_For_2_Template, 11, 3, "div", 76, _forTrack0);
|
|
729
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_Conditional_3_Template, 3, 1, "div", 45);
|
|
730
|
+
i0.ɵɵelementEnd();
|
|
731
|
+
} if (rf & 2) {
|
|
732
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
733
|
+
i0.ɵɵadvance();
|
|
734
|
+
i0.ɵɵrepeater(ctx_r2.agentNotes);
|
|
735
|
+
i0.ɵɵadvance(2);
|
|
736
|
+
i0.ɵɵconditional(ctx_r2.noteCount > ctx_r2.agentNotes.length ? 3 : -1);
|
|
737
|
+
} }
|
|
738
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
739
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
740
|
+
i0.ɵɵtext(3, " Manage notes, documentation, and annotations for this agent. ");
|
|
741
|
+
i0.ɵɵelementEnd();
|
|
742
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
743
|
+
i0.ɵɵtemplate(5, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_5_Template, 3, 0, "kendo-button", 37);
|
|
744
|
+
i0.ɵɵelementEnd()();
|
|
745
|
+
i0.ɵɵtemplate(6, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_6_Template, 7, 1, "div", 38)(7, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Conditional_7_Template, 4, 1, "div", 39);
|
|
746
|
+
i0.ɵɵelementEnd();
|
|
747
|
+
} if (rf & 2) {
|
|
748
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
749
|
+
i0.ɵɵadvance(5);
|
|
750
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 5 : -1);
|
|
140
751
|
i0.ɵɵadvance();
|
|
752
|
+
i0.ɵɵconditional(ctx_r2.noteCount === 0 ? 6 : 7);
|
|
753
|
+
} }
|
|
754
|
+
function AIAgentFormComponentExtended_form_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
755
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
756
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_25_ng_template_2_Template, 8, 2, "ng-template", 26);
|
|
757
|
+
i0.ɵɵelementEnd();
|
|
758
|
+
} if (rf & 2) {
|
|
141
759
|
i0.ɵɵproperty("expanded", false);
|
|
760
|
+
} }
|
|
761
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
762
|
+
i0.ɵɵelement(0, "i", 78);
|
|
763
|
+
i0.ɵɵtext(1);
|
|
764
|
+
} if (rf & 2) {
|
|
765
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
766
|
+
i0.ɵɵadvance();
|
|
767
|
+
i0.ɵɵtextInterpolate1(" Execution History", ctx_r2.executionHistoryCount > 0 ? " (" + ctx_r2.executionHistoryCount + ")" : "", " ");
|
|
768
|
+
} }
|
|
769
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
770
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
771
|
+
i0.ɵɵelement(1, "i", 78);
|
|
772
|
+
i0.ɵɵelementStart(2, "h4");
|
|
773
|
+
i0.ɵɵtext(3, "No Execution History");
|
|
774
|
+
i0.ɵɵelementEnd();
|
|
775
|
+
i0.ɵɵelementStart(4, "p");
|
|
776
|
+
i0.ɵɵtext(5, "This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.");
|
|
777
|
+
i0.ɵɵelementEnd()();
|
|
778
|
+
} }
|
|
779
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
780
|
+
i0.ɵɵelementStart(0, "span", 87);
|
|
781
|
+
i0.ɵɵelement(1, "i", 89);
|
|
782
|
+
i0.ɵɵtext(2);
|
|
783
|
+
i0.ɵɵelementEnd();
|
|
784
|
+
} if (rf & 2) {
|
|
785
|
+
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
786
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
787
|
+
i0.ɵɵadvance(2);
|
|
788
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatExecutionTimeFromDates(execution_r31.StartedAt, execution_r31.CompletedAt), " ");
|
|
789
|
+
} }
|
|
790
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
791
|
+
i0.ɵɵelementStart(0, "div", 88);
|
|
792
|
+
i0.ɵɵtext(1);
|
|
793
|
+
i0.ɵɵelementEnd();
|
|
794
|
+
} if (rf & 2) {
|
|
795
|
+
const execution_r31 = i0.ɵɵnextContext().$implicit;
|
|
796
|
+
i0.ɵɵadvance();
|
|
797
|
+
i0.ɵɵtextInterpolate2("", execution_r31.Result.substring(0, 120), "", execution_r31.Result.length > 120 ? "..." : "", "");
|
|
798
|
+
} }
|
|
799
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
800
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
801
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
802
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Template_div_click_0_listener() { const execution_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Runs", execution_r31.ID)); });
|
|
803
|
+
i0.ɵɵelementStart(1, "div", 82);
|
|
804
|
+
i0.ɵɵelement(2, "i");
|
|
805
|
+
i0.ɵɵelementEnd();
|
|
806
|
+
i0.ɵɵelementStart(3, "div", 83)(4, "div", 84);
|
|
807
|
+
i0.ɵɵtext(5);
|
|
808
|
+
i0.ɵɵelementStart(6, "span", 85);
|
|
809
|
+
i0.ɵɵtext(7);
|
|
810
|
+
i0.ɵɵpipe(8, "date");
|
|
811
|
+
i0.ɵɵelementEnd()();
|
|
812
|
+
i0.ɵɵelementStart(9, "div", 86)(10, "span", 28);
|
|
813
|
+
i0.ɵɵtext(11);
|
|
814
|
+
i0.ɵɵelementEnd();
|
|
815
|
+
i0.ɵɵtemplate(12, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_12_Template, 3, 1, "span", 87);
|
|
816
|
+
i0.ɵɵelementEnd();
|
|
817
|
+
i0.ɵɵtemplate(13, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Conditional_13_Template, 2, 2, "div", 88);
|
|
818
|
+
i0.ɵɵelementEnd()();
|
|
819
|
+
} if (rf & 2) {
|
|
820
|
+
const execution_r31 = ctx.$implicit;
|
|
821
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
822
|
+
i0.ɵɵadvance();
|
|
823
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getExecutionStatusColor(execution_r31.Status));
|
|
824
|
+
i0.ɵɵadvance();
|
|
825
|
+
i0.ɵɵclassMap(ctx_r2.getExecutionStatusIcon(execution_r31.Status));
|
|
142
826
|
i0.ɵɵadvance(3);
|
|
143
|
-
i0.ɵɵ
|
|
827
|
+
i0.ɵɵtextInterpolate1(" Execution #", execution_r31.ID.substring(0, 8), " ");
|
|
828
|
+
i0.ɵɵadvance(2);
|
|
829
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 11, execution_r31.__mj_CreatedAt, "MMM d, h:mm a"));
|
|
830
|
+
i0.ɵɵadvance(3);
|
|
831
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getExecutionStatusColor(execution_r31.Status));
|
|
832
|
+
i0.ɵɵadvance();
|
|
833
|
+
i0.ɵɵtextInterpolate1(" ", execution_r31.Status || "Unknown", " ");
|
|
834
|
+
i0.ɵɵadvance();
|
|
835
|
+
i0.ɵɵconditional(execution_r31.CompletedAt ? 12 : -1);
|
|
836
|
+
i0.ɵɵadvance();
|
|
837
|
+
i0.ɵɵconditional(execution_r31.Result ? 13 : -1);
|
|
838
|
+
} }
|
|
839
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
840
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
841
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
842
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.navigateToEntity("AI Agent Runs", "")); });
|
|
843
|
+
i0.ɵɵelementStart(1, "span");
|
|
844
|
+
i0.ɵɵtext(2);
|
|
845
|
+
i0.ɵɵelementEnd()();
|
|
846
|
+
} if (rf & 2) {
|
|
847
|
+
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
848
|
+
i0.ɵɵadvance(2);
|
|
849
|
+
i0.ɵɵtextInterpolate1("View all ", ctx_r2.executionHistoryCount, " executions...");
|
|
850
|
+
} }
|
|
851
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
852
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
853
|
+
i0.ɵɵrepeaterCreate(1, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_For_2_Template, 14, 14, "div", 80, _forTrack0);
|
|
854
|
+
i0.ɵɵtemplate(3, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_Conditional_3_Template, 3, 1, "div", 45);
|
|
855
|
+
i0.ɵɵelementEnd();
|
|
856
|
+
} if (rf & 2) {
|
|
857
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
858
|
+
i0.ɵɵadvance();
|
|
859
|
+
i0.ɵɵrepeater(ctx_r2.recentExecutions);
|
|
860
|
+
i0.ɵɵadvance(2);
|
|
861
|
+
i0.ɵɵconditional(ctx_r2.executionHistoryCount > ctx_r2.recentExecutions.length ? 3 : -1);
|
|
862
|
+
} }
|
|
863
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
864
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 67);
|
|
865
|
+
i0.ɵɵtext(3, " Review execution history, requests, and performance metrics for this agent. ");
|
|
866
|
+
i0.ɵɵelementEnd()();
|
|
867
|
+
i0.ɵɵtemplate(4, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_4_Template, 6, 0, "div", 38)(5, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Conditional_5_Template, 4, 1, "div", 79);
|
|
868
|
+
i0.ɵɵelementEnd();
|
|
869
|
+
} if (rf & 2) {
|
|
870
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
871
|
+
i0.ɵɵadvance(4);
|
|
872
|
+
i0.ɵɵconditional(ctx_r2.executionHistoryCount === 0 ? 4 : 5);
|
|
873
|
+
} }
|
|
874
|
+
function AIAgentFormComponentExtended_form_1_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
875
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 23);
|
|
876
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_1_Template, 2, 1, "ng-template", 25)(2, AIAgentFormComponentExtended_form_1_Conditional_26_ng_template_2_Template, 6, 1, "ng-template", 26);
|
|
877
|
+
i0.ɵɵelementEnd();
|
|
878
|
+
} if (rf & 2) {
|
|
879
|
+
i0.ɵɵproperty("expanded", false);
|
|
880
|
+
} }
|
|
881
|
+
function AIAgentFormComponentExtended_form_1_ng_template_28_Template(rf, ctx) { if (rf & 1) {
|
|
882
|
+
i0.ɵɵelement(0, "i", 90);
|
|
883
|
+
i0.ɵɵtext(1, " Details ");
|
|
884
|
+
} }
|
|
885
|
+
function AIAgentFormComponentExtended_form_1_ng_template_29_Template(rf, ctx) { if (rf & 1) {
|
|
886
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 91);
|
|
887
|
+
i0.ɵɵprojection(2);
|
|
888
|
+
i0.ɵɵelementEnd()();
|
|
144
889
|
} }
|
|
145
890
|
function AIAgentFormComponentExtended_form_1_Template(rf, ctx) { if (rf & 1) {
|
|
891
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
146
892
|
i0.ɵɵelementStart(0, "form", 4, 0);
|
|
147
893
|
i0.ɵɵelement(2, "mj-form-toolbar", 5);
|
|
148
|
-
i0.ɵɵelementStart(3, "div", 6)(4, "div", 7)(5, "div", 8)(6, "div", 9)
|
|
149
|
-
i0.ɵɵelement(
|
|
150
|
-
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_1_Conditional_9_Template, 1, 1, "kendo-textbox", 12)(10, AIAgentFormComponentExtended_form_1_Conditional_10_Template, 4, 4);
|
|
151
|
-
i0.ɵɵelementEnd();
|
|
152
|
-
i0.ɵɵtemplate(11, AIAgentFormComponentExtended_form_1_Conditional_11_Template, 5, 10, "div", 13)(12, AIAgentFormComponentExtended_form_1_Conditional_12_Template, 2, 1, "p", 14);
|
|
894
|
+
i0.ɵɵelementStart(3, "div", 6)(4, "div", 7)(5, "div", 8)(6, "div", 9);
|
|
895
|
+
i0.ɵɵelement(7, "i", 10);
|
|
153
896
|
i0.ɵɵelementEnd();
|
|
154
|
-
i0.ɵɵelementStart(
|
|
155
|
-
i0.ɵɵtemplate(
|
|
156
|
-
i0.ɵɵ
|
|
157
|
-
i0.ɵɵtemplate(
|
|
158
|
-
i0.ɵɵelementEnd()()();
|
|
159
|
-
i0.ɵɵelementStart(19, "div", 21);
|
|
160
|
-
i0.ɵɵprojection(20);
|
|
161
|
-
i0.ɵɵelement(21, "div", 22);
|
|
162
|
-
i0.ɵɵtemplate(22, AIAgentFormComponentExtended_form_1_Conditional_22_Template, 8, 12);
|
|
897
|
+
i0.ɵɵelementStart(8, "div", 11);
|
|
898
|
+
i0.ɵɵtemplate(9, AIAgentFormComponentExtended_form_1_Conditional_9_Template, 1, 1, "kendo-textbox", 12)(10, AIAgentFormComponentExtended_form_1_Conditional_10_Template, 2, 1, "h1", 13);
|
|
899
|
+
i0.ɵɵelementStart(11, "div", 14);
|
|
900
|
+
i0.ɵɵtemplate(12, AIAgentFormComponentExtended_form_1_Conditional_12_Template, 3, 3, "span", 15)(13, AIAgentFormComponentExtended_form_1_Conditional_13_Template, 3, 3, "span", 16)(14, AIAgentFormComponentExtended_form_1_Conditional_14_Template, 3, 1, "span", 17);
|
|
163
901
|
i0.ɵɵelementEnd()()();
|
|
902
|
+
i0.ɵɵelementStart(15, "div", 18);
|
|
903
|
+
i0.ɵɵtemplate(16, AIAgentFormComponentExtended_form_1_Conditional_16_Template, 3, 1, "kendo-button", 19);
|
|
904
|
+
i0.ɵɵelementStart(17, "kendo-button", 20);
|
|
905
|
+
i0.ɵɵlistener("click", function AIAgentFormComponentExtended_form_1_Template_kendo_button_click_17_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.refreshRelatedData()); });
|
|
906
|
+
i0.ɵɵelement(18, "i", 21);
|
|
907
|
+
i0.ɵɵelementEnd()()()();
|
|
908
|
+
i0.ɵɵelementStart(19, "div", 22)(20, "kendo-panelbar");
|
|
909
|
+
i0.ɵɵtemplate(21, AIAgentFormComponentExtended_form_1_Conditional_21_Template, 3, 1, "kendo-panelbar-item", 23)(22, AIAgentFormComponentExtended_form_1_Conditional_22_Template, 3, 1, "kendo-panelbar-item", 23)(23, AIAgentFormComponentExtended_form_1_Conditional_23_Template, 3, 1, "kendo-panelbar-item", 23)(24, AIAgentFormComponentExtended_form_1_Conditional_24_Template, 3, 1, "kendo-panelbar-item", 23)(25, AIAgentFormComponentExtended_form_1_Conditional_25_Template, 3, 1, "kendo-panelbar-item", 23)(26, AIAgentFormComponentExtended_form_1_Conditional_26_Template, 3, 1, "kendo-panelbar-item", 23);
|
|
910
|
+
i0.ɵɵelementStart(27, "kendo-panelbar-item", 24);
|
|
911
|
+
i0.ɵɵtemplate(28, AIAgentFormComponentExtended_form_1_ng_template_28_Template, 2, 0, "ng-template", 25)(29, AIAgentFormComponentExtended_form_1_ng_template_29_Template, 3, 0, "ng-template", 26);
|
|
912
|
+
i0.ɵɵelementEnd()()()();
|
|
164
913
|
} if (rf & 2) {
|
|
165
|
-
const
|
|
914
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
166
915
|
i0.ɵɵadvance(2);
|
|
167
|
-
i0.ɵɵproperty("form",
|
|
916
|
+
i0.ɵɵproperty("form", ctx_r2);
|
|
168
917
|
i0.ɵɵadvance(7);
|
|
169
|
-
i0.ɵɵconditional(
|
|
170
|
-
i0.ɵɵadvance(2);
|
|
171
|
-
i0.ɵɵconditional(ctx_r1.EditMode ? 11 : -1);
|
|
172
|
-
i0.ɵɵadvance();
|
|
173
|
-
i0.ɵɵconditional(ctx_r1.record.Description ? 12 : -1);
|
|
918
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 9 : 10);
|
|
174
919
|
i0.ɵɵadvance(3);
|
|
175
|
-
i0.ɵɵconditional(
|
|
920
|
+
i0.ɵɵconditional(ctx_r2.record.Status ? 12 : -1);
|
|
921
|
+
i0.ɵɵadvance();
|
|
922
|
+
i0.ɵɵconditional(ctx_r2.record.ExecutionMode ? 13 : -1);
|
|
923
|
+
i0.ɵɵadvance();
|
|
924
|
+
i0.ɵɵconditional(ctx_r2.record.Parent ? 14 : -1);
|
|
176
925
|
i0.ɵɵadvance(2);
|
|
177
|
-
i0.ɵɵconditional(
|
|
926
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 16 : -1);
|
|
927
|
+
i0.ɵɵadvance(5);
|
|
928
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 21 : -1);
|
|
178
929
|
i0.ɵɵadvance();
|
|
179
|
-
i0.ɵɵconditional(
|
|
180
|
-
i0.ɵɵadvance(
|
|
181
|
-
i0.ɵɵconditional(
|
|
930
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 22 : -1);
|
|
931
|
+
i0.ɵɵadvance();
|
|
932
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 23 : -1);
|
|
933
|
+
i0.ɵɵadvance();
|
|
934
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 24 : -1);
|
|
935
|
+
i0.ɵɵadvance();
|
|
936
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 25 : -1);
|
|
937
|
+
i0.ɵɵadvance();
|
|
938
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 26 : -1);
|
|
939
|
+
i0.ɵɵadvance();
|
|
940
|
+
i0.ɵɵproperty("expanded", false);
|
|
182
941
|
} }
|
|
183
942
|
function AIAgentFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
-
const
|
|
185
|
-
i0.ɵɵelementStart(0, "
|
|
186
|
-
i0.ɵɵlistener("
|
|
187
|
-
i0.ɵɵ
|
|
943
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
944
|
+
i0.ɵɵelementStart(0, "kendo-window", 92);
|
|
945
|
+
i0.ɵɵlistener("close", function AIAgentFormComponentExtended_Conditional_2_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged(false)); });
|
|
946
|
+
i0.ɵɵelementStart(1, "mj-ai-test-harness", 93);
|
|
947
|
+
i0.ɵɵlistener("visibilityChange", function AIAgentFormComponentExtended_Conditional_2_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTestHarnessVisibilityChanged($event)); });
|
|
948
|
+
i0.ɵɵelementEnd()();
|
|
188
949
|
} if (rf & 2) {
|
|
189
|
-
const
|
|
190
|
-
i0.ɵɵ
|
|
950
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
951
|
+
i0.ɵɵpropertyInterpolate1("title", "Run AI Agent - ", ctx_r2.record.Name || "Untitled", "");
|
|
952
|
+
i0.ɵɵproperty("width", 1200)("height", 800)("minWidth", 800)("minHeight", 600)("draggable", true)("resizable", true)("state", "default");
|
|
953
|
+
i0.ɵɵadvance();
|
|
954
|
+
i0.ɵɵproperty("aiAgent", ctx_r2.record)("isVisible", ctx_r2.showTestHarness);
|
|
191
955
|
} }
|
|
956
|
+
/**
|
|
957
|
+
* Enhanced AI Agent form component that extends the auto-generated base form
|
|
958
|
+
* with comprehensive agent management capabilities including test harness integration,
|
|
959
|
+
* related entity management, and execution history tracking.
|
|
960
|
+
*
|
|
961
|
+
* ## Key Features:
|
|
962
|
+
* - **Integrated Test Harness**: Built-in access to agent testing capabilities
|
|
963
|
+
* - **Related Entity Management**: Display and manage sub-agents, prompts, and actions
|
|
964
|
+
* - **Execution History**: View recent agent runs with status and timing information
|
|
965
|
+
* - **Rich UI Components**: Enhanced cards, badges, and status indicators
|
|
966
|
+
* - **Navigation Support**: Links to related entities and management functions
|
|
967
|
+
*
|
|
968
|
+
* ## Form Sections:
|
|
969
|
+
* - **Agent Details**: Basic agent configuration and settings
|
|
970
|
+
* - **Sub-Agents**: Hierarchical agent relationships
|
|
971
|
+
* - **Prompts**: Associated prompts with priority ordering
|
|
972
|
+
* - **Actions**: Available actions and configurations
|
|
973
|
+
* - **Execution History**: Recent runs with detailed status information
|
|
974
|
+
*
|
|
975
|
+
* ## Usage:
|
|
976
|
+
* This component is automatically loaded when editing AI Agent entities through
|
|
977
|
+
* the MemberJunction form system. It extends the base generated form with
|
|
978
|
+
* additional functionality while maintaining full compatibility.
|
|
979
|
+
*
|
|
980
|
+
* @example
|
|
981
|
+
* ```html
|
|
982
|
+
* <!-- Automatically used by form system -->
|
|
983
|
+
* <mj-ai-agent-form [recordId]="agentId"></mj-ai-agent-form>
|
|
984
|
+
* ```
|
|
985
|
+
*/
|
|
192
986
|
let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AIAgentFormComponent {
|
|
193
|
-
constructor() {
|
|
194
|
-
super(
|
|
195
|
-
this.
|
|
196
|
-
this.
|
|
987
|
+
constructor(elementRef, sharedService, router, route, cdr, dialogService, viewContainerRef) {
|
|
988
|
+
super(elementRef, sharedService, router, route, cdr);
|
|
989
|
+
this.sharedService = sharedService;
|
|
990
|
+
this.dialogService = dialogService;
|
|
991
|
+
this.viewContainerRef = viewContainerRef;
|
|
992
|
+
/** Whether the test harness is currently visible */
|
|
993
|
+
this.showTestHarness = false;
|
|
994
|
+
// === Related Entity Counts ===
|
|
995
|
+
/** Number of sub-agents under this agent */
|
|
996
|
+
this.subAgentCount = 0;
|
|
997
|
+
/** Number of prompts associated with this agent */
|
|
998
|
+
this.promptCount = 0;
|
|
999
|
+
/** Number of actions configured for this agent */
|
|
1000
|
+
this.actionCount = 0;
|
|
1001
|
+
/** Number of learning cycles for this agent */
|
|
1002
|
+
this.learningCycleCount = 0;
|
|
1003
|
+
/** Number of notes associated with this agent */
|
|
1004
|
+
this.noteCount = 0;
|
|
1005
|
+
/** Number of execution history records */
|
|
1006
|
+
this.executionHistoryCount = 0;
|
|
1007
|
+
// === Related Entity Data for Display ===
|
|
1008
|
+
/** Array of sub-agent entities for card display */
|
|
1009
|
+
this.subAgents = [];
|
|
1010
|
+
/** Array of agent prompt entities for card display */
|
|
1011
|
+
this.agentPrompts = [];
|
|
1012
|
+
/** Array of agent action entities for card display */
|
|
1013
|
+
this.agentActions = [];
|
|
1014
|
+
/** Array of learning cycle entities for display */
|
|
1015
|
+
this.learningCycles = [];
|
|
1016
|
+
/** Array of agent note entities for display */
|
|
1017
|
+
this.agentNotes = [];
|
|
1018
|
+
/** Array of recent execution records for history display */
|
|
1019
|
+
this.recentExecutions = [];
|
|
197
1020
|
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Component initialization. Calls parent initialization and loads related entity data
|
|
1023
|
+
* if an agent record is already available.
|
|
1024
|
+
*/
|
|
198
1025
|
async ngOnInit() {
|
|
199
1026
|
await super.ngOnInit();
|
|
1027
|
+
if (this.record?.ID) {
|
|
1028
|
+
await this.loadRelatedCounts();
|
|
1029
|
+
}
|
|
200
1030
|
}
|
|
201
1031
|
/**
|
|
202
|
-
*
|
|
1032
|
+
* Loads counts and preview data for all related entities including sub-agents,
|
|
1033
|
+
* prompts, actions, learning cycles, notes, and execution history.
|
|
1034
|
+
* This data populates the various expander panels in the enhanced form interface.
|
|
1035
|
+
* @private
|
|
203
1036
|
*/
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
1037
|
+
async loadRelatedCounts() {
|
|
1038
|
+
if (!this.record?.ID)
|
|
1039
|
+
return;
|
|
1040
|
+
try {
|
|
1041
|
+
console.log('🔍 AI Agent Form - Loading related data for Agent ID:', this.record.ID);
|
|
1042
|
+
const rv = new RunView();
|
|
1043
|
+
// Load sub-agents with data
|
|
1044
|
+
const subAgentResult = await rv.RunView({
|
|
1045
|
+
EntityName: 'AI Agents',
|
|
1046
|
+
ExtraFilter: `ParentID='${this.record.ID}'`,
|
|
1047
|
+
OrderBy: 'Name ASC',
|
|
1048
|
+
ResultType: 'entity_object'
|
|
1049
|
+
});
|
|
1050
|
+
this.subAgents = subAgentResult.Results || [];
|
|
1051
|
+
this.subAgentCount = subAgentResult.TotalRowCount || 0;
|
|
1052
|
+
const promptResult = await rv.RunView({
|
|
1053
|
+
EntityName: 'AI Prompts',
|
|
1054
|
+
ExtraFilter: `ID IN (SELECT PromptID FROM __mj.vwAIAgentPrompts WHERE AgentID='${this.record.ID}')`
|
|
1055
|
+
});
|
|
1056
|
+
this.agentPrompts = promptResult.Results || [];
|
|
1057
|
+
this.promptCount = promptResult.TotalRowCount || 0;
|
|
1058
|
+
const actionResult = await rv.RunView({
|
|
1059
|
+
EntityName: 'Actions',
|
|
1060
|
+
ExtraFilter: `ID IN (SELECT ActionID FROM __mj.vwAIAgentActions WHERE AgentID='${this.record.ID}')`,
|
|
1061
|
+
OrderBy: 'Name ASC',
|
|
1062
|
+
ResultType: 'entity_object'
|
|
1063
|
+
});
|
|
1064
|
+
this.agentActions = actionResult.Results || [];
|
|
1065
|
+
this.actionCount = actionResult.TotalRowCount || 0;
|
|
1066
|
+
console.log('⚡ Final actions count:', this.actionCount, 'items');
|
|
1067
|
+
// Load learning cycles with data
|
|
1068
|
+
const learningResult = await rv.RunView({
|
|
1069
|
+
EntityName: 'AI Agent Learning Cycles',
|
|
1070
|
+
ExtraFilter: `AgentID='${this.record.ID}'`,
|
|
1071
|
+
OrderBy: 'StartedAt DESC',
|
|
1072
|
+
ResultType: 'entity_object'
|
|
1073
|
+
});
|
|
1074
|
+
this.learningCycles = learningResult.Results || [];
|
|
1075
|
+
this.learningCycleCount = learningResult.TotalRowCount || 0;
|
|
1076
|
+
// Load notes with data
|
|
1077
|
+
const noteResult = await rv.RunView({
|
|
1078
|
+
EntityName: 'AI Agent Notes',
|
|
1079
|
+
ExtraFilter: `AgentID='${this.record.ID}'`,
|
|
1080
|
+
ResultType: 'entity_object'
|
|
1081
|
+
});
|
|
1082
|
+
this.agentNotes = noteResult.Results || [];
|
|
1083
|
+
this.noteCount = noteResult.TotalRowCount || 0;
|
|
1084
|
+
// Load recent execution history
|
|
1085
|
+
const historyResult = await rv.RunView({
|
|
1086
|
+
EntityName: 'MJ: AI Agent Runs',
|
|
1087
|
+
ExtraFilter: `AgentID='${this.record.ID}'`,
|
|
1088
|
+
OrderBy: '__mj_CreatedAt DESC',
|
|
1089
|
+
ResultType: 'entity_object'
|
|
1090
|
+
});
|
|
1091
|
+
this.recentExecutions = historyResult.Results || [];
|
|
1092
|
+
this.executionHistoryCount = historyResult.TotalRowCount || 0;
|
|
1093
|
+
}
|
|
1094
|
+
catch (error) {
|
|
1095
|
+
console.error('Error loading related data:', error);
|
|
1096
|
+
// Set all counts to 0 on error to ensure UI shows proper empty states
|
|
1097
|
+
this.subAgentCount = 0;
|
|
1098
|
+
this.promptCount = 0;
|
|
1099
|
+
this.actionCount = 0;
|
|
1100
|
+
this.learningCycleCount = 0;
|
|
1101
|
+
this.noteCount = 0;
|
|
1102
|
+
this.executionHistoryCount = 0;
|
|
1103
|
+
}
|
|
207
1104
|
}
|
|
208
1105
|
/**
|
|
209
|
-
*
|
|
1106
|
+
* Opens the integrated test harness for the current agent.
|
|
1107
|
+
* Validates that the agent has been saved before allowing testing.
|
|
1108
|
+
* Shows a notification if the agent needs to be saved first.
|
|
210
1109
|
*/
|
|
211
|
-
|
|
1110
|
+
openTestHarness() {
|
|
212
1111
|
if (!this.record?.ID) {
|
|
213
|
-
MJNotificationService.Instance.CreateSimpleNotification('Please save the AI agent before
|
|
1112
|
+
MJNotificationService.Instance.CreateSimpleNotification('Please save the AI agent before testing', 'warning', 4000);
|
|
214
1113
|
return;
|
|
215
1114
|
}
|
|
216
|
-
|
|
217
|
-
MJNotificationService.Instance.CreateSimpleNotification('AI agent must be Active to execute', 'warning', 4000);
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
this.showExecutionDialog = true;
|
|
1115
|
+
this.showTestHarness = true;
|
|
221
1116
|
}
|
|
222
1117
|
/**
|
|
223
|
-
*
|
|
1118
|
+
* Returns the appropriate color for the agent status badge.
|
|
1119
|
+
* Uses standard color coding: green for active, yellow for pending, gray for disabled.
|
|
1120
|
+
* @returns CSS color value for the status badge
|
|
224
1121
|
*/
|
|
225
1122
|
getStatusBadgeColor() {
|
|
226
1123
|
switch (this.record?.Status) {
|
|
@@ -231,24 +1128,393 @@ let AIAgentFormComponentExtended = class AIAgentFormComponentExtended extends AI
|
|
|
231
1128
|
}
|
|
232
1129
|
}
|
|
233
1130
|
/**
|
|
234
|
-
*
|
|
1131
|
+
* Event handler for test harness visibility changes.
|
|
1132
|
+
* Updates the component state when the test harness is opened or closed.
|
|
1133
|
+
* @param isVisible - Whether the test harness is currently visible
|
|
1134
|
+
*/
|
|
1135
|
+
onTestHarnessVisibilityChanged(isVisible) {
|
|
1136
|
+
this.showTestHarness = isVisible;
|
|
1137
|
+
}
|
|
1138
|
+
/**
|
|
1139
|
+
* Gets the count of sub-agents
|
|
1140
|
+
*/
|
|
1141
|
+
getSubAgentCount() {
|
|
1142
|
+
return this.subAgentCount;
|
|
1143
|
+
}
|
|
1144
|
+
/**
|
|
1145
|
+
* Gets the count of prompts
|
|
1146
|
+
*/
|
|
1147
|
+
getPromptCount() {
|
|
1148
|
+
return this.promptCount;
|
|
1149
|
+
}
|
|
1150
|
+
/**
|
|
1151
|
+
* Gets the count of actions
|
|
1152
|
+
*/
|
|
1153
|
+
getActionCount() {
|
|
1154
|
+
return this.actionCount;
|
|
1155
|
+
}
|
|
1156
|
+
/**
|
|
1157
|
+
* Gets the icon for the execution mode
|
|
1158
|
+
*/
|
|
1159
|
+
getExecutionModeIcon(mode) {
|
|
1160
|
+
switch (mode) {
|
|
1161
|
+
case 'Sequential':
|
|
1162
|
+
return 'fa-solid fa-list-ol';
|
|
1163
|
+
case 'Parallel':
|
|
1164
|
+
return 'fa-solid fa-layer-group';
|
|
1165
|
+
default:
|
|
1166
|
+
return 'fa-solid fa-robot';
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
/**
|
|
1170
|
+
* Creates a new sub-agent
|
|
1171
|
+
*/
|
|
1172
|
+
async createSubAgent() {
|
|
1173
|
+
// Open a new AI Agent form with ParentID pre-populated
|
|
1174
|
+
MJNotificationService.Instance.CreateSimpleNotification('Opening new sub-agent form...', 'info', 2000);
|
|
1175
|
+
// For now, we'll just show a notification
|
|
1176
|
+
// In a full implementation, this would emit an event to open a new form
|
|
1177
|
+
// with ParentID pre-populated to this.record.ID
|
|
1178
|
+
}
|
|
1179
|
+
/**
|
|
1180
|
+
* Adds a new prompt to the agent
|
|
1181
|
+
*/
|
|
1182
|
+
async addPrompt() {
|
|
1183
|
+
const config = {
|
|
1184
|
+
entityName: 'AI Prompts',
|
|
1185
|
+
title: 'Select AI Prompt',
|
|
1186
|
+
displayField: 'Name',
|
|
1187
|
+
descriptionField: 'Description',
|
|
1188
|
+
statusField: 'Status',
|
|
1189
|
+
filters: `Status='Active'`,
|
|
1190
|
+
orderBy: 'Name ASC',
|
|
1191
|
+
icon: 'fa-solid fa-comment-dots'
|
|
1192
|
+
};
|
|
1193
|
+
const dialogRef = this.dialogService.open({
|
|
1194
|
+
content: EntitySelectorDialogComponent
|
|
1195
|
+
});
|
|
1196
|
+
const componentInstance = dialogRef.content.instance;
|
|
1197
|
+
componentInstance.config = config;
|
|
1198
|
+
const result = await dialogRef.result;
|
|
1199
|
+
if (result && result.entity) {
|
|
1200
|
+
// User selected an existing prompt
|
|
1201
|
+
await this.linkPromptToAgent(result.entity);
|
|
1202
|
+
}
|
|
1203
|
+
else if (result && result.createNew) {
|
|
1204
|
+
// User wants to create a new prompt
|
|
1205
|
+
await this.createNewPrompt();
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
/**
|
|
1209
|
+
* Opens the action configuration dialog
|
|
235
1210
|
*/
|
|
236
|
-
|
|
237
|
-
|
|
1211
|
+
async configureActions() {
|
|
1212
|
+
const config = {
|
|
1213
|
+
entityName: 'Actions',
|
|
1214
|
+
title: 'Select Action',
|
|
1215
|
+
displayField: 'Name',
|
|
1216
|
+
descriptionField: 'Description',
|
|
1217
|
+
statusField: 'Status',
|
|
1218
|
+
filters: `Status='Active'`,
|
|
1219
|
+
orderBy: 'Name ASC',
|
|
1220
|
+
icon: 'fa-solid fa-bolt'
|
|
1221
|
+
};
|
|
1222
|
+
const dialogRef = this.dialogService.open({
|
|
1223
|
+
content: EntitySelectorDialogComponent
|
|
1224
|
+
});
|
|
1225
|
+
const componentInstance = dialogRef.content.instance;
|
|
1226
|
+
componentInstance.config = config;
|
|
1227
|
+
const result = await dialogRef.result;
|
|
1228
|
+
if (result && result.entity) {
|
|
1229
|
+
// User selected an existing action
|
|
1230
|
+
await this.linkActionToAgent(result.entity);
|
|
1231
|
+
}
|
|
1232
|
+
else if (result && result.createNew) {
|
|
1233
|
+
// User wants to create a new action
|
|
1234
|
+
await this.createNewAction();
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
/**
|
|
1238
|
+
* Gets the status icon for execution runs
|
|
1239
|
+
*/
|
|
1240
|
+
getExecutionStatusIcon(status) {
|
|
1241
|
+
switch (status?.toLowerCase()) {
|
|
1242
|
+
case 'completed':
|
|
1243
|
+
case 'success':
|
|
1244
|
+
return 'fa-solid fa-check-circle';
|
|
1245
|
+
case 'failed':
|
|
1246
|
+
case 'error':
|
|
1247
|
+
return 'fa-solid fa-exclamation-triangle';
|
|
1248
|
+
case 'running':
|
|
1249
|
+
case 'in_progress':
|
|
1250
|
+
return 'fa-solid fa-spinner fa-spin';
|
|
1251
|
+
case 'pending':
|
|
1252
|
+
return 'fa-solid fa-clock';
|
|
1253
|
+
default:
|
|
1254
|
+
return 'fa-solid fa-question-circle';
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
/**
|
|
1258
|
+
* Gets the status color for execution runs
|
|
1259
|
+
*/
|
|
1260
|
+
getExecutionStatusColor(status) {
|
|
1261
|
+
switch (status?.toLowerCase()) {
|
|
1262
|
+
case 'completed':
|
|
1263
|
+
case 'success':
|
|
1264
|
+
return '#28a745';
|
|
1265
|
+
case 'failed':
|
|
1266
|
+
case 'error':
|
|
1267
|
+
return '#dc3545';
|
|
1268
|
+
case 'running':
|
|
1269
|
+
case 'in_progress':
|
|
1270
|
+
return '#17a2b8';
|
|
1271
|
+
case 'pending':
|
|
1272
|
+
return '#ffc107';
|
|
1273
|
+
default:
|
|
1274
|
+
return '#6c757d';
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
formatExecutionTimeFromDates(startDate, endDate) {
|
|
1278
|
+
if (!startDate || !endDate)
|
|
1279
|
+
return 'N/A';
|
|
1280
|
+
const milliseconds = endDate.getTime() - startDate.getTime();
|
|
1281
|
+
return this.formatExecutionTime(milliseconds);
|
|
1282
|
+
}
|
|
1283
|
+
/**
|
|
1284
|
+
* Formats execution time
|
|
1285
|
+
*/
|
|
1286
|
+
formatExecutionTime(milliseconds) {
|
|
1287
|
+
if (!milliseconds)
|
|
1288
|
+
return 'N/A';
|
|
1289
|
+
if (milliseconds >= 60000) {
|
|
1290
|
+
const minutes = Math.floor(milliseconds / 60000);
|
|
1291
|
+
const seconds = ((milliseconds % 60000) / 1000).toFixed(1);
|
|
1292
|
+
return `${minutes}m ${seconds}s`;
|
|
1293
|
+
}
|
|
1294
|
+
else if (milliseconds >= 1000) {
|
|
1295
|
+
return `${(milliseconds / 1000).toFixed(1)}s`;
|
|
1296
|
+
}
|
|
1297
|
+
else {
|
|
1298
|
+
return `${milliseconds}ms`;
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
/**
|
|
1302
|
+
* Gets the priority badge color
|
|
1303
|
+
*/
|
|
1304
|
+
getPriorityBadgeColor(priority) {
|
|
1305
|
+
if (priority <= 1)
|
|
1306
|
+
return '#dc3545'; // High priority - red
|
|
1307
|
+
if (priority <= 5)
|
|
1308
|
+
return '#ffc107'; // Medium priority - yellow
|
|
1309
|
+
return '#28a745'; // Low priority - green
|
|
1310
|
+
}
|
|
1311
|
+
/**
|
|
1312
|
+
* Gets the priority label
|
|
1313
|
+
*/
|
|
1314
|
+
getPriorityLabel(priority) {
|
|
1315
|
+
if (priority <= 1)
|
|
1316
|
+
return 'High';
|
|
1317
|
+
if (priority <= 5)
|
|
1318
|
+
return 'Medium';
|
|
1319
|
+
return 'Low';
|
|
1320
|
+
}
|
|
1321
|
+
/**
|
|
1322
|
+
* Navigates to a related entity
|
|
1323
|
+
*/
|
|
1324
|
+
navigateToEntity(entityName, recordId) {
|
|
1325
|
+
this.sharedService.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));
|
|
1326
|
+
}
|
|
1327
|
+
/**
|
|
1328
|
+
* Refreshes the related data
|
|
1329
|
+
*/
|
|
1330
|
+
async refreshRelatedData() {
|
|
1331
|
+
if (this.record?.ID) {
|
|
1332
|
+
await this.loadRelatedCounts();
|
|
1333
|
+
MJNotificationService.Instance.CreateSimpleNotification('Related data refreshed', 'success', 2000);
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
/**
|
|
1337
|
+
* Adds a new note to the agent
|
|
1338
|
+
*/
|
|
1339
|
+
addNote() {
|
|
1340
|
+
MJNotificationService.Instance.CreateSimpleNotification('Opening new note form...', 'info', 2000);
|
|
1341
|
+
// In a full implementation, this would open a new AI Agent Note form
|
|
1342
|
+
// with AgentID pre-populated to this.record.ID
|
|
1343
|
+
}
|
|
1344
|
+
/**
|
|
1345
|
+
* Links an existing prompt to the agent
|
|
1346
|
+
*/
|
|
1347
|
+
async linkPromptToAgent(prompt) {
|
|
1348
|
+
try {
|
|
1349
|
+
const md = new Metadata();
|
|
1350
|
+
const agentPrompt = await md.GetEntityObject('AI Agent Prompts');
|
|
1351
|
+
agentPrompt.AgentID = this.record.ID;
|
|
1352
|
+
agentPrompt.PromptID = prompt.ID;
|
|
1353
|
+
agentPrompt.Status = 'Active'; // Default value
|
|
1354
|
+
agentPrompt.ExecutionOrder = 1; // Default execution order
|
|
1355
|
+
const result = await agentPrompt.Save();
|
|
1356
|
+
if (result) {
|
|
1357
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Prompt "${prompt.Name}" added successfully`, 'success', 3000);
|
|
1358
|
+
await this.loadRelatedCounts();
|
|
1359
|
+
}
|
|
1360
|
+
else {
|
|
1361
|
+
throw new Error('Failed to save AI Agent Prompt');
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
catch (error) {
|
|
1365
|
+
console.error('Error linking prompt to agent:', error);
|
|
1366
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to add prompt', 'error', 3000);
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
/**
|
|
1370
|
+
* Creates a new prompt and links it to the agent
|
|
1371
|
+
*/
|
|
1372
|
+
async createNewPrompt() {
|
|
1373
|
+
// TODO: Open new AI Prompt form
|
|
1374
|
+
// await this.sharedService.CreateNewRecord('AI Prompts', undefined, [
|
|
1375
|
+
// { FieldName: 'Status', Value: 'Active' }
|
|
1376
|
+
// ]);
|
|
1377
|
+
MJNotificationService.Instance.CreateSimpleNotification('Creating new prompt - functionality to be implemented', 'info', 3000);
|
|
1378
|
+
}
|
|
1379
|
+
/**
|
|
1380
|
+
* Links an existing action to the agent
|
|
1381
|
+
*/
|
|
1382
|
+
async linkActionToAgent(action) {
|
|
1383
|
+
try {
|
|
1384
|
+
const md = new Metadata();
|
|
1385
|
+
const agentAction = await md.GetEntityObject('AI Agent Actions');
|
|
1386
|
+
agentAction.AgentID = this.record.ID;
|
|
1387
|
+
agentAction.ActionID = action.ID;
|
|
1388
|
+
agentAction.Status = 'Active'; // Default status
|
|
1389
|
+
const result = await agentAction.Save();
|
|
1390
|
+
if (result) {
|
|
1391
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Action "${action.Name}" added successfully`, 'success', 3000);
|
|
1392
|
+
await this.loadRelatedCounts();
|
|
1393
|
+
}
|
|
1394
|
+
else {
|
|
1395
|
+
throw new Error('Failed to save AI Agent Action');
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
catch (error) {
|
|
1399
|
+
console.error('Error linking action to agent:', error);
|
|
1400
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to add action', 'error', 3000);
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
/**
|
|
1404
|
+
* Creates a new action and links it to the agent
|
|
1405
|
+
*/
|
|
1406
|
+
async createNewAction() {
|
|
1407
|
+
// TODO: Open new Action form
|
|
1408
|
+
// await this.sharedService.CreateNewRecord('Actions', undefined, [
|
|
1409
|
+
// { FieldName: 'Status', Value: 'Active' }
|
|
1410
|
+
// ]);
|
|
1411
|
+
MJNotificationService.Instance.CreateSimpleNotification('Creating new action - functionality to be implemented', 'info', 3000);
|
|
1412
|
+
}
|
|
1413
|
+
/**
|
|
1414
|
+
* Removes a prompt from the agent
|
|
1415
|
+
*/
|
|
1416
|
+
async removePrompt(prompt, event) {
|
|
1417
|
+
event.stopPropagation(); // Prevent navigation
|
|
1418
|
+
const confirmDialog = this.dialogService.open({
|
|
1419
|
+
title: 'Remove Prompt',
|
|
1420
|
+
content: `Are you sure you want to remove the prompt "${prompt.Name}" from this agent?`,
|
|
1421
|
+
actions: [
|
|
1422
|
+
{ text: 'Cancel' },
|
|
1423
|
+
{ text: 'Remove', themeColor: 'error' }
|
|
1424
|
+
],
|
|
1425
|
+
width: 450,
|
|
1426
|
+
height: 200
|
|
1427
|
+
});
|
|
1428
|
+
const result = await confirmDialog.result;
|
|
1429
|
+
if (result && result.text === 'Remove') {
|
|
1430
|
+
try {
|
|
1431
|
+
// Find the AI Agent Prompt link record
|
|
1432
|
+
const rv = new RunView();
|
|
1433
|
+
const linkResult = await rv.RunView({
|
|
1434
|
+
EntityName: 'AI Agent Prompts',
|
|
1435
|
+
ExtraFilter: `AgentID='${this.record.ID}' AND PromptID='${prompt.ID}'`,
|
|
1436
|
+
ResultType: 'entity_object'
|
|
1437
|
+
});
|
|
1438
|
+
if (linkResult.Results && linkResult.Results.length > 0) {
|
|
1439
|
+
const agentPrompt = linkResult.Results[0];
|
|
1440
|
+
const deleteResult = await agentPrompt.Delete();
|
|
1441
|
+
if (deleteResult) {
|
|
1442
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Prompt "${prompt.Name}" removed successfully`, 'success', 3000);
|
|
1443
|
+
await this.loadRelatedCounts();
|
|
1444
|
+
}
|
|
1445
|
+
else {
|
|
1446
|
+
throw new Error('Failed to delete AI Agent Prompt link');
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
else {
|
|
1450
|
+
throw new Error('AI Agent Prompt link not found');
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
catch (error) {
|
|
1454
|
+
console.error('Error removing prompt from agent:', error);
|
|
1455
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to remove prompt', 'error', 3000);
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
/**
|
|
1460
|
+
* Removes an action from the agent
|
|
1461
|
+
*/
|
|
1462
|
+
async removeAction(action, event) {
|
|
1463
|
+
event.stopPropagation(); // Prevent navigation
|
|
1464
|
+
const confirmDialog = this.dialogService.open({
|
|
1465
|
+
title: 'Remove Action',
|
|
1466
|
+
content: `Are you sure you want to remove the action "${action.Name}" from this agent?`,
|
|
1467
|
+
actions: [
|
|
1468
|
+
{ text: 'Cancel' },
|
|
1469
|
+
{ text: 'Remove', themeColor: 'error' }
|
|
1470
|
+
],
|
|
1471
|
+
width: 450,
|
|
1472
|
+
height: 200
|
|
1473
|
+
});
|
|
1474
|
+
const result = await confirmDialog.result;
|
|
1475
|
+
if (result && result.text === 'Remove') {
|
|
1476
|
+
try {
|
|
1477
|
+
// Find the AI Agent Action link record
|
|
1478
|
+
const rv = new RunView();
|
|
1479
|
+
const linkResult = await rv.RunView({
|
|
1480
|
+
EntityName: 'AI Agent Actions',
|
|
1481
|
+
ExtraFilter: `AgentID='${this.record.ID}' AND ActionID='${action.ID}'`,
|
|
1482
|
+
ResultType: 'entity_object'
|
|
1483
|
+
});
|
|
1484
|
+
if (linkResult.Results && linkResult.Results.length > 0) {
|
|
1485
|
+
const agentAction = linkResult.Results[0];
|
|
1486
|
+
const deleteResult = await agentAction.Delete();
|
|
1487
|
+
if (deleteResult) {
|
|
1488
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Action "${action.Name}" removed successfully`, 'success', 3000);
|
|
1489
|
+
await this.loadRelatedCounts();
|
|
1490
|
+
}
|
|
1491
|
+
else {
|
|
1492
|
+
throw new Error('Failed to delete AI Agent Action link');
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
else {
|
|
1496
|
+
throw new Error('AI Agent Action link not found');
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
catch (error) {
|
|
1500
|
+
console.error('Error removing action from agent:', error);
|
|
1501
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to remove action', 'error', 3000);
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
238
1504
|
}
|
|
239
|
-
static { this.ɵfac =
|
|
240
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 3, vars: 4, consts: [["form", "ngForm"], ["mjFillContainer", "", 1, "record-form-container", 3, "bottomMargin", "rightMargin"], ["class", "record-form", "mjFillContainer", "", 4, "ngIf"], [3, "
|
|
1505
|
+
static { this.ɵfac = function AIAgentFormComponentExtended_Factory(t) { return new (t || AIAgentFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.DialogService), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); }; }
|
|
1506
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentFormComponentExtended, selectors: [["mj-ai-agent-form"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 3, vars: 4, consts: [["form", "ngForm"], ["mjFillContainer", "", 1, "record-form-container", 3, "bottomMargin", "rightMargin"], ["class", "record-form", "mjFillContainer", "", 4, "ngIf"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], ["mjFillContainer", "", 1, "record-form"], [3, "form"], [1, "agent-header"], [1, "agent-header-content"], [1, "agent-overview"], [1, "agent-icon-wrapper"], [1, "fa-solid", "fa-robot"], [1, "agent-info"], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModel"], [1, "agent-name"], [1, "agent-meta"], [1, "status-badge", 3, "background-color"], [1, "execution-mode"], [1, "parent-agent"], [1, "agent-actions"], ["themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "disabled"], ["fillMode", "outline", "size", "small", "title", "Refresh all data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "form-content"], [3, "expanded"], ["title", "Details", 3, "expanded"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], ["name", "agentName", "placeholder", "Enter agent name...", 1, "agent-name-input", 3, "ngModelChange", "ngModel"], [1, "status-badge"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-sitemap"], ["themeColor", "primary", "size", "large", "title", "Run this AI agent", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-comments"], [1, "panel-content"], [1, "section-header"], [1, "header-actions"], ["themeColor", "primary", "size", "small"], [1, "empty-state"], [1, "entity-list"], ["themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-plus"], ["themeColor", "primary"], ["themeColor", "primary", 3, "click"], [1, "entity-item", "prompt-item"], [1, "view-more-item"], [1, "entity-item", "prompt-item", 3, "click"], [1, "item-icon"], [1, "fa-solid", "fa-comment-dots"], [1, "item-content"], [1, "item-title"], [1, "item-preview"], [1, "item-meta"], [1, "meta-tag"], [1, "item-actions"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt"], [1, "fa-solid", "fa-external-link"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove prompt", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "view-more-item", 3, "click"], [1, "fa-solid", "fa-bolt"], [1, "entity-item", "action-item"], [1, "entity-item", "action-item", 3, "click"], [1, "status-tag"], [1, "fa-solid"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action"], ["fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove action", 3, "click"], [1, "section-description"], [1, "entity-item", "sub-agent-item"], [1, "entity-item", "sub-agent-item", 3, "click"], [1, "status-tag", 3, "background-color"], [1, "fa-solid", "fa-brain"], [1, "entity-item", "learning-item"], [1, "entity-item", "learning-item", 3, "click"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-sticky-note"], [1, "entity-item", "note-item"], [1, "entity-item", "note-item", 3, "click"], [1, "fa-solid", "fa-history"], [1, "timeline-list"], [1, "timeline-item"], [1, "timeline-item", 3, "click"], [1, "timeline-marker"], [1, "timeline-content"], [1, "timeline-title"], [1, "timeline-date"], [1, "timeline-meta"], [1, "execution-time"], [1, "timeline-preview"], [1, "fa-solid", "fa-stopwatch"], [1, "fa-solid", "fa-info-circle"], [1, "form-fields-grid"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "aiAgent", "isVisible"]], template: function AIAgentFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
241
1507
|
i0.ɵɵprojectionDef();
|
|
242
1508
|
i0.ɵɵelementStart(0, "div", 1);
|
|
243
|
-
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Template,
|
|
1509
|
+
i0.ɵɵtemplate(1, AIAgentFormComponentExtended_form_1_Template, 30, 13, "form", 2)(2, AIAgentFormComponentExtended_Conditional_2_Template, 2, 11, "kendo-window", 3);
|
|
244
1510
|
i0.ɵɵelementEnd();
|
|
245
1511
|
} if (rf & 2) {
|
|
246
1512
|
i0.ɵɵproperty("bottomMargin", 20)("rightMargin", 5);
|
|
247
1513
|
i0.ɵɵadvance();
|
|
248
1514
|
i0.ɵɵproperty("ngIf", ctx.record);
|
|
249
1515
|
i0.ɵɵadvance();
|
|
250
|
-
i0.ɵɵconditional(ctx.
|
|
251
|
-
} }, dependencies: [i1.NgIf, i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.ExpansionPanelComponent, i3.ExpansionPanelTitleDirective, i4.TextBoxComponent, i5.DropDownListComponent, i6.ButtonComponent, i7.UserViewGridComponent, i8.FormToolbarComponent, i9.FillContainer, i10.AIAgentExecutionDialogComponent], styles: ["\n\n.agent-main-area[_ngcontent-%COMP%] {\n background: #ffffff;\n}\n\n.agent-header[_ngcontent-%COMP%] {\n border-radius: 8px 8px 0 0;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n}\n\n.action-buttons[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n min-width: 140px;\n}\n\n.action-buttons[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n background: #ffffff;\n}\n\n.generated-fields[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n\n\nkendo-expansionpanel[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n\n\nmj-user-view-grid[_ngcontent-%COMP%] {\n border: 1px solid #e9ecef;\n border-radius: 4px;\n}\n\n\n\n.status-active[_ngcontent-%COMP%] {\n background-color: #28a745;\n}\n\n.status-pending[_ngcontent-%COMP%] {\n background-color: #ffc107;\n}\n\n.status-disabled[_ngcontent-%COMP%] {\n background-color: #6c757d;\n}"] }); }
|
|
1516
|
+
i0.ɵɵconditional(ctx.showTestHarness ? 2 : -1);
|
|
1517
|
+
} }, dependencies: [i4.NgIf, i5.ɵNgNoValidate, i5.NgControlStatus, i5.NgControlStatusGroup, i5.NgModel, i5.NgForm, i6.PanelBarComponent, i6.PanelBarItemComponent, i6.PanelBarContentDirective, i6.PanelBarItemTitleDirective, i3.WindowComponent, i7.TextBoxComponent, i8.ButtonComponent, i9.FormToolbarComponent, i10.FillContainer, i11.AITestHarnessComponent, i4.DatePipe], styles: ["\n\n.record-form-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.agent-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 24px;\n}\n\n.agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input[_ngcontent-%COMP%] {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending[_ngcontent-%COMP%] {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.parent-agent[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.agent-meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n\n\n.agent-actions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary[_ngcontent-%COMP%] {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary[_ngcontent-%COMP%]:hover {\n background: #1976d2;\n}\n\n.action-button.secondary[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary[_ngcontent-%COMP%]:hover {\n background: #5a6268;\n}\n\n.action-warnings[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n\n\n .k-panelbar {\n border: none;\n background: transparent;\n}\n\n .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n background: white;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 16px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n\n\n.form-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.sub-grid-container[_ngcontent-%COMP%] {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; \n\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card[_ngcontent-%COMP%] {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card[_ngcontent-%COMP%]:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n}\n\n\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.sub-agent-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.model-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.learning-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.note-item[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.item-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag[_ngcontent-%COMP%], \n.priority-tag[_ngcontent-%COMP%], \n.status-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag[_ngcontent-%COMP%] {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag[_ngcontent-%COMP%] {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive[_ngcontent-%COMP%] {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.entity-item[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.view-more-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n\n\n.timeline-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.cards-container[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.prompt-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.action-card[_ngcontent-%COMP%] .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n}\n\n.card-title-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active[_ngcontent-%COMP%] {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive[_ngcontent-%COMP%] {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions[_ngcontent-%COMP%] {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n color: #2196f3;\n}\n\n\n\n.priority-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n\n\n.view-all-card[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content[_ngcontent-%COMP%] {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n transform: translateX(4px);\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%] {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child .timeline-marker[_ngcontent-%COMP%]::after {\n display: none;\n}\n\n.timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker[_ngcontent-%COMP%] {\n background: #6c757d;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.timeline-title[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n .agent-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .agent-header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions[_ngcontent-%COMP%] {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n \n \n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 20px 16px;\n }\n \n .section-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n \n\n .entity-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n \n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n \n .item-title[_ngcontent-%COMP%] {\n font-size: 15px;\n }\n \n .item-preview[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n \n .item-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n \n \n\n .timeline-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n \n .timeline-title[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date[_ngcontent-%COMP%] {\n align-self: flex-start;\n }\n \n \n\n .form-fields-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n \n\n .cards-container[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] }); }
|
|
252
1518
|
};
|
|
253
1519
|
AIAgentFormComponentExtended = __decorate([
|
|
254
1520
|
RegisterClass(BaseFormComponent, 'AI Agents')
|
|
@@ -256,9 +1522,9 @@ AIAgentFormComponentExtended = __decorate([
|
|
|
256
1522
|
export { AIAgentFormComponentExtended };
|
|
257
1523
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentFormComponentExtended, [{
|
|
258
1524
|
type: Component,
|
|
259
|
-
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\" mjFillContainer [bottomMargin]=\"20\" [rightMargin]=\"5\">\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" mjFillContainer>\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area -->\n <div class=\"agent-main-area\" style=\"display: flex; flex-direction: column; height: 100%; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"agent-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \n <!-- Left: Agent Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-robot\" style=\"color: #17a2b8; font-size: 1.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: #495057; font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled AI Agent' }}</h4>\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\" \n style=\"color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ record.Status }}\n </span>\n }\n </div>\n \n <!-- Status Editor when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">Status</label>\n <kendo-dropdownlist [(ngModel)]=\"record.Status\"\n name=\"agentStatus\"\n [data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </kendo-dropdownlist>\n </div>\n </div>\n }\n \n <!-- Description -->\n @if (record.Description) {\n <p style=\"margin: 8px 0 0 0; color: #6c757d; line-height: 1.4; max-width: 600px;\">\n {{ record.Description }}\n </p>\n }\n </div>\n \n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID && canExecute) {\n <kendo-button themeColor=\"info\" size=\"large\"\n (click)=\"executeAIAgent()\"\n title=\"Execute this AI agent\">\n <i class=\"fa-solid fa-play\"></i> Execute Agent\n </kendo-button>\n } @else if (record.ID && !canExecute) {\n <kendo-button themeColor=\"info\" size=\"large\" [disabled]=\"true\"\n title=\"Agent must be Active to execute\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i> Cannot Execute\n </kendo-button>\n }\n \n @if (record.ID) {\n <kendo-button fillMode=\"outline\" themeColor=\"info\"\n title=\"View execution history\">\n <i class=\"fa-solid fa-history\"></i> History\n </kendo-button>\n }\n </div>\n \n @if (!canExecute && record.ID) {\n <div style=\"font-size: 0.75em; color: #dc3545; text-align: right; max-width: 200px;\">\n @if (record.Status !== 'Active') {\n \u2022 Agent must be Active<br>\n }\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Main Form Content -->\n <div class=\"form-content\" style=\"flex: 1; padding: 20px;\">\n <!-- Use the generated form's default content -->\n <ng-content></ng-content>\n \n <!-- Generated form fields will be inserted here by the base component -->\n <div class=\"generated-fields\">\n <!-- The base component will render all the standard fields here -->\n </div>\n \n @if (record.IsSaved) {\n <!-- Agent Execution History -->\n <kendo-expansionpanel [expanded]=\"false\" style=\"margin-top: 20px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-history\" style=\"color: #6c757d;\"></i>\n Execution History\n </span>\n </ng-template>\n \n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Runs','AgentID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Runs')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n [BottomMargin]=\"0\"\n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n \n <!-- Agent Prompts -->\n <kendo-expansionpanel [expanded]=\"false\" style=\"margin-top: 20px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-comments\" style=\"color: #6c757d;\"></i>\n Agent Prompts\n </span>\n </ng-template>\n \n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','AgentID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n [BottomMargin]=\"0\"\n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n\n <!-- AI Agent Execution Dialog -->\n @if (showExecutionDialog) {\n <mj-ai-agent-execution-dialog \n [aiAgent]=\"record\"\n [isVisible]=\"showExecutionDialog\"\n (visibilityChange)=\"onExecutionDialogClosed()\">\n </mj-ai-agent-execution-dialog>\n }\n</div>", styles: ["/* AI Agent Form Styles */\n.agent-main-area {\n background: #ffffff;\n}\n\n.agent-header {\n border-radius: 8px 8px 0 0;\n}\n\n.status-badge {\n display: inline-block;\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n}\n\n.action-buttons kendo-button {\n min-width: 140px;\n}\n\n.action-buttons i {\n margin-right: 6px;\n}\n\n/* Form content styling */\n.form-content {\n background: #ffffff;\n}\n\n.generated-fields {\n margin-bottom: 20px;\n}\n\n/* Expansion panel styling */\nkendo-expansionpanel {\n border: 1px solid #e9ecef;\n border-radius: 6px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Grid styling */\nmj-user-view-grid {\n border: 1px solid #e9ecef;\n border-radius: 4px;\n}\n\n/* Status-specific styling */\n.status-active {\n background-color: #28a745;\n}\n\n.status-pending {\n background-color: #ffc107;\n}\n\n.status-disabled {\n background-color: #6c757d;\n}"] }]
|
|
260
|
-
}],
|
|
261
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber:
|
|
1525
|
+
args: [{ selector: 'mj-ai-agent-form', template: "<div class=\"record-form-container\" mjFillContainer [bottomMargin]=\"20\" [rightMargin]=\"5\">\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" mjFillContainer>\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Compact Header with Agent Overview -->\n <div class=\"agent-header\">\n <div class=\"agent-header-content\">\n <div class=\"agent-overview\">\n <div class=\"agent-icon-wrapper\">\n <i class=\"fa-solid fa-robot\"></i>\n </div>\n <div class=\"agent-info\">\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" \n name=\"agentName\"\n placeholder=\"Enter agent name...\"\n class=\"agent-name-input\">\n </kendo-textbox>\n } @else {\n <h1 class=\"agent-name\">{{ record.Name || 'Untitled AI Agent' }}</h1>\n }\n <div class=\"agent-meta\">\n @if (record.Status) {\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid fa-circle\"></i>\n {{ record.Status }}\n </span>\n }\n @if (record.ExecutionMode) {\n <span class=\"execution-mode\">\n <i [class]=\"getExecutionModeIcon(record.ExecutionMode)\"></i>\n {{ record.ExecutionMode }}\n </span>\n }\n @if (record.Parent) {\n <span class=\"parent-agent\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Child of {{ record.Parent }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"agent-actions\">\n @if (record.ID) {\n <kendo-button themeColor=\"primary\" size=\"large\"\n (click)=\"openTestHarness()\"\n [disabled]=\"record.Status !== 'Active'\"\n title=\"Run this AI agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </kendo-button>\n }\n <kendo-button fillMode=\"outline\" size=\"small\" (click)=\"refreshRelatedData()\" title=\"Refresh all data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </kendo-button>\n </div>\n </div>\n </div>\n\n <!-- Single Pane Layout with Expander Panels -->\n <div class=\"form-content\">\n <kendo-panelbar>\n\n <!-- Prompts (High Priority - Expanded by default for existing agents) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"true\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-comments\"></i> Prompts{{ promptCount > 0 ? ' (' + promptCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Add Prompt\n </kendo-button>\n }\n </div>\n </div>\n \n @if (promptCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comments\"></i>\n <h4>No Prompts Configured</h4>\n <p>Add prompts to define how this agent processes requests and generates responses.</p>\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" (click)=\"addPrompt()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Prompt\n </kendo-button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (prompt of agentPrompts; track prompt.ID) {\n <div class=\"entity-item prompt-item\" (click)=\"navigateToEntity('AI Prompts', prompt.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ prompt.Type || 'System Prompt' }}</div>\n @if (prompt.TemplateText) {\n <div class=\"item-preview\">{{ prompt.TemplateText.substring(0, 120) }}{{ prompt.TemplateText.length > 120 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (prompt.PromptRole) {\n <span class=\"meta-tag\">{{ prompt.PromptRole }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode) {\n <kendo-button \n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removePrompt(prompt, $event)\"\n title=\"Remove prompt\">\n <i class=\"fa-solid fa-trash\"></i>\n </kendo-button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (promptCount > agentPrompts.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Prompts', '')\">\n <span>View all {{ promptCount }} prompts...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Actions (High Priority - Expanded by default for existing agents) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"actionCount > 0\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-bolt\"></i> Actions{{ actionCount > 0 ? ' (' + actionCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Add Action\n </kendo-button>\n }\n </div>\n </div>\n \n @if (actionCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>No Actions Configured</h4>\n <p>Add actions to enable this agent to perform specific tasks and operations.</p>\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" (click)=\"configureActions()\">\n <i class=\"fa-solid fa-plus\"></i> Configure First Action\n </kendo-button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (action of agentActions; track action.ID) {\n <div class=\"entity-item action-item\" (click)=\"navigateToEntity('Actions', action.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-bolt\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ action.Name || 'Untitled Action' }}</div>\n @if (action.Description) {\n <div class=\"item-preview\">{{ action.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (action.Type) {\n <span class=\"meta-tag\">{{ action.Type }}</span>\n }\n <span class=\"status-tag\" [class.active]=\"action.Status==='Active'\" [class.inactive]=\"action.Status!=='Active'\">\n <i class=\"fa-solid\" [class.fa-check-circle]=\"action.Status==='Active'\" [class.fa-times-circle]=\"action.Status!=='Active'\"></i>\n {{ action.Status }}\n </span>\n </div>\n </div>\n <div class=\"item-actions\">\n @if (EditMode) {\n <kendo-button \n fillMode=\"flat\" \n themeColor=\"error\" \n size=\"small\"\n (click)=\"removeAction(action, $event)\"\n title=\"Remove action\">\n <i class=\"fa-solid fa-trash\"></i>\n </kendo-button>\n }\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (actionCount > agentActions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Actions', '')\">\n <span>View all {{ actionCount }} actions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Sub-Agents (High Priority - Expanded by default for existing agents) -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"subAgentCount > 0\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sitemap\"></i> Sub-Agents{{ subAgentCount > 0 ? ' (' + subAgentCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage hierarchical relationships with child agents that work under this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Add Sub-Agent\n </kendo-button>\n }\n </div>\n </div>\n \n @if (subAgentCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sitemap\"></i>\n <h4>No Sub-Agents</h4>\n <p>Create sub-agents to build a hierarchical structure for complex workflows.</p>\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" (click)=\"createSubAgent()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Sub-Agent\n </kendo-button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (subAgent of subAgents; track subAgent.ID) {\n <div class=\"entity-item sub-agent-item\" (click)=\"navigateToEntity('AI Agents', subAgent.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-robot\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ subAgent.Name || 'Untitled Sub-Agent' }}</div>\n @if (subAgent.Description) {\n <div class=\"item-preview\">{{ subAgent.Description }}</div>\n }\n <div class=\"item-meta\">\n @if (subAgent.Status) {\n <span class=\"status-tag\" [style.background-color]=\"getStatusBadgeColor()\">\n {{ subAgent.Status }}\n </span>\n }\n @if (subAgent.ExecutionMode) {\n <span class=\"meta-tag\">{{ subAgent.ExecutionMode }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (subAgentCount > subAgents.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agents', '')\">\n <span>View all {{ subAgentCount }} sub-agents...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n\n <!-- Learning & Analytics -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-brain\"></i> Learning Cycles{{ learningCycleCount > 0 ? ' (' + learningCycleCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Monitor and manage learning cycles, training sessions, and performance analytics.\n </div>\n </div>\n \n @if (learningCycleCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>No Learning Cycles</h4>\n <p>Learning cycles will appear here as the agent processes requests and improves over time.</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (cycle of learningCycles; track cycle.ID) {\n <div class=\"entity-item learning-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', cycle.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-brain\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">Learning Cycle {{ cycle.ID.substring(0, 8) }}</div>\n <div class=\"item-meta\">\n @if (cycle.StartedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ cycle.StartedAt | date:'short' }}\n </span>\n }\n @if (cycle.Status) {\n <span class=\"status-tag\">{{ cycle.Status }}</span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (learningCycleCount > learningCycles.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Learning Cycles', '')\">\n <span>View all {{ learningCycleCount }} cycles...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Notes & Documentation -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-sticky-note\"></i> Notes{{ noteCount > 0 ? ' (' + noteCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Manage notes, documentation, and annotations for this agent.\n </div>\n <div class=\"header-actions\">\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" size=\"small\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Add Note\n </kendo-button>\n }\n </div>\n </div>\n \n @if (noteCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n <h4>No Notes</h4>\n <p>Add notes to document important information, observations, or instructions for this agent.</p>\n @if (EditMode) {\n <kendo-button themeColor=\"primary\" (click)=\"addNote()\">\n <i class=\"fa-solid fa-plus\"></i> Create First Note\n </kendo-button>\n }\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (note of agentNotes; track note.ID) {\n <div class=\"entity-item note-item\" (click)=\"navigateToEntity('AI Agent Notes', note.ID)\">\n <div class=\"item-icon\">\n <i class=\"fa-solid fa-sticky-note\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ note.Type || 'Note' }}</div>\n @if (note.Note) {\n <div class=\"item-preview\">{{ note.Note.substring(0, 100) }}{{ note.Note.length > 100 ? '...' : '' }}</div>\n }\n <div class=\"item-meta\">\n @if (note.__mj_CreatedAt) {\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-calendar\"></i>\n {{ note.__mj_CreatedAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"item-actions\">\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n @if (noteCount > agentNotes.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Notes', '')\">\n <span>View all {{ noteCount }} notes...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Requests & History -->\n @if (record.ID) {\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-history\"></i> Execution History{{ executionHistoryCount > 0 ? ' (' + executionHistoryCount + ')' : '' }}\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"section-header\">\n <div class=\"section-description\">\n Review execution history, requests, and performance metrics for this agent.\n </div>\n </div>\n \n @if (executionHistoryCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <h4>No Execution History</h4>\n <p>This agent hasn't been executed yet. Use the Test Agent button to run the agent and see execution history here.</p>\n </div>\n } @else {\n <div class=\"timeline-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"timeline-item\" (click)=\"navigateToEntity('AI Agent Runs', execution.ID)\">\n <div class=\"timeline-marker\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n <i [class]=\"getExecutionStatusIcon(execution.Status)\"></i>\n </div>\n <div class=\"timeline-content\">\n <div class=\"timeline-title\">\n Execution #{{ execution.ID.substring(0, 8) }}\n <span class=\"timeline-date\">{{ execution.__mj_CreatedAt | date:'MMM d, h:mm a' }}</span>\n </div>\n <div class=\"timeline-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getExecutionStatusColor(execution.Status)\">\n {{ execution.Status || 'Unknown' }}\n </span>\n @if (execution.CompletedAt) {\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n {{ formatExecutionTimeFromDates(execution.StartedAt, execution.CompletedAt) }}\n </span>\n }\n </div>\n @if (execution.Result) {\n <div class=\"timeline-preview\">{{ execution.Result.substring(0, 120) }}{{ execution.Result.length > 120 ? '...' : '' }}</div>\n }\n </div>\n </div>\n }\n @if (executionHistoryCount > recentExecutions.length) {\n <div class=\"view-more-item\" (click)=\"navigateToEntity('AI Agent Runs', '')\">\n <span>View all {{ executionHistoryCount }} executions...</span>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n\n <!-- Details (Core Configuration - Last Panel) -->\n <kendo-panelbar-item [expanded]=\"false\" title=\"Details\">\n <ng-template kendoPanelBarItemTitle>\n <i class=\"fa-solid fa-info-circle\"></i> Details\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"form-fields-grid\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n\n </kendo-panelbar>\n </div>\n </form>\n\n <!-- AI Agent Test Harness -->\n @if (showTestHarness) {\n <kendo-window \n [width]=\"1200\" \n [height]=\"800\" \n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Agent - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [aiAgent]=\"record\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\n }\n</div>", styles: ["/* AI Agent Form - Modern Redesign */\n.record-form-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: #f5f7fa;\n}\n\n.record-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* Agent Header Section - Compact Design */\n.agent-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n padding: 12px 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.04);\n}\n\n.agent-header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n}\n\n.agent-overview {\n display: flex;\n align-items: center;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-icon-wrapper {\n width: 48px;\n height: 48px;\n background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);\n flex-shrink: 0;\n}\n\n.agent-icon-wrapper i {\n color: white;\n font-size: 24px;\n}\n\n.agent-info {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n font-size: 22px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n line-height: 1.2;\n}\n\n.agent-name-input {\n font-size: 18px !important;\n font-weight: 500 !important;\n height: 36px !important;\n width: 100% !important;\n max-width: 400px !important;\n}\n\n.agent-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge.active {\n background: #28a745;\n color: white;\n}\n\n.status-badge.pending {\n background: #ffc107;\n color: #212529;\n}\n\n.status-badge.disabled {\n background: #6c757d;\n color: white;\n}\n\n.execution-mode,\n.parent-agent {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.execution-mode i,\n.parent-agent i {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.agent-meta-info {\n display: flex;\n gap: 24px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-label {\n font-size: 12px;\n font-weight: 600;\n color: #6c757d;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-value {\n font-size: 14px;\n color: #495057;\n font-weight: 500;\n}\n\n.agent-description {\n margin-top: 16px;\n color: #6c757d;\n line-height: 1.6;\n font-size: 15px;\n}\n\n.agent-description-input {\n width: 100%;\n max-width: 600px;\n min-height: 80px;\n resize: vertical;\n}\n\n/* Action Buttons Section */\n.agent-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.action-buttons-row {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.action-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.08);\n}\n\n.action-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.12);\n}\n\n.action-button.primary {\n background: #2196f3;\n color: white;\n}\n\n.action-button.primary:hover {\n background: #1976d2;\n}\n\n.action-button.secondary {\n background: #6c757d;\n color: white;\n}\n\n.action-button.secondary:hover {\n background: #5a6268;\n}\n\n.action-warnings {\n margin-top: 8px;\n font-size: 13px;\n color: #dc3545;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Panel-Based Form Content */\n.form-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n background: #f5f7fa;\n padding: 12px;\n}\n\n/* Kendo PanelBar Styling */\n::ng-deep .k-panelbar {\n border: none;\n background: transparent;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item {\n border: none;\n border-radius: 12px;\n margin-bottom: 12px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n background: white;\n overflow: hidden;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n background: white;\n border: none;\n padding: 16px 20px;\n border-radius: 12px 12px 0 0;\n color: #2c3e50;\n font-weight: 600;\n font-size: 16px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header:hover {\n background: #f8f9fa;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header {\n background: #2196f3;\n color: white;\n border-radius: 12px 12px 0 0;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle {\n position: absolute;\n right: 24px;\n color: inherit;\n font-size: 14px;\n transition: transform 0.2s ease;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item.k-panelbar-expanded > .k-header .k-panelbar-toggle {\n transform: rotate(180deg);\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-header .k-panelbar-toggle::before {\n content: '\\f107';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n}\n\n::ng-deep .k-panelbar > .k-panelbar-item > .k-content {\n padding: 0;\n border: none;\n background: white;\n border-radius: 0 0 12px 12px;\n}\n\n::ng-deep .k-panelbar .k-header .k-panelbar-icon {\n font-size: 18px;\n color: #2196f3;\n margin-right: 8px;\n}\n\n::ng-deep .k-panelbar .k-panelbar-expanded .k-header .k-panelbar-icon {\n color: white;\n}\n\n/* Panel Content */\n.panel-content {\n padding: 16px;\n background: white;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 16px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n\n.tab-section {\n background: white;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n border: 1px solid #e0e6ed;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #f0f4f8;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 0;\n color: #2c3e50;\n font-size: 18px;\n font-weight: 600;\n}\n\n.section-title i {\n color: #2196f3;\n font-size: 20px;\n}\n\n.section-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.6;\n margin-top: 8px;\n}\n\n/* Form Fields Grid */\n.form-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 20px;\n}\n\n.form-field-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-field-label {\n font-size: 13px;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Sub-grids styling (legacy) */\n.sub-grid-container {\n height: 500px;\n border: 1px solid #e0e6ed;\n border-radius: 8px;\n overflow: hidden;\n display: none; /* Hidden as we now use cards */\n}\n\n/* Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Loading State */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.loading-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.spinner-icon {\n width: 48px;\n height: 48px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2196f3;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Quick Actions */\n.quick-actions {\n display: flex;\n gap: 16px;\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid #e0e6ed;\n}\n\n.quick-action-card {\n flex: 1;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e0e6ed;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: center;\n}\n\n.quick-action-card:hover {\n background: white;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-2px);\n}\n\n.quick-action-icon {\n font-size: 32px;\n color: #2196f3;\n margin-bottom: 8px;\n}\n\n.quick-action-title {\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.quick-action-description {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Header Actions */\n.header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n/* Entity List Interface */\n.entity-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n}\n\n.entity-item {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.entity-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n transform: translateY(-1px);\n}\n\n.item-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.prompt-item .item-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-item .item-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.sub-agent-item .item-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.model-item .item-icon {\n background: linear-gradient(135deg, #6f42c1, #563d7c);\n}\n\n.learning-item .item-icon {\n background: linear-gradient(135deg, #e83e8c, #dc3545);\n}\n\n.note-item .item-icon {\n background: linear-gradient(135deg, #fd7e14, #e55a00);\n}\n\n.item-icon i {\n color: #6c757d;\n font-size: 18px;\n}\n\n.prompt-item .item-icon i,\n.action-item .item-icon i,\n.sub-agent-item .item-icon i,\n.model-item .item-icon i,\n.learning-item .item-icon i,\n.note-item .item-icon i {\n color: white;\n}\n\n.item-content {\n flex: 1;\n min-width: 0;\n}\n\n.item-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n}\n\n.item-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n margin: 4px 0 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.item-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.meta-tag,\n.priority-tag,\n.status-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n padding: 3px 8px;\n border-radius: 6px;\n font-weight: 500;\n}\n\n.meta-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.priority-tag {\n color: white;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-tag {\n background: #e9ecef;\n color: #495057;\n}\n\n.status-tag.active {\n background: #d4edda;\n color: #28a745;\n}\n\n.status-tag.inactive {\n background: #f8d7da;\n color: #dc3545;\n}\n\n.item-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n color: #6c757d;\n font-size: 16px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-item:hover .item-actions {\n opacity: 1;\n}\n\n.entity-item:hover .item-actions > i {\n color: #2196f3;\n}\n\n.view-more-item {\n padding: 16px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n text-align: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-more-item:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n color: #2196f3;\n}\n\n/* Timeline List for Execution History */\n.timeline-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n background: #f8f9fa;\n border: 1px solid #e0e6ed;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n background: white;\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n\n.timeline-marker {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker i {\n color: white;\n font-size: 14px;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n background: #e9ecef;\n padding: 2px 8px;\n border-radius: 6px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.timeline-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.timeline-preview {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Modern Card-Based Interface (Legacy - Keep for backward compatibility) */\n.cards-container {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n margin-top: 16px;\n}\n\n.entity-card {\n background: white;\n border: 1px solid #e0e6ed;\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n position: relative;\n overflow: hidden;\n}\n\n.entity-card:hover {\n transform: translateY(-4px);\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n border-color: #2196f3;\n}\n\n.entity-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #2196f3, #42a5f5);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.entity-card:hover::before {\n opacity: 1;\n}\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.card-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sub-agent-card .card-icon {\n background: linear-gradient(135deg, #2196f3, #1976d2);\n}\n\n.prompt-card .card-icon {\n background: linear-gradient(135deg, #20c997, #17a673);\n}\n\n.action-card .card-icon {\n background: linear-gradient(135deg, #ffc107, #e0a800);\n}\n\n.card-icon i {\n font-size: 18px;\n color: #6c757d;\n}\n\n.sub-agent-card .card-icon i,\n.prompt-card .card-icon i,\n.action-card .card-icon i {\n color: white;\n}\n\n.card-title-section {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0 0 4px 0;\n line-height: 1.3;\n word-wrap: break-word;\n}\n\n.card-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.card-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6c757d;\n padding: 4px 8px;\n background: #f8f9fa;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n opacity: 0.8;\n}\n\n.meta-item.active {\n color: #28a745;\n background: #d4edda;\n}\n\n.meta-item.inactive {\n color: #dc3545;\n background: #f8d7da;\n}\n\n.card-actions {\n opacity: 0;\n transition: opacity 0.3s ease;\n color: #6c757d;\n}\n\n.entity-card:hover .card-actions {\n opacity: 1;\n color: #2196f3;\n}\n\n/* Badge Styles */\n.priority-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.type-badge {\n padding: 2px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n background: #e9ecef;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* View All Card */\n.view-all-card {\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.view-all-card:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n transform: translateY(-2px);\n}\n\n.view-all-content {\n text-align: center;\n color: #6c757d;\n font-weight: 500;\n}\n\n.view-all-content i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n/* Timeline Interface for History */\n.timeline-container {\n position: relative;\n margin-top: 16px;\n}\n\n.timeline-item {\n display: flex;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.3s ease;\n border-radius: 12px;\n padding: 16px;\n background: transparent;\n}\n\n.timeline-item:hover {\n background: #f8f9fa;\n transform: translateX(4px);\n}\n\n.timeline-item.view-all {\n cursor: pointer;\n background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n border: 2px dashed #dee2e6;\n}\n\n.timeline-item.view-all:hover {\n background: linear-gradient(135deg, #e9ecef, #dee2e6);\n border-color: #2196f3;\n}\n\n.timeline-marker {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 16px;\n flex-shrink: 0;\n position: relative;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.timeline-marker::after {\n content: '';\n position: absolute;\n top: 50px;\n left: 50%;\n transform: translateX(-50%);\n width: 2px;\n height: 24px;\n background: #e0e6ed;\n}\n\n.timeline-item:last-child .timeline-marker::after {\n display: none;\n}\n\n.timeline-marker i {\n color: white;\n font-size: 16px;\n}\n\n.timeline-marker.view-all-marker {\n background: #6c757d;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n gap: 16px;\n}\n\n.timeline-title {\n font-size: 16px;\n font-weight: 600;\n color: #2c3e50;\n margin: 0;\n line-height: 1.3;\n}\n\n.timeline-date {\n font-size: 12px;\n color: #6c757d;\n white-space: nowrap;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-status {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #6c757d;\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 6px;\n}\n\n.timeline-description {\n color: #6c757d;\n font-size: 14px;\n line-height: 1.5;\n margin: 8px 0;\n}\n\n.timeline-error {\n color: #dc3545;\n font-size: 13px;\n background: #f8d7da;\n padding: 8px 12px;\n border-radius: 6px;\n margin-top: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-error i {\n flex-shrink: 0;\n}\n\n/* Enhanced Empty States */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n background: #f8f9fa;\n border-radius: 12px;\n border: 2px dashed #dee2e6;\n margin-top: 16px;\n}\n\n.empty-state i {\n font-size: 48px;\n color: #dee2e6;\n margin-bottom: 16px;\n}\n\n.empty-state h4 {\n color: #495057;\n font-weight: 600;\n margin-bottom: 8px;\n font-size: 18px;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 20px auto;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header Responsiveness */\n .agent-header {\n padding: 16px;\n }\n \n .agent-header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .agent-overview {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .agent-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .agent-actions {\n width: 100%;\n align-self: stretch;\n }\n \n .action-button {\n flex: 1;\n justify-content: center;\n }\n \n /* Panel Responsiveness */\n .form-content {\n padding: 12px;\n }\n \n ::ng-deep .k-panelbar > .k-panelbar-item > .k-header {\n padding: 16px 20px;\n font-size: 15px;\n }\n \n .panel-content {\n padding: 20px 16px;\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .header-actions {\n flex-wrap: wrap;\n align-self: stretch;\n }\n \n /* Entity List Responsiveness */\n .entity-item {\n padding: 12px;\n gap: 12px;\n }\n \n .item-icon {\n width: 36px;\n height: 36px;\n }\n \n .item-icon i {\n font-size: 16px;\n }\n \n .item-title {\n font-size: 15px;\n }\n \n .item-preview {\n font-size: 13px;\n }\n \n .item-meta {\n gap: 8px;\n }\n \n /* Timeline Responsiveness */\n .timeline-item {\n padding: 12px;\n gap: 12px;\n }\n \n .timeline-marker {\n width: 28px;\n height: 28px;\n }\n \n .timeline-marker i {\n font-size: 12px;\n }\n \n .timeline-title {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .timeline-date {\n align-self: flex-start;\n }\n \n /* Form Field Responsiveness */\n .form-fields-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n /* Legacy card support */\n .cards-container {\n grid-template-columns: 1fr;\n }\n}"] }]
|
|
1526
|
+
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DialogService }, { type: i0.ViewContainerRef }], null); })();
|
|
1527
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentFormComponentExtended, { className: "AIAgentFormComponentExtended", filePath: "src/lib/custom/AIAgents/ai-agent-form.component.ts", lineNumber: 49 }); })();
|
|
262
1528
|
export function LoadAIAgentFormComponentExtended() {
|
|
263
1529
|
// This function is called to ensure the component is loaded and registered
|
|
264
1530
|
}
|