@memberjunction/ng-dashboards 2.42.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.
Files changed (117) hide show
  1. package/dist/AI/ai-dashboard.component.d.ts +54 -0
  2. package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
  3. package/dist/AI/ai-dashboard.component.js +248 -0
  4. package/dist/AI/ai-dashboard.component.js.map +1 -0
  5. package/dist/AI/components/agents/agent-configuration.component.d.ts +41 -0
  6. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -0
  7. package/dist/AI/components/agents/agent-configuration.component.js +325 -0
  8. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -0
  9. package/dist/AI/components/agents/agent-editor.component.d.ts +77 -0
  10. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -0
  11. package/dist/AI/components/agents/agent-editor.component.js +869 -0
  12. package/dist/AI/components/agents/agent-editor.component.js.map +1 -0
  13. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +33 -0
  14. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -0
  15. package/dist/AI/components/agents/agent-filter-panel.component.js +144 -0
  16. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -0
  17. package/dist/AI/components/execution-monitoring.component.d.ts +13 -0
  18. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -0
  19. package/dist/AI/components/execution-monitoring.component.js +30 -0
  20. package/dist/AI/components/execution-monitoring.component.js.map +1 -0
  21. package/dist/AI/components/models/model-management.component.d.ts +73 -0
  22. package/dist/AI/components/models/model-management.component.d.ts.map +1 -0
  23. package/dist/AI/components/models/model-management.component.js +669 -0
  24. package/dist/AI/components/models/model-management.component.js.map +1 -0
  25. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +49 -0
  26. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -0
  27. package/dist/AI/components/prompts/prompt-filter-panel.component.js +186 -0
  28. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -0
  29. package/dist/AI/components/prompts/prompt-management.component.d.ts +113 -0
  30. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -0
  31. package/dist/AI/components/prompts/prompt-management.component.js +1316 -0
  32. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -0
  33. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +33 -0
  34. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -0
  35. package/dist/AI/components/system/system-config-filter-panel.component.js +146 -0
  36. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -0
  37. package/dist/AI/components/system/system-configuration.component.d.ts +37 -0
  38. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -0
  39. package/dist/AI/components/system/system-configuration.component.js +311 -0
  40. package/dist/AI/components/system/system-configuration.component.js.map +1 -0
  41. package/dist/Actions/actions-management-dashboard.component.d.ts +50 -0
  42. package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
  43. package/dist/Actions/actions-management-dashboard.component.js +282 -0
  44. package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
  45. package/dist/Actions/components/actions-list-view.component.d.ts +52 -0
  46. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -0
  47. package/dist/Actions/components/actions-list-view.component.js +366 -0
  48. package/dist/Actions/components/actions-list-view.component.js.map +1 -0
  49. package/dist/Actions/components/actions-overview.component.d.ts +71 -0
  50. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -0
  51. package/dist/Actions/components/actions-overview.component.js +605 -0
  52. package/dist/Actions/components/actions-overview.component.js.map +1 -0
  53. package/dist/Actions/components/categories-list-view.component.d.ts +11 -0
  54. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -0
  55. package/dist/Actions/components/categories-list-view.component.js +35 -0
  56. package/dist/Actions/components/categories-list-view.component.js.map +1 -0
  57. package/dist/Actions/components/code-management.component.d.ts +11 -0
  58. package/dist/Actions/components/code-management.component.d.ts.map +1 -0
  59. package/dist/Actions/components/code-management.component.js +35 -0
  60. package/dist/Actions/components/code-management.component.js.map +1 -0
  61. package/dist/Actions/components/entity-integration.component.d.ts +11 -0
  62. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -0
  63. package/dist/Actions/components/entity-integration.component.js +35 -0
  64. package/dist/Actions/components/entity-integration.component.js.map +1 -0
  65. package/dist/Actions/components/execution-monitoring.component.d.ts +83 -0
  66. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -0
  67. package/dist/Actions/components/execution-monitoring.component.js +629 -0
  68. package/dist/Actions/components/execution-monitoring.component.js.map +1 -0
  69. package/dist/Actions/components/executions-list-view.component.d.ts +11 -0
  70. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -0
  71. package/dist/Actions/components/executions-list-view.component.js +35 -0
  72. package/dist/Actions/components/executions-list-view.component.js.map +1 -0
  73. package/dist/Actions/components/scheduled-actions.component.d.ts +11 -0
  74. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -0
  75. package/dist/Actions/components/scheduled-actions.component.js +35 -0
  76. package/dist/Actions/components/scheduled-actions.component.js.map +1 -0
  77. package/dist/Actions/components/security-permissions.component.d.ts +11 -0
  78. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -0
  79. package/dist/Actions/components/security-permissions.component.js +35 -0
  80. package/dist/Actions/components/security-permissions.component.js.map +1 -0
  81. package/dist/Actions/index.d.ts +11 -0
  82. package/dist/Actions/index.d.ts.map +1 -0
  83. package/dist/Actions/index.js +11 -0
  84. package/dist/Actions/index.js.map +1 -0
  85. package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
  86. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
  87. package/dist/EntityAdmin/components/entity-details.component.js +684 -0
  88. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
  89. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
  90. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
  91. package/dist/EntityAdmin/components/entity-filter-panel.component.js +162 -0
  92. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
  93. package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
  94. package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
  95. package/dist/EntityAdmin/components/erd-composite.component.js +288 -0
  96. package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
  97. package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
  98. package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
  99. package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
  100. package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
  101. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +50 -0
  102. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -0
  103. package/dist/EntityAdmin/entity-admin-dashboard.component.js +190 -0
  104. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -0
  105. package/dist/generic/base-dashboard.d.ts +65 -0
  106. package/dist/generic/base-dashboard.d.ts.map +1 -0
  107. package/dist/generic/base-dashboard.js +86 -0
  108. package/dist/generic/base-dashboard.js.map +1 -0
  109. package/dist/module.d.ts +43 -0
  110. package/dist/module.d.ts.map +1 -0
  111. package/dist/module.js +141 -0
  112. package/dist/module.js.map +1 -0
  113. package/dist/public-api.d.ts +6 -0
  114. package/dist/public-api.d.ts.map +1 -0
  115. package/dist/public-api.js +18 -0
  116. package/dist/public-api.js.map +1 -0
  117. package/package.json +46 -0
