@memberjunction/ng-dashboards 2.48.0 → 2.49.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 (92) hide show
  1. package/README.md +105 -2
  2. package/dist/AI/ai-dashboard.component.d.ts +2 -0
  3. package/dist/AI/ai-dashboard.component.d.ts.map +1 -1
  4. package/dist/AI/ai-dashboard.component.js +66 -43
  5. package/dist/AI/ai-dashboard.component.js.map +1 -1
  6. package/dist/AI/components/agents/agent-configuration.component.js +45 -58
  7. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  8. package/dist/AI/components/agents/agent-editor.component.d.ts +6 -1
  9. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  10. package/dist/AI/components/agents/agent-editor.component.js +368 -366
  11. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  12. package/dist/AI/components/agents/agent-filter-panel.component.js +83 -85
  13. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  14. package/dist/AI/components/charts/performance-heatmap.component.d.ts +66 -0
  15. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -0
  16. package/dist/AI/components/charts/performance-heatmap.component.js +428 -0
  17. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -0
  18. package/dist/AI/components/charts/time-series-chart.component.d.ts +66 -0
  19. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -0
  20. package/dist/AI/components/charts/time-series-chart.component.js +547 -0
  21. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -0
  22. package/dist/AI/components/execution-monitoring.component.d.ts +157 -5
  23. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  24. package/dist/AI/components/execution-monitoring.component.js +2032 -20
  25. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  26. package/dist/AI/components/models/model-management.component.js +211 -237
  27. package/dist/AI/components/models/model-management.component.js.map +1 -1
  28. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +208 -226
  29. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  30. package/dist/AI/components/prompts/prompt-filter-panel.component.js +97 -99
  31. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  32. package/dist/AI/components/prompts/prompt-management.component.js +381 -424
  33. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  34. package/dist/AI/components/prompts/prompt-version-control.component.js +173 -191
  35. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  36. package/dist/AI/components/system/system-config-filter-panel.component.js +85 -87
  37. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  38. package/dist/AI/components/system/system-configuration.component.js +86 -99
  39. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  40. package/dist/AI/components/widgets/kpi-card.component.d.ts +25 -0
  41. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -0
  42. package/dist/AI/components/widgets/kpi-card.component.js +163 -0
  43. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -0
  44. package/dist/AI/components/widgets/live-execution-widget.component.d.ts +25 -0
  45. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -0
  46. package/dist/AI/components/widgets/live-execution-widget.component.js +298 -0
  47. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -0
  48. package/dist/AI/index.d.ts +7 -0
  49. package/dist/AI/index.d.ts.map +1 -0
  50. package/dist/AI/index.js +9 -0
  51. package/dist/AI/index.js.map +1 -0
  52. package/dist/AI/services/ai-instrumentation.service.d.ts +109 -0
  53. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -0
  54. package/dist/AI/services/ai-instrumentation.service.js +490 -0
  55. package/dist/AI/services/ai-instrumentation.service.js.map +1 -0
  56. package/dist/Actions/actions-management-dashboard.component.js +40 -41
  57. package/dist/Actions/actions-management-dashboard.component.js.map +1 -1
  58. package/dist/Actions/components/actions-list-view.component.js +117 -134
  59. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  60. package/dist/Actions/components/actions-overview.component.js +274 -296
  61. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  62. package/dist/Actions/components/categories-list-view.component.js +12 -14
  63. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  64. package/dist/Actions/components/code-management.component.js +12 -14
  65. package/dist/Actions/components/code-management.component.js.map +1 -1
  66. package/dist/Actions/components/entity-integration.component.js +12 -14
  67. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  68. package/dist/Actions/components/execution-monitoring.component.js +238 -256
  69. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  70. package/dist/Actions/components/executions-list-view.component.js +12 -14
  71. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  72. package/dist/Actions/components/scheduled-actions.component.js +12 -14
  73. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  74. package/dist/Actions/components/security-permissions.component.js +12 -14
  75. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  76. package/dist/EntityAdmin/components/entity-details.component.js +105 -107
  77. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -1
  78. package/dist/EntityAdmin/components/entity-filter-panel.component.js +100 -102
  79. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -1
  80. package/dist/EntityAdmin/components/erd-composite.component.js +84 -100
  81. package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -1
  82. package/dist/EntityAdmin/components/erd-diagram.component.js +50 -50
  83. package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -1
  84. package/dist/EntityAdmin/entity-admin-dashboard.component.js +45 -49
  85. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  86. package/dist/generic/base-dashboard.js +28 -40
  87. package/dist/generic/base-dashboard.js.map +1 -1
  88. package/dist/module.d.ts +16 -12
  89. package/dist/module.d.ts.map +1 -1
  90. package/dist/module.js +36 -15
  91. package/dist/module.js.map +1 -1
  92. package/package.json +6 -6
@@ -1,12 +1,3 @@
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
1
  import { Component, Output, EventEmitter } from '@angular/core';
11
2
  import { RunView } from '@memberjunction/core';
12
3
  import * as i0 from "@angular/core";
@@ -18,7 +9,7 @@ const _forTrack0 = ($index, $item) => $item.ID;
18
9
  function AgentConfigurationComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