@@ -0,0 +1,325 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Component, Output, EventEmitter } from '@angular/core';
11
+ import { RunView } from '@memberjunction/core';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@progress/kendo-angular-layout";
14
+ import * as i2 from "@memberjunction/ng-container-directives";
15
+ import * as i3 from "./agent-filter-panel.component";
16
+ import * as i4 from "./agent-editor.component";
17
+ const _forTrack0 = ($index, $item) => $item.ID;
18
+ function AgentConfigurationComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
+ const _r1 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "mj-agent-editor", 2);
21
+ i0.ɵɵlistener("close", function AgentConfigurationComponent_Conditional_1_Template_mj_agent_editor_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAgentEditor()); })("openAgent", function AgentConfigurationComponent_Conditional_1_Template_mj_agent_editor_openAgent_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenAgentFromEditor($event)); });
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ const ctx_r1 = i0.ɵɵnextContext();
25
+ i0.ɵɵproperty("agentId", ctx_r1.selectedAgentId);
26
+ } }
27
+ function AgentConfigurationComponent_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵtext(0, " Hide Filters ");
29
+ } }
30
+ function AgentConfigurationComponent_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵtext(0, " Show Filters ");
32
+ } }
33
+ function AgentConfigurationComponent_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 17)(1, "div", 18)(2, "div", 19);
35
+ i0.ɵɵelement(3, "div", 20)(4, "div", 20)(5, "div", 20);
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵelementStart(6, "div", 21);
38
+ i0.ɵɵtext(7, "Loading agents...");
39
+ i0.ɵɵelementEnd()()();
40
+ } }
41
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_0_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 22);
43
+ i0.ɵɵelement(1, "i", 24);
44
+ i0.ɵɵelementStart(2, "h3");
45
+ i0.ɵɵtext(3, "No agents found");
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelementStart(4, "p");
48
+ i0.ɵɵtext(5, "No agents match your current filters. Try adjusting your search criteria or create a new agent.");
49
+ i0.ɵɵelementEnd()();
50
+ } }
51
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "span", 34);
53
+ i0.ɵɵtext(1, "\u2022 Exposed as Action");
54
+ i0.ɵɵelementEnd();
55
+ } }
56
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "p", 36);
58
+ i0.ɵɵtext(1);
59
+ i0.ɵɵelementEnd();
60
+ } if (rf & 2) {
61
+ const agent_r5 = i0.ɵɵnextContext().$implicit;
62
+ i0.ɵɵadvance();
63
+ i0.ɵɵtextInterpolate(agent_r5.Description);
64
+ } }
65
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelementStart(0, "p", 37);
67
+ i0.ɵɵtext(1, "No description provided");
68
+ i0.ɵɵelementEnd();
69
+ } }
70
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 38);
72
+ i0.ɵɵelement(1, "span", 44);
73
+ i0.ɵɵtext(2);
74
+ i0.ɵɵelementEnd();
75
+ } if (rf & 2) {
76
+ const agent_r5 = i0.ɵɵnextContext().$implicit;
77
+ i0.ɵɵadvance(2);
78
+ i0.ɵɵtextInterpolate1(" Parent: ", agent_r5.Parent, " ");
79
+ } }
80
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
81
+ const _r4 = i0.ɵɵgetCurrentView();
82
+ i0.ɵɵelementStart(0, "div", 26);
83
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template_div_click_0_listener() { const agent_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openAgentEditor(agent_r5.ID)); });
84
+ i0.ɵɵelementStart(1, "div", 27)(2, "div", 28)(3, "div", 29);
85
+ i0.ɵɵelement(4, "i");
86
+ i0.ɵɵelementEnd();
87
+ i0.ɵɵelementStart(5, "div", 30)(6, "h4", 31);
88
+ i0.ɵɵtext(7);
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementStart(8, "div", 32)(9, "span", 33);
91
+ i0.ɵɵtext(10);
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵtemplate(11, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_11_Template, 2, 0, "span", 34);
94
+ i0.ɵɵelementEnd()()();
95
+ i0.ɵɵelementStart(12, "div");
96
+ i0.ɵɵtext(13);
97
+ i0.ɵɵelementEnd()();
98
+ i0.ɵɵelementStart(14, "div", 35);
99
+ i0.ɵɵtemplate(15, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_15_Template, 2, 1, "p", 36)(16, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_16_Template, 2, 0, "p", 37)(17, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Conditional_17_Template, 3, 1, "div", 38);
100
+ i0.ɵɵelementEnd();
101
+ i0.ɵɵelementStart(18, "div", 39);
102
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template_div_click_18_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
103
+ i0.ɵɵelementStart(19, "button", 40);
104
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template_button_click_19_listener() { const agent_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openAgentEditor(agent_r5.ID)); });
105
+ i0.ɵɵelement(20, "i", 41);
106
+ i0.ɵɵtext(21, " View ");
107
+ i0.ɵɵelementEnd();
108
+ i0.ɵɵelementStart(22, "button", 42);
109
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template_button_click_22_listener() { const agent_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openAgentEditor(agent_r5.ID)); });
110
+ i0.ɵɵelement(23, "i", 43);
111
+ i0.ɵɵtext(24, " Configure ");
112
+ i0.ɵɵelementEnd()()();
113
+ } if (rf & 2) {
114
+ const agent_r5 = ctx.$implicit;
115
+ const ctx_r1 = i0.ɵɵnextContext(4);
116
+ i0.ɵɵadvance(4);
117
+ i0.ɵɵclassMap(ctx_r1.getExecutionModeIcon(agent_r5.ExecutionMode));
118
+ i0.ɵɵadvance(3);
119
+ i0.ɵɵtextInterpolate(agent_r5.Name);
120
+ i0.ɵɵadvance(3);
121
+ i0.ɵɵtextInterpolate(agent_r5.ExecutionMode);
122
+ i0.ɵɵadvance();
123
+ i0.ɵɵconditional(agent_r5.ExposeAsAction ? 11 : -1);
124
+ i0.ɵɵadvance();
125
+ i0.ɵɵclassMapInterpolate1("status-badge execution-mode-", agent_r5.ExecutionMode.toLowerCase(), "");
126
+ i0.ɵɵadvance();
127
+ i0.ɵɵtextInterpolate1(" ", agent_r5.ExecutionMode, " ");
128
+ i0.ɵɵadvance(2);
129
+ i0.ɵɵconditional(agent_r5.Description ? 15 : 16);
130
+ i0.ɵɵadvance(2);
131
+ i0.ɵɵconditional(agent_r5.Parent ? 17 : -1);
132
+ } }
133
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "div", 23);
135
+ i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_For_2_Template, 25, 11, "div", 25, _forTrack0);
136
+ i0.ɵɵelementEnd();
137
+ } if (rf & 2) {
138
+ const ctx_r1 = i0.ɵɵnextContext(3);
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵrepeater(ctx_r1.filteredAgents);
141
+ } }
142
+ function AgentConfigurationComponent_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵtemplate(0, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_0_Template, 6, 0, "div", 22)(1, AgentConfigurationComponent_Conditional_2_Conditional_19_Conditional_1_Template, 3, 0, "div", 23);
144
+ } if (rf & 2) {
145
+ const ctx_r1 = i0.ɵɵnextContext(2);
146
+ i0.ɵɵconditional(ctx_r1.filteredAgents.length === 0 ? 0 : 1);
147
+ } }
148
+ function AgentConfigurationComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
149
+ const _r3 = i0.ɵɵgetCurrentView();
150
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 4)(2, "button", 5);
151
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFilterPanel()); });
152
+ i0.ɵɵelement(3, "i", 6);
153
+ i0.ɵɵtemplate(4, AgentConfigurationComponent_Conditional_2_Conditional_4_Template, 1, 0)(5, AgentConfigurationComponent_Conditional_2_Conditional_5_Template, 1, 0);
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementStart(6, "span", 7);
156
+ i0.ɵɵtext(7);
157
+ i0.ɵɵelementEnd()();
158
+ i0.ɵɵelementStart(8, "div", 8)(9, "button", 9);
159
+ i0.ɵɵelement(10, "i", 10);
160
+ i0.ɵɵtext(11, " New Agent ");
161
+ i0.ɵɵelementEnd()()();
162
+ i0.ɵɵelementStart(12, "div", 11)(13, "kendo-splitter", 12);
163
+ i0.ɵɵlistener("layoutChange", function AgentConfigurationComponent_Conditional_2_Template_kendo_splitter_layoutChange_13_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMainSplitterChange($event)); });
164
+ i0.ɵɵelementStart(14, "kendo-splitter-pane", 13)(15, "mj-agent-filter-panel", 14);
165
+ i0.ɵɵlistener("filtersChange", function AgentConfigurationComponent_Conditional_2_Template_mj_agent_filter_panel_filtersChange_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFiltersChange($event)); })("filterChange", function AgentConfigurationComponent_Conditional_2_Template_mj_agent_filter_panel_filterChange_15_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFilterChange()); })("resetFilters", function AgentConfigurationComponent_Conditional_2_Template_mj_agent_filter_panel_resetFilters_15_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResetFilters()); })("closePanel", function AgentConfigurationComponent_Conditional_2_Template_mj_agent_filter_panel_closePanel_15_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFilterPanel()); });
166
+ i0.ɵɵelementEnd()();
167
+ i0.ɵɵelementStart(16, "kendo-splitter-pane", 15)(17, "div", 16);
168
+ i0.ɵɵtemplate(18, AgentConfigurationComponent_Conditional_2_Conditional_18_Template, 8, 0, "div", 17)(19, AgentConfigurationComponent_Conditional_2_Conditional_19_Template, 2, 1);
169
+ i0.ɵɵelementEnd()()()();
170
+ } if (rf & 2) {
171
+ const ctx_r1 = i0.ɵɵnextContext();
172
+ i0.ɵɵadvance(4);
173
+ i0.ɵɵconditional(ctx_r1.filterPanelVisible ? 4 : 5);
174
+ i0.ɵɵadvance(3);
175
+ i0.ɵɵtextInterpolate1("", ctx_r1.filteredAgents.length, " agents");
176
+ i0.ɵɵadvance(7);
177
+ i0.ɵɵproperty("size", ctx_r1.filterPanelVisible ? "320px" : "0px")("collapsible", false)("resizable", ctx_r1.filterPanelVisible)("scrollable", false)("hidden", !ctx_r1.filterPanelVisible);
178
+ i0.ɵɵadvance();
179
+ i0.ɵɵproperty("agents", ctx_r1.agents)("filteredAgents", ctx_r1.filteredAgents)("filters", ctx_r1.currentFilters);
180
+ i0.ɵɵadvance();
181
+ i0.ɵɵproperty("resizable", true)("scrollable", false);
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵconditional(ctx_r1.isLoading ? 18 : -1);
184
+ i0.ɵɵadvance();
185
+ i0.ɵɵconditional(!ctx_r1.isLoading ? 19 : -1);
186
+ } }
187
+ export class AgentConfigurationComponent {
188
+ constructor() {
189
+ this.openEntityRecord = new EventEmitter();
190
+ this.stateChange = new EventEmitter();
191
+ this.isLoading = false;
192
+ this.filterPanelVisible = true;
193
+ this.showEditor = false;
194
+ this.selectedAgentId = null;
195
+ this.agents = [];
196
+ this.filteredAgents = [];
197
+ this.currentFilters = {
198
+ searchTerm: '',
199
+ executionMode: 'all',
200
+ exposeAsAction: 'all'
201
+ };
202
+ }
203
+ ngOnInit() {
204
+ this.loadAgents();
205
+ }
206
+ loadAgents() {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ try {
209
+ this.isLoading = true;
210
+ const rv = new RunView();
211
+ const result = yield rv.RunView({
212
+ EntityName: 'AI Agents',
213
+ ExtraFilter: '',
214
+ OrderBy: 'Name',
215
+ MaxRows: 1000
216
+ });
217
+ this.agents = result.Results;
218
+ this.filteredAgents = [...this.agents];
219
+ }
220
+ catch (error) {
221
+ console.error('Error loading AI agents:', error);
222
+ }
223
+ finally {
224
+ this.isLoading = false;
225
+ }
226
+ });
227
+ }
228
+ toggleFilterPanel() {
229
+ this.filterPanelVisible = !this.filterPanelVisible;
230
+ this.emitStateChange();
231
+ }
232
+ onMainSplitterChange(event) {
233
+ this.emitStateChange();
234
+ }
235
+ onFiltersChange(filters) {
236
+ this.currentFilters = Object.assign({}, filters);
237
+ this.applyFilters();
238
+ }
239
+ onFilterChange() {
240
+ this.applyFilters();
241
+ }
242
+ onResetFilters() {
243
+ this.currentFilters = {
244
+ searchTerm: '',
245
+ executionMode: 'all',
246
+ exposeAsAction: 'all'
247
+ };
248
+ this.applyFilters();
249
+ }
250
+ applyFilters() {
251
+ let filtered = [...this.agents];
252
+ // Apply search filter
253
+ if (this.currentFilters.searchTerm) {
254
+ const searchTerm = this.currentFilters.searchTerm.toLowerCase();
255
+ filtered = filtered.filter(agent => (agent.Name || '').toLowerCase().includes(searchTerm) ||
256
+ (agent.Description || '').toLowerCase().includes(searchTerm));
257
+ }
258
+ // Apply execution mode filter
259
+ if (this.currentFilters.executionMode !== 'all') {
260
+ filtered = filtered.filter(agent => agent.ExecutionMode === this.currentFilters.executionMode);
261
+ }
262
+ // Apply expose as action filter
263
+ if (this.currentFilters.exposeAsAction !== 'all') {
264
+ const isExposed = this.currentFilters.exposeAsAction === 'true';
265
+ filtered = filtered.filter(agent => agent.ExposeAsAction === isExposed);
266
+ }
267
+ this.filteredAgents = filtered;
268
+ }
269
+ emitStateChange() {
270
+ const state = {
271
+ filterPanelVisible: this.filterPanelVisible,
272
+ filters: this.currentFilters
273
+ };
274
+ this.stateChange.emit(state);
275
+ }
276
+ onOpenRecord(entityName, recordId) {
277
+ this.openEntityRecord.emit({ entityName: entityName, recordId: recordId });
278
+ }
279
+ getExecutionModeColor(mode) {
280
+ switch (mode) {
281
+ case 'Sequential': return 'info';
282
+ case 'Parallel': return 'success';
283
+ default: return 'info';
284
+ }
285
+ }
286
+ getExecutionModeIcon(mode) {
287
+ switch (mode) {
288
+ case 'Sequential': return 'fa-solid fa-list-ol';
289
+ case 'Parallel': return 'fa-solid fa-layer-group';
290
+ default: return 'fa-solid fa-robot';
291
+ }
292
+ }
293
+ openAgentEditor(agentId) {
294
+ this.selectedAgentId = agentId;
295
+ this.showEditor = true;
296
+ }
297
+ closeAgentEditor() {
298
+ this.showEditor = false;
299
+ this.selectedAgentId = null;
300
+ }
301
+ onOpenAgentFromEditor(agentId) {
302
+ this.selectedAgentId = agentId;
303
+ // Editor stays open, just switches to different agent
304
+ }
305
+ }
306
+ AgentConfigurationComponent.ɵfac = function AgentConfigurationComponent_Factory(t) { return new (t || AgentConfigurationComponent)(); };
307
+ AgentConfigurationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], outputs: { openEntityRecord: "openEntityRecord", stateChange: "stateChange" }, decls: 3, vars: 3, consts: [["mjFillContainer", "", 1, "agent-configuration-container", 3, "rightMargin", "bottomMargin"], ["mjFillContainer", "", 3, "agentId"], ["mjFillContainer", "", 3, "close", "openAgent", "agentId"], [1, "dashboard-header"], [1, "header-info"], ["type", "button", "title", "Toggle Filters", 1, "filter-toggle-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "agent-count"], [1, "header-controls"], ["type", "button", "title", "Create New Agent", 1, "control-btn"], [1, "fa-solid", "fa-plus"], ["mjFillContainer", "", 1, "main-content"], ["orientation", "horizontal", "mjFillContainer", "", 1, "main-splitter", 3, "layoutChange"], [3, "size", "collapsible", "resizable", "scrollable", "hidden"], [3, "filtersChange", "filterChange", "resetFilters", "closePanel", "agents", "filteredAgents", "filters"], [3, "resizable", "scrollable"], [1, "agents-content"], [1, "loading-container"], [1, "loading-content"], [1, "loading-spinner"], [1, "spinner-ring"], [1, "loading-text"], [1, "empty-state"], [1, "agents-grid"], [1, "fa-solid", "fa-robot"], [1, "agent-card"], [1, "agent-card", 3, "click"], [1, "card-header"], [1, "agent-info"], [1, "agent-icon"], [1, "agent-details"], [1, "agent-name"], [1, "agent-meta"], [1, "agent-type"], [1, "agent-category"], [1, "card-body"], [1, "agent-description"], [1, "agent-description", "text-muted"], [1, "agent-parent"], [1, "card-actions", 3, "click"], ["type", "button", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-edit"], [1, "fa-solid", "fa-link"]], template: function AgentConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
308
+ i0.ɵɵelementStart(0, "div", 0);
309
+ i0.ɵɵtemplate(1, AgentConfigurationComponent_Conditional_1_Template, 1, 1, "mj-agent-editor", 1)(2, AgentConfigurationComponent_Conditional_2_Template, 20, 14);
310
+ i0.ɵɵelementEnd();
311
+ } if (rf & 2) {
312
+ i0.ɵɵproperty("rightMargin", 8)("bottomMargin", 8);
313
+ i0.ɵɵadvance();
314
+ i0.ɵɵconditional(ctx.showEditor && ctx.selectedAgentId ? 1 : 2);
315
+ } }, dependencies: [i1.SplitterComponent, i1.SplitterPaneComponent, i2.FillContainer, i3.AgentFilterPanelComponent, i4.AgentEditorComponent], styles: [".agent-configuration-container[_ngcontent-%COMP%] {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n \n .header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n \n .filter-toggle-btn {\n padding: 6px 10px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 11px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n color: #555;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n color: #2196f3;\n }\n \n .fa-solid {\n font-size: 10px;\n }\n }\n \n .agent-count {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n }\n \n .header-controls {\n display: flex;\n gap: 8px;\n \n .control-btn {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n }\n \n .fa-solid {\n font-size: 11px;\n }\n }\n }\n}\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter[_ngcontent-%COMP%] {\n height: 100%;\n \n .k-pane {\n overflow: hidden;\n }\n}\n\n.agents-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 0 16px;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n \n p {\n color: #666;\n font-size: 14px;\n }\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n \n .spinner-ring {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #2196f3;\n animation: _ngcontent-%COMP%_loading-pulse 1.5s ease-in-out infinite;\n \n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n \n &:nth-child(3) {\n animation-delay: 0.4s;\n }\n }\n}\n\n@keyframes _ngcontent-%COMP%_loading-pulse {\n 0%, 80%, 100% {\n opacity: 0.3;\n transform: scale(0.8);\n }\n 40% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.loading-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n background: #fafafa;\n border-radius: 6px;\n margin: 24px 0;\n \n .fa-solid {\n font-size: 48px;\n color: #ddd;\n margin-bottom: 16px;\n }\n \n h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 500;\n color: #666;\n }\n \n p {\n margin: 0;\n font-size: 14px;\n color: #999;\n max-width: 400px;\n line-height: 1.4;\n }\n}\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\n gap: 16px;\n padding: 16px 0;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n padding: 16px;\n transition: all 0.2s ease;\n height: fit-content;\n cursor: pointer;\n \n &:hover {\n border-color: #2196f3;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n }\n \n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 12px;\n \n .agent-info {\n display: flex;\n gap: 12px;\n flex: 1;\n min-width: 0;\n \n .agent-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: rgba(33, 150, 243, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n .fa-solid {\n font-size: 14px;\n color: #2196f3;\n }\n }\n \n .agent-details {\n flex: 1;\n min-width: 0;\n \n .agent-name {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #333;\n line-height: 1.3;\n }\n \n .agent-meta {\n font-size: 11px;\n color: #666;\n \n .agent-type {\n font-weight: 500;\n }\n \n .agent-category {\n color: #999;\n }\n }\n }\n }\n \n .status-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n flex-shrink: 0;\n \n &.status-active {\n background: #e8f5e8;\n color: #2e7d32;\n }\n \n &.status-training {\n background: #fff3e0;\n color: #f57c00;\n }\n \n &.status-disabled {\n background: #ffebee;\n color: #c62828;\n }\n \n &.status-draft {\n background: #f5f5f5;\n color: #666;\n }\n }\n }\n \n .card-body {\n margin-bottom: 16px;\n \n .agent-description {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n \n &.text-muted {\n font-style: italic;\n color: #999;\n }\n }\n }\n \n .card-actions {\n border-top: 1px solid #f0f0f0;\n padding-top: 12px;\n display: flex;\n gap: 8px;\n \n .action-btn {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: white;\n cursor: pointer;\n font-size: 11px;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f5f5f5;\n border-color: #bbb;\n }\n \n &.action-btn-primary {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n \n &:hover {\n background-color: #1976d2;\n }\n }\n \n &.action-btn-danger {\n background-color: #f44336;\n border-color: #f44336;\n color: white;\n \n &:hover {\n background-color: #d32f2f;\n }\n }\n \n .fa-solid {\n font-size: 10px;\n }\n }\n }\n}"] });
316
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentConfigurationComponent, [{
317
+ type: Component,
318
+ args: [{ selector: 'app-agent-configuration', template: "<div class=\"agent-configuration-container\" mjFillContainer [rightMargin]=\"8\" [bottomMargin]=\"8\">\n \n <!-- Agent Editor Modal -->\n @if (showEditor && selectedAgentId) {\n <mj-agent-editor\n [agentId]=\"selectedAgentId\"\n (close)=\"closeAgentEditor()\"\n (openAgent)=\"onOpenAgentFromEditor($event)\"\n mjFillContainer>\n </mj-agent-editor>\n } @else {\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <button \n type=\"button\" \n class=\"filter-toggle-btn\"\n (click)=\"toggleFilterPanel()\"\n title=\"Toggle Filters\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (filterPanelVisible) {\n Hide Filters\n } @else {\n Show Filters\n }\n </button>\n <span class=\"agent-count\">{{ filteredAgents.length }} agents</span>\n </div>\n \n <div class=\"header-controls\">\n <button \n type=\"button\" \n class=\"control-btn\"\n title=\"Create New Agent\">\n <i class=\"fa-solid fa-plus\"></i>\n New Agent\n </button>\n </div>\n </div>\n\n <!-- Main Content with Splitter -->\n <div class=\"main-content\" mjFillContainer>\n <kendo-splitter \n class=\"main-splitter\"\n orientation=\"horizontal\"\n (layoutChange)=\"onMainSplitterChange($event)\"\n mjFillContainer>\n \n <!-- Filter Panel (Left) -->\n <kendo-splitter-pane \n [size]=\"filterPanelVisible ? '320px' : '0px'\"\n [collapsible]=\"false\"\n [resizable]=\"filterPanelVisible\"\n [scrollable]=\"false\"\n [hidden]=\"!filterPanelVisible\">\n <mj-agent-filter-panel\n [agents]=\"agents\"\n [filteredAgents]=\"filteredAgents\"\n [filters]=\"currentFilters\"\n (filtersChange)=\"onFiltersChange($event)\"\n (filterChange)=\"onFilterChange()\"\n (resetFilters)=\"onResetFilters()\"\n (closePanel)=\"toggleFilterPanel()\">\n </mj-agent-filter-panel>\n </kendo-splitter-pane>\n \n <!-- Agents List Panel -->\n <kendo-splitter-pane \n [resizable]=\"true\"\n [scrollable]=\"false\">\n <div class=\"agents-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <div class=\"loading-content\">\n <div class=\"loading-spinner\">\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n </div>\n <div class=\"loading-text\">Loading agents...</div>\n </div>\n </div>\n }\n\n <!-- Agents List -->\n @if (!isLoading) {\n @if (filteredAgents.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-robot\"></i>\n <h3>No agents found</h3>\n <p>No agents match your current filters. Try adjusting your search criteria or create a new agent.</p>\n </div>\n } @else {\n <div class=\"agents-grid\">\n @for (agent of filteredAgents; track agent.ID) {\n <div class=\"agent-card\" (click)=\"openAgentEditor(agent.ID)\">\n <!-- Card Header -->\n <div class=\"card-header\">\n <div class=\"agent-info\">\n <div class=\"agent-icon\">\n <i [class]=\"getExecutionModeIcon(agent.ExecutionMode)\"></i>\n </div>\n <div class=\"agent-details\">\n <h4 class=\"agent-name\">{{ agent.Name }}</h4>\n <div class=\"agent-meta\">\n <span class=\"agent-type\">{{ agent.ExecutionMode }}</span>\n @if (agent.ExposeAsAction) {\n <span class=\"agent-category\">\u2022 Exposed as Action</span>\n }\n </div>\n </div>\n </div>\n \n <div class=\"status-badge execution-mode-{{ agent.ExecutionMode.toLowerCase() }}\">\n {{ agent.ExecutionMode }}\n </div>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (agent.Description) {\n <p class=\"agent-description\">{{ agent.Description }}</p>\n } @else {\n <p class=\"agent-description text-muted\">No description provided</p>\n }\n \n @if (agent.Parent) {\n <div class=\"agent-parent\">\n <span class=\"fa-solid fa-link\"></span>\n Parent: {{ agent.Parent }}\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <button \n type=\"button\" \n class=\"action-btn\"\n (click)=\"openAgentEditor(agent.ID)\">\n <i class=\"fa-solid fa-eye\"></i>\n View\n </button>\n \n <button \n type=\"button\" \n class=\"action-btn action-btn-primary\"\n (click)=\"openAgentEditor(agent.ID)\">\n <i class=\"fa-solid fa-edit\"></i>\n Configure\n </button>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n }\n</div>", styles: [".agent-configuration-container {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n \n .header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n \n .filter-toggle-btn {\n padding: 6px 10px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 11px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n color: #555;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n color: #2196f3;\n }\n \n .fa-solid {\n font-size: 10px;\n }\n }\n \n .agent-count {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n }\n \n .header-controls {\n display: flex;\n gap: 8px;\n \n .control-btn {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n }\n \n .fa-solid {\n font-size: 11px;\n }\n }\n }\n}\n\n.main-content {\n flex: 1;\n overflow: hidden;\n}\n\n.main-splitter {\n height: 100%;\n \n .k-pane {\n overflow: hidden;\n }\n}\n\n.agents-content {\n height: 100%;\n overflow-y: auto;\n padding: 0 16px;\n}\n\n.loading-container, .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n \n p {\n color: #666;\n font-size: 14px;\n }\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.loading-spinner {\n display: flex;\n gap: 4px;\n \n .spinner-ring {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #2196f3;\n animation: loading-pulse 1.5s ease-in-out infinite;\n \n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n \n &:nth-child(3) {\n animation-delay: 0.4s;\n }\n }\n}\n\n@keyframes loading-pulse {\n 0%, 80%, 100% {\n opacity: 0.3;\n transform: scale(0.8);\n }\n 40% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.loading-text {\n font-size: 12px;\n color: #666;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n background: #fafafa;\n border-radius: 6px;\n margin: 24px 0;\n \n .fa-solid {\n font-size: 48px;\n color: #ddd;\n margin-bottom: 16px;\n }\n \n h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 500;\n color: #666;\n }\n \n p {\n margin: 0;\n font-size: 14px;\n color: #999;\n max-width: 400px;\n line-height: 1.4;\n }\n}\n\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\n gap: 16px;\n padding: 16px 0;\n}\n\n.agent-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n padding: 16px;\n transition: all 0.2s ease;\n height: fit-content;\n cursor: pointer;\n \n &:hover {\n border-color: #2196f3;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.1);\n transform: translateY(-1px);\n }\n \n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 12px;\n \n .agent-info {\n display: flex;\n gap: 12px;\n flex: 1;\n min-width: 0;\n \n .agent-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: rgba(33, 150, 243, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n .fa-solid {\n font-size: 14px;\n color: #2196f3;\n }\n }\n \n .agent-details {\n flex: 1;\n min-width: 0;\n \n .agent-name {\n margin: 0 0 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #333;\n line-height: 1.3;\n }\n \n .agent-meta {\n font-size: 11px;\n color: #666;\n \n .agent-type {\n font-weight: 500;\n }\n \n .agent-category {\n color: #999;\n }\n }\n }\n }\n \n .status-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n flex-shrink: 0;\n \n &.status-active {\n background: #e8f5e8;\n color: #2e7d32;\n }\n \n &.status-training {\n background: #fff3e0;\n color: #f57c00;\n }\n \n &.status-disabled {\n background: #ffebee;\n color: #c62828;\n }\n \n &.status-draft {\n background: #f5f5f5;\n color: #666;\n }\n }\n }\n \n .card-body {\n margin-bottom: 16px;\n \n .agent-description {\n margin: 0;\n font-size: 12px;\n color: #666;\n line-height: 1.4;\n \n &.text-muted {\n font-style: italic;\n color: #999;\n }\n }\n }\n \n .card-actions {\n border-top: 1px solid #f0f0f0;\n padding-top: 12px;\n display: flex;\n gap: 8px;\n \n .action-btn {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: white;\n cursor: pointer;\n font-size: 11px;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f5f5f5;\n border-color: #bbb;\n }\n \n &.action-btn-primary {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n \n &:hover {\n background-color: #1976d2;\n }\n }\n \n &.action-btn-danger {\n background-color: #f44336;\n border-color: #f44336;\n color: white;\n \n &:hover {\n background-color: #d32f2f;\n }\n }\n \n .fa-solid {\n font-size: 10px;\n }\n }\n }\n}"] }]
319
+ }], null, { openEntityRecord: [{
320
+ type: Output
321
+ }], stateChange: [{
322
+ type: Output
323
+ }] }); })();
324
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentConfigurationComponent, { className: "AgentConfigurationComponent", filePath: "src/AI/components/agents/agent-configuration.component.ts", lineNumber: 16 }); })();
325
+ //# sourceMappingURL=agent-configuration.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-configuration.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-configuration.component.ts","../../../../src/AI/components/agents/agent-configuration.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { EventEmitter, OnInit, OnDestroy, ElementRef, AfterViewInit } from '@angular/core';
2
+ import { AIAgentEntity } from '@memberjunction/core-entities';
3
+ import * as i0 from "@angular/core";
4
+ interface AgentHierarchyNode {
5
+ id: string;
6
+ name: string;
7
+ agent: AIAgentEntity;
8
+ children?: AgentHierarchyNode[];
9
+ parent?: AgentHierarchyNode;
10
+ x?: number;
11
+ y?: number;
12
+ }
13
+ interface AgentPrompt {
14
+ id: string;
15
+ name: string;
16
+ content: string;
17
+ type: string;
18
+ }
19
+ export declare class AgentEditorComponent implements OnInit, OnDestroy, AfterViewInit {
20
+ agentId: string | null;
21
+ close: EventEmitter<void>;
22
+ openAgent: EventEmitter<string>;
23
+ hierarchyChartRef: ElementRef;
24
+ isLoading: boolean;
25
+ error: string | null;
26
+ currentAgent: AIAgentEntity | null;
27
+ allAgents: AIAgentEntity[];
28
+ hierarchyData: AgentHierarchyNode | null;
29
+ selectedNode: AgentHierarchyNode | null;
30
+ agentPrompts: AgentPrompt[];
31
+ activeTab: 'hierarchy' | 'prompts' | 'properties';
32
+ showHierarchy: boolean;
33
+ showPrompts: boolean;
34
+ showProperties: boolean;
35
+ showCreateSubAgent: boolean;
36
+ newSubAgentName: string;
37
+ newSubAgentDescription: string;
38
+ private svg;
39
+ private g;
40
+ private tree;
41
+ private root;
42
+ private zoom;
43
+ ngOnInit(): void;
44
+ ngAfterViewInit(): void;
45
+ ngOnDestroy(): void;
46
+ loadAgentData(): Promise<void>;
47
+ private buildHierarchy;
48
+ private findRootAgent;
49
+ private buildHierarchyTree;
50
+ private findNodeInHierarchy;
51
+ private loadAgentPrompts;
52
+ private initializeChart;
53
+ private renderHierarchy;
54
+ private getTreeBounds;
55
+ private getNodeColor;
56
+ private getNodeStrokeColor;
57
+ private lightenColor;
58
+ onNodeClick(node: AgentHierarchyNode): void;
59
+ zoomIn(): void;
60
+ zoomOut(): void;
61
+ resetZoom(): void;
62
+ navigateToAgent(agentId: string): void;
63
+ closeEditor(): void;
64
+ setActiveTab(tab: 'hierarchy' | 'prompts' | 'properties'): void;
65
+ getExecutionModeColor(mode: string): string;
66
+ getExecutionModeIcon(mode: string): string;
67
+ openCreateSubAgent(): void;
68
+ closeCreateSubAgent(): void;
69
+ createSubAgent(): Promise<void>;
70
+ hasChildren(): boolean;
71
+ hasParent(): boolean;
72
+ getChildCount(): number;
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<AgentEditorComponent, never>;
74
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgentEditorComponent, "mj-agent-editor", never, { "agentId": { "alias": "agentId"; "required": false; }; }, { "close": "close"; "openAgent": "openAgent"; }, never, never, false, never>;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=agent-editor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAa,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhI,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;;AAG9D,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAKa,oBAAqB,YAAW,MAAM,EAAE,SAAS,EAAE,aAAa;IAClE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,KAAK,qBAA4B;IACjC,SAAS,uBAA8B;IAED,iBAAiB,EAAG,UAAU,CAAC;IAExE,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC1C,SAAS,EAAE,aAAa,EAAE,CAAM;IAChC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAChD,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC/C,YAAY,EAAE,WAAW,EAAE,CAAM;IAGjC,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,CAAe;IAGhE,aAAa,UAAQ;IACrB,WAAW,UAAQ;IACnB,cAAc,UAAQ;IAGtB,kBAAkB,UAAS;IAC3B,eAAe,SAAM;IACrB,sBAAsB,SAAM;IAGnC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,CAAC,CAAM;IACf,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAM;IAElB,QAAQ,IAAI,IAAI;IAMhB,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAON,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3C,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,mBAAmB;YAab,gBAAgB;IAe9B,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,eAAe;IAkGvB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IAcb,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAM3C,MAAM,IAAI,IAAI;IAQd,OAAO,IAAI,IAAI;IAQf,SAAS,IAAI,IAAI;IAUjB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAItC,WAAW,IAAI,IAAI;IAInB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI;IAI/D,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1C,kBAAkB,IAAI,IAAI;IAO1B,mBAAmB,IAAI,IAAI;IAMrB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DrC,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,MAAM;yCAtfnB,oBAAoB;2CAApB,oBAAoB;CAyfhC"}