10
  const _r1 = i0.ɵɵgetCurrentView();
20
11
  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)); });
12
+ 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)); })("openEntityRecord", function AgentConfigurationComponent_Conditional_1_Template_mj_agent_editor_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenRecord($event.entityName, $event.recordId)); });
22
13
  i0.ɵɵelementEnd();
23
14
  } if (rf & 2) {
24
15
  const ctx_r1 = i0.ɵɵnextContext();
@@ -185,45 +176,41 @@ function AgentConfigurationComponent_Conditional_2_Template(rf, ctx) { if (rf &
185
176
  i0.ɵɵconditional(!ctx_r1.isLoading ? 19 : -1);
186
177
  } }
187
178
  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
- }
179
+ openEntityRecord = new EventEmitter();
180
+ stateChange = new EventEmitter();
181
+ isLoading = false;
182
+ filterPanelVisible = true;
183
+ showEditor = false;
184
+ selectedAgentId = null;
185
+ agents = [];
186
+ filteredAgents = [];
187
+ currentFilters = {
188
+ searchTerm: '',
189
+ executionMode: 'all',
190
+ exposeAsAction: 'all'
191
+ };
203
192
  ngOnInit() {
204
193
  this.loadAgents();
205
194
  }
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
- });
195
+ async loadAgents() {
196
+ try {
197
+ this.isLoading = true;
198
+ const rv = new RunView();
199
+ const result = await rv.RunView({
200
+ EntityName: 'AI Agents',
201
+ ExtraFilter: '',
202
+ OrderBy: 'Name',
203
+ MaxRows: 1000
204
+ });
205
+ this.agents = result.Results;
206
+ this.filteredAgents = [...this.agents];
207
+ }
208
+ catch (error) {
209
+ console.error('Error loading AI agents:', error);
210
+ }
211
+ finally {
212
+ this.isLoading = false;
213
+ }
227
214
  }
228
215
  toggleFilterPanel() {
229
216
  this.filterPanelVisible = !this.filterPanelVisible;
@@ -233,7 +220,7 @@ export class AgentConfigurationComponent {
233
220
  this.emitStateChange();
234
221
  }
235
222
  onFiltersChange(filters) {
236
- this.currentFilters = Object.assign({}, filters);
223
+ this.currentFilters = { ...filters };
237
224
  this.applyFilters();
238
225
  }
239
226
  onFilterChange() {
@@ -302,20 +289,20 @@ export class AgentConfigurationComponent {
302
289
  this.selectedAgentId = agentId;
303
290
  // Editor stays open, just switches to different agent
304
291
  }
292
+ static ɵfac = function AgentConfigurationComponent_Factory(t) { return new (t || AgentConfigurationComponent)(); };
293
+ static ɵ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", "openEntityRecord", "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) {
294
+ i0.ɵɵelementStart(0, "div", 0);
295
+ i0.ɵɵtemplate(1, AgentConfigurationComponent_Conditional_1_Template, 1, 1, "mj-agent-editor", 1)(2, AgentConfigurationComponent_Conditional_2_Template, 20, 14);
296
+ i0.ɵɵelementEnd();
297
+ } if (rf & 2) {
298
+ i0.ɵɵproperty("rightMargin", 8)("bottomMargin", 8);
299
+ i0.ɵɵadvance();
300
+ i0.ɵɵconditional(ctx.showEditor && ctx.selectedAgentId ? 1 : 2);
301
+ } }, 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}"] });
305
302
  }
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
303
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentConfigurationComponent, [{
317
304
  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}"] }]
305
+ 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 (openEntityRecord)=\"onOpenRecord($event.entityName, $event.recordId)\"\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
306
  }], null, { openEntityRecord: [{
320
307
  type: Output
321
308
  }], stateChange: [{
@@ -1 +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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"}
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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"}
@@ -20,6 +20,10 @@ export declare class AgentEditorComponent implements OnInit, OnDestroy, AfterVie
20
20
  agentId: string | null;
21
21
  close: EventEmitter<void>;
22
22
  openAgent: EventEmitter<string>;
23
+ openEntityRecord: EventEmitter<{
24
+ entityName: string;
25
+ recordId: string;
26
+ }>;
23
27
  hierarchyChartRef: ElementRef;
24
28
  isLoading: boolean;
25
29
  error: string | null;
@@ -70,8 +74,9 @@ export declare class AgentEditorComponent implements OnInit, OnDestroy, AfterVie
70
74
  hasChildren(): boolean;
71
75
  hasParent(): boolean;
72
76
  getChildCount(): number;
77
+ openCurrentAgentRecord(): void;
73
78
  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>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgentEditorComponent, "mj-agent-editor", never, { "agentId": { "alias": "agentId"; "required": false; }; }, { "close": "close"; "openAgent": "openAgent"; "openEntityRecord": "openEntityRecord"; }, never, never, false, never>;
75
80
  }
76
81
  export {};
77
82
  //# sourceMappingURL=agent-editor.component.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"agent-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-editor.component.ts"],"names":[],"mappings":"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"}