@memberjunction/ng-dashboards 5.22.0 → 5.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +364 -362
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +2 -2
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +947 -64
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7645 -430
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +285 -6
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2454 -277
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +191 -197
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +9 -8
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +305 -299
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +319 -313
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +20 -2
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +419 -232
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +10 -12
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +61 -68
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -11
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +82 -96
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +130 -134
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +40 -46
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js +2 -2
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +2 -2
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +127 -132
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +2 -2
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -17
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +2 -2
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +2 -2
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +17 -17
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -4
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +5 -4
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +247 -259
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +1 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/components/widgets/integration-card.component.js +7 -9
- package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +6 -10
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +12 -20
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +411 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4266 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +140 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +780 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +8 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +246 -195
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +75 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +601 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +93 -12
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +637 -107
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +9 -7
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +10 -9
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +6 -9
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +20 -22
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -10
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/__tests__/analytics-resource.test.d.ts +2 -0
- package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
- package/dist/__tests__/analytics-resource.test.js +181 -0
- package/dist/__tests__/analytics-resource.test.js.map +1 -0
- package/dist/__tests__/scheduling.test.d.ts +2 -0
- package/dist/__tests__/scheduling.test.d.ts.map +1 -0
- package/dist/__tests__/scheduling.test.js +205 -0
- package/dist/__tests__/scheduling.test.js.map +1 -0
- package/dist/actions-dashboards.module.d.ts +8 -13
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +6 -27
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +20 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +43 -44
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +4 -8
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +0 -19
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +7 -11
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +22 -34
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +12 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +15 -31
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +5 -8
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +3 -19
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +7 -13
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +0 -27
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +5 -8
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +3 -19
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +6 -10
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +3 -23
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +44 -0
- package/dist/shared/entity-field-display.d.ts.map +1 -0
- package/dist/shared/entity-field-display.js +118 -0
- package/dist/shared/entity-field-display.js.map +1 -0
- package/dist/testing-dashboards.module.d.ts +7 -13
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +0 -27
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +48 -55
|
@@ -18,7 +18,7 @@ import * as i1 from "@memberjunction/ng-ai-test-harness";
|
|
|
18
18
|
import * as i2 from "@memberjunction/ng-agents";
|
|
19
19
|
import * as i3 from "@memberjunction/ng-shared";
|
|
20
20
|
import * as i4 from "@angular/common";
|
|
21
|
-
import * as i5 from "
|
|
21
|
+
import * as i5 from "angular-split";
|
|
22
22
|
import * as i6 from "@memberjunction/ng-shared-generic";
|
|
23
23
|
import * as i7 from "./agent-filter-panel.component";
|
|
24
24
|
import * as i8 from "../../../shared/pipes/highlight-search.pipe";
|
|
@@ -32,14 +32,25 @@ function AgentConfigurationComponent_Conditional_8_Template(rf, ctx) { if (rf &
|
|
|
32
32
|
function AgentConfigurationComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
33
33
|
i0.ɵɵtext(0, " Show Filters ");
|
|
34
34
|
} }
|
|
35
|
-
function
|
|
36
|
-
i0.ɵɵ
|
|
37
|
-
i0.ɵɵ
|
|
35
|
+
function AgentConfigurationComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
37
|
+
i0.ɵɵelementStart(0, "as-split-area", 21)(1, "mj-agent-filter-panel", 26);
|
|
38
|
+
i0.ɵɵlistener("filtersChange", function AgentConfigurationComponent_Conditional_25_Template_mj_agent_filter_panel_filtersChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFiltersChange($event)); })("filterChange", function AgentConfigurationComponent_Conditional_25_Template_mj_agent_filter_panel_filterChange_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFilterChange()); })("resetFilters", function AgentConfigurationComponent_Conditional_25_Template_mj_agent_filter_panel_resetFilters_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResetFilters()); })("closePanel", function AgentConfigurationComponent_Conditional_25_Template_mj_agent_filter_panel_closePanel_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFilterPanel()); });
|
|
39
|
+
i0.ɵɵelementEnd()();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
42
|
+
i0.ɵɵproperty("size", 20)("minSize", 15)("maxSize", 30);
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵproperty("agents", ctx_r1.agents)("filteredAgents", ctx_r1.filteredAgents)("filters", ctx_r1.currentFilters);
|
|
45
|
+
} }
|
|
46
|
+
function AgentConfigurationComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 23);
|
|
48
|
+
i0.ɵɵelement(1, "mj-loading", 27);
|
|
38
49
|
i0.ɵɵelementEnd();
|
|
39
50
|
} }
|
|
40
|
-
function
|
|
41
|
-
const
|
|
42
|
-
i0.ɵɵelementStart(0, "div",
|
|
51
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
43
54
|
i0.ɵɵelement(1, "i", 5);
|
|
44
55
|
i0.ɵɵelementStart(2, "h3");
|
|
45
56
|
i0.ɵɵtext(3, "No agents found");
|
|
@@ -47,246 +58,246 @@ function AgentConfigurationComponent_Conditional_30_Conditional_0_Template(rf, c
|
|
|
47
58
|
i0.ɵɵelementStart(4, "p");
|
|
48
59
|
i0.ɵɵtext(5, "No agents match your current filters. Try adjusting your search criteria or create a new agent.");
|
|
49
60
|
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(6, "button",
|
|
51
|
-
i0.ɵɵlistener("click", function
|
|
61
|
+
i0.ɵɵelementStart(6, "button", 29);
|
|
62
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewAgent()); });
|
|
52
63
|
i0.ɵɵelement(7, "i", 18);
|
|
53
64
|
i0.ɵɵtext(8, " Create New Agent ");
|
|
54
65
|
i0.ɵɵelementEnd()();
|
|
55
66
|
} }
|
|
56
|
-
function
|
|
57
|
-
i0.ɵɵelement(0, "img",
|
|
67
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelement(0, "img", 38);
|
|
58
69
|
} if (rf & 2) {
|
|
59
|
-
const
|
|
60
|
-
i0.ɵɵproperty("src",
|
|
70
|
+
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
71
|
+
i0.ɵɵproperty("src", agent_r5.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r5.Name + " logo");
|
|
61
72
|
} }
|
|
62
|
-
function
|
|
73
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
63
74
|
i0.ɵɵelement(0, "i");
|
|
64
75
|
} if (rf & 2) {
|
|
65
|
-
const
|
|
76
|
+
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
66
77
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
67
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(
|
|
78
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r5));
|
|
68
79
|
} }
|
|
69
|
-
function
|
|
70
|
-
i0.ɵɵelementStart(0, "span",
|
|
71
|
-
i0.ɵɵelement(1, "i",
|
|
80
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
82
|
+
i0.ɵɵelement(1, "i", 55);
|
|
72
83
|
i0.ɵɵtext(2);
|
|
73
84
|
i0.ɵɵelementEnd();
|
|
74
85
|
} if (rf & 2) {
|
|
75
|
-
const
|
|
76
|
-
i0.ɵɵclassMap("status-" +
|
|
86
|
+
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
87
|
+
i0.ɵɵclassMap("status-" + agent_r5.Status.toLowerCase());
|
|
77
88
|
i0.ɵɵadvance(2);
|
|
78
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
89
|
+
i0.ɵɵtextInterpolate1(" ", agent_r5.Status, " ");
|
|
79
90
|
} }
|
|
80
|
-
function
|
|
81
|
-
i0.ɵɵelement(0, "p",
|
|
91
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
+
i0.ɵɵelement(0, "p", 48);
|
|
82
93
|
i0.ɵɵpipe(1, "highlightSearch");
|
|
83
94
|
} if (rf & 2) {
|
|
84
|
-
const
|
|
95
|
+
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
85
96
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
86
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1,
|
|
97
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r5.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
87
98
|
} }
|
|
88
|
-
function
|
|
89
|
-
i0.ɵɵelementStart(0, "p",
|
|
99
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
i0.ɵɵelementStart(0, "p", 49);
|
|
90
101
|
i0.ɵɵtext(1, "No description provided");
|
|
91
102
|
i0.ɵɵelementEnd();
|
|
92
103
|
} }
|
|
93
|
-
function
|
|
94
|
-
i0.ɵɵelementStart(0, "div",
|
|
104
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "span", 58);
|
|
95
106
|
i0.ɵɵtext(2, "Parent");
|
|
96
107
|
i0.ɵɵelementEnd();
|
|
97
|
-
i0.ɵɵelementStart(3, "span",
|
|
108
|
+
i0.ɵɵelementStart(3, "span", 59);
|
|
98
109
|
i0.ɵɵtext(4);
|
|
99
110
|
i0.ɵɵelementEnd()();
|
|
100
111
|
} if (rf & 2) {
|
|
101
|
-
const
|
|
112
|
+
const agent_r5 = i0.ɵɵnextContext(2).$implicit;
|
|
102
113
|
i0.ɵɵadvance(4);
|
|
103
|
-
i0.ɵɵtextInterpolate(
|
|
114
|
+
i0.ɵɵtextInterpolate(agent_r5.Parent);
|
|
104
115
|
} }
|
|
105
|
-
function
|
|
106
|
-
i0.ɵɵelement(0, "i",
|
|
116
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
117
|
+
i0.ɵɵelement(0, "i", 60);
|
|
107
118
|
i0.ɵɵtext(1, " Enabled ");
|
|
108
119
|
} }
|
|
109
|
-
function
|
|
110
|
-
i0.ɵɵelement(0, "i",
|
|
120
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
i0.ɵɵelement(0, "i", 61);
|
|
111
122
|
i0.ɵɵtext(1, " Disabled ");
|
|
112
123
|
} }
|
|
113
|
-
function
|
|
114
|
-
i0.ɵɵelementStart(0, "div",
|
|
115
|
-
i0.ɵɵconditionalCreate(2,
|
|
116
|
-
i0.ɵɵelementStart(3, "div",
|
|
124
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "div", 56);
|
|
126
|
+
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template, 5, 1, "div", 57);
|
|
127
|
+
i0.ɵɵelementStart(3, "div", 57)(4, "span", 58);
|
|
117
128
|
i0.ɵɵtext(5, "Context Compression");
|
|
118
129
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(6, "span",
|
|
120
|
-
i0.ɵɵconditionalCreate(7,
|
|
130
|
+
i0.ɵɵelementStart(6, "span", 59);
|
|
131
|
+
i0.ɵɵconditionalCreate(7, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template, 2, 0)(8, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template, 2, 0);
|
|
121
132
|
i0.ɵɵelementEnd()()()();
|
|
122
133
|
} if (rf & 2) {
|
|
123
|
-
const
|
|
134
|
+
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
124
135
|
i0.ɵɵadvance(2);
|
|
125
|
-
i0.ɵɵconditional(
|
|
136
|
+
i0.ɵɵconditional(agent_r5.Parent ? 2 : -1);
|
|
126
137
|
i0.ɵɵadvance(5);
|
|
127
|
-
i0.ɵɵconditional(
|
|
138
|
+
i0.ɵɵconditional(agent_r5.EnableContextCompression ? 7 : 8);
|
|
128
139
|
} }
|
|
129
|
-
function
|
|
130
|
-
const
|
|
131
|
-
i0.ɵɵelementStart(0, "button",
|
|
132
|
-
i0.ɵɵlistener("click", function
|
|
133
|
-
i0.ɵɵelement(1, "i",
|
|
140
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
142
|
+
i0.ɵɵelementStart(0, "button", 62);
|
|
143
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const agent_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r5, $event)); });
|
|
144
|
+
i0.ɵɵelement(1, "i", 63);
|
|
134
145
|
i0.ɵɵtext(2, " Details ");
|
|
135
146
|
i0.ɵɵelementEnd();
|
|
136
147
|
} }
|
|
137
|
-
function
|
|
138
|
-
const
|
|
139
|
-
i0.ɵɵelementStart(0, "button",
|
|
140
|
-
i0.ɵɵlistener("click", function
|
|
141
|
-
i0.ɵɵelement(1, "i",
|
|
148
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
150
|
+
i0.ɵɵelementStart(0, "button", 64);
|
|
151
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const agent_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.runAgent(agent_r5); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
152
|
+
i0.ɵɵelement(1, "i", 65);
|
|
142
153
|
i0.ɵɵtext(2, " Run ");
|
|
143
154
|
i0.ɵɵelementEnd();
|
|
144
155
|
} }
|
|
145
|
-
function
|
|
146
|
-
const
|
|
147
|
-
i0.ɵɵelementStart(0, "div",
|
|
148
|
-
i0.ɵɵlistener("click", function
|
|
149
|
-
i0.ɵɵelementStart(2, "div",
|
|
150
|
-
i0.ɵɵconditionalCreate(4,
|
|
156
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
158
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 35);
|
|
159
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template_div_click_1_listener() { const agent_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleAgentExpansion(agent_r5.ID)); });
|
|
160
|
+
i0.ɵɵelementStart(2, "div", 36)(3, "div", 37);
|
|
161
|
+
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_4_Template, 1, 2, "img", 38)(5, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_5_Template, 1, 2, "i", 39);
|
|
151
162
|
i0.ɵɵelementEnd();
|
|
152
|
-
i0.ɵɵelementStart(6, "div",
|
|
153
|
-
i0.ɵɵelement(7, "h4",
|
|
163
|
+
i0.ɵɵelementStart(6, "div", 40);
|
|
164
|
+
i0.ɵɵelement(7, "h4", 41);
|
|
154
165
|
i0.ɵɵpipe(8, "highlightSearch");
|
|
155
|
-
i0.ɵɵelementStart(9, "div",
|
|
156
|
-
i0.ɵɵelement(11, "i",
|
|
166
|
+
i0.ɵɵelementStart(9, "div", 42)(10, "span", 43);
|
|
167
|
+
i0.ɵɵelement(11, "i", 44);
|
|
157
168
|
i0.ɵɵtext(12);
|
|
158
169
|
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵconditionalCreate(13,
|
|
170
|
+
i0.ɵɵconditionalCreate(13, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_13_Template, 3, 3, "span", 45);
|
|
160
171
|
i0.ɵɵelementEnd()()();
|
|
161
|
-
i0.ɵɵelement(14, "i",
|
|
172
|
+
i0.ɵɵelement(14, "i", 46);
|
|
162
173
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(15, "div",
|
|
164
|
-
i0.ɵɵconditionalCreate(16,
|
|
165
|
-
i0.ɵɵconditionalCreate(18,
|
|
174
|
+
i0.ɵɵelementStart(15, "div", 47);
|
|
175
|
+
i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 4, "p", 48)(17, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 2, 0, "p", 49);
|
|
176
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Template, 9, 2, "div", 50);
|
|
166
177
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵelementStart(19, "div",
|
|
168
|
-
i0.ɵɵconditionalCreate(20,
|
|
169
|
-
i0.ɵɵconditionalCreate(21,
|
|
178
|
+
i0.ɵɵelementStart(19, "div", 51);
|
|
179
|
+
i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template, 3, 0, "button", 52);
|
|
180
|
+
i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template, 3, 0, "button", 53);
|
|
170
181
|
i0.ɵɵelementEnd()();
|
|
171
182
|
} if (rf & 2) {
|
|
172
|
-
const
|
|
183
|
+
const agent_r5 = ctx.$implicit;
|
|
173
184
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
174
|
-
i0.ɵɵclassProp("expanded", ctx_r1.expandedAgentId ===
|
|
185
|
+
i0.ɵɵclassProp("expanded", ctx_r1.expandedAgentId === agent_r5.ID);
|
|
175
186
|
i0.ɵɵadvance(3);
|
|
176
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(
|
|
187
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r5));
|
|
177
188
|
i0.ɵɵadvance();
|
|
178
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(
|
|
189
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r5) ? 4 : 5);
|
|
179
190
|
i0.ɵɵadvance(3);
|
|
180
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 14,
|
|
191
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 14, agent_r5.Name, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
181
192
|
i0.ɵɵadvance(5);
|
|
182
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(
|
|
193
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(agent_r5), " ");
|
|
183
194
|
i0.ɵɵadvance();
|
|
184
|
-
i0.ɵɵconditional(
|
|
195
|
+
i0.ɵɵconditional(agent_r5.Status ? 13 : -1);
|
|
185
196
|
i0.ɵɵadvance();
|
|
186
|
-
i0.ɵɵclassProp("rotated", ctx_r1.expandedAgentId ===
|
|
197
|
+
i0.ɵɵclassProp("rotated", ctx_r1.expandedAgentId === agent_r5.ID);
|
|
187
198
|
i0.ɵɵadvance(2);
|
|
188
|
-
i0.ɵɵconditional(
|
|
199
|
+
i0.ɵɵconditional(agent_r5.Description ? 16 : 17);
|
|
189
200
|
i0.ɵɵadvance(2);
|
|
190
|
-
i0.ɵɵconditional(ctx_r1.expandedAgentId ===
|
|
201
|
+
i0.ɵɵconditional(ctx_r1.expandedAgentId === agent_r5.ID ? 18 : -1);
|
|
191
202
|
i0.ɵɵadvance(2);
|
|
192
203
|
i0.ɵɵconditional(ctx_r1.UserCanReadAgents ? 20 : -1);
|
|
193
204
|
i0.ɵɵadvance();
|
|
194
|
-
i0.ɵɵconditional(
|
|
205
|
+
i0.ɵɵconditional(agent_r5.Status === "Active" && ctx_r1.UserCanReadAgents ? 21 : -1);
|
|
195
206
|
} }
|
|
196
|
-
function
|
|
197
|
-
i0.ɵɵelementStart(0, "div",
|
|
198
|
-
i0.ɵɵrepeaterCreate(1,
|
|
207
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
208
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
209
|
+
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template, 22, 17, "div", 33, _forTrack0);
|
|
199
210
|
i0.ɵɵelementEnd();
|
|
200
211
|
} if (rf & 2) {
|
|
201
212
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
202
213
|
i0.ɵɵadvance();
|
|
203
214
|
i0.ɵɵrepeater(ctx_r1.filteredAgents);
|
|
204
215
|
} }
|
|
205
|
-
function
|
|
216
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
206
217
|
i0.ɵɵelementContainer(0);
|
|
207
218
|
} }
|
|
208
|
-
function
|
|
209
|
-
i0.ɵɵtemplate(0,
|
|
219
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
220
|
+
i0.ɵɵtemplate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 67);
|
|
210
221
|
} if (rf & 2) {
|
|
211
|
-
const
|
|
222
|
+
const node_r8 = i0.ɵɵnextContext().$implicit;
|
|
212
223
|
i0.ɵɵnextContext(2);
|
|
213
|
-
const
|
|
214
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
224
|
+
const categoryNodeTpl_r9 = i0.ɵɵreference(3);
|
|
225
|
+
i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTpl_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r8));
|
|
215
226
|
} }
|
|
216
|
-
function
|
|
217
|
-
i0.ɵɵconditionalCreate(0,
|
|
227
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_0_Template, 1, 4, "ng-container");
|
|
218
229
|
} if (rf & 2) {
|
|
219
|
-
const
|
|
230
|
+
const node_r8 = ctx.$implicit;
|
|
220
231
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
221
|
-
i0.ɵɵconditional(ctx_r1.hasVisibleContent(
|
|
232
|
+
i0.ɵɵconditional(ctx_r1.hasVisibleContent(node_r8) ? 0 : -1);
|
|
222
233
|
} }
|
|
223
|
-
function
|
|
224
|
-
i0.ɵɵelement(0, "img",
|
|
234
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
235
|
+
i0.ɵɵelement(0, "img", 76);
|
|
225
236
|
} if (rf & 2) {
|
|
226
|
-
const
|
|
227
|
-
i0.ɵɵproperty("src",
|
|
237
|
+
const agent_r11 = i0.ɵɵnextContext().$implicit;
|
|
238
|
+
i0.ɵɵproperty("src", agent_r11.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r11.Name + " logo");
|
|
228
239
|
} }
|
|
229
|
-
function
|
|
240
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
230
241
|
i0.ɵɵelement(0, "i");
|
|
231
242
|
} if (rf & 2) {
|
|
232
|
-
const
|
|
243
|
+
const agent_r11 = i0.ɵɵnextContext().$implicit;
|
|
233
244
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
234
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(
|
|
245
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r11));
|
|
235
246
|
} }
|
|
236
|
-
function
|
|
237
|
-
const
|
|
238
|
-
i0.ɵɵelementStart(0, "button",
|
|
239
|
-
i0.ɵɵlistener("click", function
|
|
240
|
-
i0.ɵɵelement(1, "i",
|
|
247
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
248
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
249
|
+
i0.ɵɵelementStart(0, "button", 82);
|
|
250
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const agent_r11 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.runAgent(agent_r11); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
251
|
+
i0.ɵɵelement(1, "i", 65);
|
|
241
252
|
i0.ɵɵelementEnd();
|
|
242
253
|
} }
|
|
243
|
-
function
|
|
244
|
-
const
|
|
245
|
-
i0.ɵɵelementStart(0, "div",
|
|
246
|
-
i0.ɵɵlistener("click", function
|
|
247
|
-
i0.ɵɵelementStart(1, "div",
|
|
248
|
-
i0.ɵɵconditionalCreate(2,
|
|
254
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
255
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
256
|
+
i0.ɵɵelementStart(0, "div", 74);
|
|
257
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Template_div_click_0_listener() { const agent_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r11)); });
|
|
258
|
+
i0.ɵɵelementStart(1, "div", 75);
|
|
259
|
+
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_2_Template, 1, 2, "img", 76)(3, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_3_Template, 1, 2, "i", 39);
|
|
249
260
|
i0.ɵɵelementEnd();
|
|
250
|
-
i0.ɵɵelementStart(4, "div",
|
|
261
|
+
i0.ɵɵelementStart(4, "div", 77)(5, "span", 78);
|
|
251
262
|
i0.ɵɵtext(6);
|
|
252
263
|
i0.ɵɵelementEnd();
|
|
253
|
-
i0.ɵɵelementStart(7, "span",
|
|
264
|
+
i0.ɵɵelementStart(7, "span", 79);
|
|
254
265
|
i0.ɵɵtext(8);
|
|
255
266
|
i0.ɵɵelementEnd()();
|
|
256
|
-
i0.ɵɵelementStart(9, "span",
|
|
267
|
+
i0.ɵɵelementStart(9, "span", 80);
|
|
257
268
|
i0.ɵɵtext(10);
|
|
258
269
|
i0.ɵɵelementEnd();
|
|
259
|
-
i0.ɵɵconditionalCreate(11,
|
|
270
|
+
i0.ɵɵconditionalCreate(11, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_11_Template, 2, 0, "button", 81);
|
|
260
271
|
i0.ɵɵelementEnd();
|
|
261
272
|
} if (rf & 2) {
|
|
262
|
-
const
|
|
273
|
+
const agent_r11 = ctx.$implicit;
|
|
263
274
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
264
275
|
i0.ɵɵadvance();
|
|
265
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(
|
|
276
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r11));
|
|
266
277
|
i0.ɵɵadvance();
|
|
267
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(
|
|
278
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r11) ? 2 : 3);
|
|
268
279
|
i0.ɵɵadvance(4);
|
|
269
|
-
i0.ɵɵtextInterpolate(
|
|
280
|
+
i0.ɵɵtextInterpolate(agent_r11.Name);
|
|
270
281
|
i0.ɵɵadvance(2);
|
|
271
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(
|
|
282
|
+
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(agent_r11));
|
|
272
283
|
i0.ɵɵadvance();
|
|
273
|
-
i0.ɵɵclassMap("status-" + (
|
|
284
|
+
i0.ɵɵclassMap("status-" + (agent_r11.Status || "unknown").toLowerCase());
|
|
274
285
|
i0.ɵɵadvance();
|
|
275
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
286
|
+
i0.ɵɵtextInterpolate1(" ", agent_r11.Status, " ");
|
|
276
287
|
i0.ɵɵadvance();
|
|
277
|
-
i0.ɵɵconditional(
|
|
288
|
+
i0.ɵɵconditional(agent_r11.Status === "Active" && ctx_r1.UserCanReadAgents ? 11 : -1);
|
|
278
289
|
} }
|
|
279
|
-
function
|
|
280
|
-
i0.ɵɵelementStart(0, "div",
|
|
281
|
-
i0.ɵɵelement(2, "i",
|
|
282
|
-
i0.ɵɵelementStart(3, "span",
|
|
290
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 68);
|
|
292
|
+
i0.ɵɵelement(2, "i", 69);
|
|
293
|
+
i0.ɵɵelementStart(3, "span", 70);
|
|
283
294
|
i0.ɵɵtext(4, "Uncategorized");
|
|
284
295
|
i0.ɵɵelementEnd();
|
|
285
|
-
i0.ɵɵelementStart(5, "span",
|
|
296
|
+
i0.ɵɵelementStart(5, "span", 71);
|
|
286
297
|
i0.ɵɵtext(6);
|
|
287
298
|
i0.ɵɵelementEnd()();
|
|
288
|
-
i0.ɵɵelementStart(7, "div",
|
|
289
|
-
i0.ɵɵrepeaterCreate(8,
|
|
299
|
+
i0.ɵɵelementStart(7, "div", 72);
|
|
300
|
+
i0.ɵɵrepeaterCreate(8, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Template, 12, 9, "div", 73, _forTrack0);
|
|
290
301
|
i0.ɵɵelementEnd()();
|
|
291
302
|
} if (rf & 2) {
|
|
292
303
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -295,10 +306,10 @@ function AgentConfigurationComponent_Conditional_30_Conditional_1_Conditional_1_
|
|
|
295
306
|
i0.ɵɵadvance(2);
|
|
296
307
|
i0.ɵɵrepeater(ctx_r1.uncategorizedAgents);
|
|
297
308
|
} }
|
|
298
|
-
function
|
|
299
|
-
i0.ɵɵelementStart(0, "div",
|
|
300
|
-
i0.ɵɵrepeaterCreate(1,
|
|
301
|
-
i0.ɵɵconditionalCreate(3,
|
|
309
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
311
|
+
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Template, 1, 1, null, null, _forTrack1);
|
|
312
|
+
i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_Template, 10, 1, "div", 66);
|
|
302
313
|
i0.ɵɵelementEnd();
|
|
303
314
|
} if (rf & 2) {
|
|
304
315
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -307,234 +318,234 @@ function AgentConfigurationComponent_Conditional_30_Conditional_1_Conditional_1_
|
|
|
307
318
|
i0.ɵɵadvance(2);
|
|
308
319
|
i0.ɵɵconditional(ctx_r1.uncategorizedAgents.length > 0 ? 3 : -1);
|
|
309
320
|
} }
|
|
310
|
-
function
|
|
311
|
-
i0.ɵɵelement(0, "img",
|
|
321
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
322
|
+
i0.ɵɵelement(0, "img", 76);
|
|
312
323
|
} if (rf & 2) {
|
|
313
|
-
const
|
|
314
|
-
i0.ɵɵproperty("src",
|
|
324
|
+
const agent_r16 = i0.ɵɵnextContext().$implicit;
|
|
325
|
+
i0.ɵɵproperty("src", agent_r16.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r16.Name + " logo");
|
|
315
326
|
} }
|
|
316
|
-
function
|
|
327
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
317
328
|
i0.ɵɵelement(0, "i");
|
|
318
329
|
} if (rf & 2) {
|
|
319
|
-
const
|
|
330
|
+
const agent_r16 = i0.ɵɵnextContext().$implicit;
|
|
320
331
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
321
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(
|
|
332
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r16));
|
|
322
333
|
} }
|
|
323
|
-
function
|
|
324
|
-
const
|
|
325
|
-
i0.ɵɵelementStart(0, "button",
|
|
326
|
-
i0.ɵɵlistener("click", function
|
|
327
|
-
i0.ɵɵelement(1, "i",
|
|
334
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
335
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
336
|
+
i0.ɵɵelementStart(0, "button", 82);
|
|
337
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r17); const agent_r16 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(6); ctx_r1.runAgent(agent_r16); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
338
|
+
i0.ɵɵelement(1, "i", 65);
|
|
328
339
|
i0.ɵɵelementEnd();
|
|
329
340
|
} }
|
|
330
|
-
function
|
|
331
|
-
const
|
|
332
|
-
i0.ɵɵelementStart(0, "div",
|
|
333
|
-
i0.ɵɵlistener("click", function
|
|
334
|
-
i0.ɵɵelementStart(1, "div",
|
|
335
|
-
i0.ɵɵconditionalCreate(2,
|
|
341
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
342
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
343
|
+
i0.ɵɵelementStart(0, "div", 74);
|
|
344
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Template_div_click_0_listener() { const agent_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r16)); });
|
|
345
|
+
i0.ɵɵelementStart(1, "div", 75);
|
|
346
|
+
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_2_Template, 1, 2, "img", 76)(3, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_3_Template, 1, 2, "i", 39);
|
|
336
347
|
i0.ɵɵelementEnd();
|
|
337
|
-
i0.ɵɵelementStart(4, "div",
|
|
348
|
+
i0.ɵɵelementStart(4, "div", 77)(5, "span", 78);
|
|
338
349
|
i0.ɵɵtext(6);
|
|
339
350
|
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(7, "span",
|
|
351
|
+
i0.ɵɵelementStart(7, "span", 79);
|
|
341
352
|
i0.ɵɵtext(8);
|
|
342
353
|
i0.ɵɵelementEnd()();
|
|
343
|
-
i0.ɵɵelementStart(9, "span",
|
|
354
|
+
i0.ɵɵelementStart(9, "span", 80);
|
|
344
355
|
i0.ɵɵtext(10);
|
|
345
356
|
i0.ɵɵelementEnd();
|
|
346
|
-
i0.ɵɵconditionalCreate(11,
|
|
357
|
+
i0.ɵɵconditionalCreate(11, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_11_Template, 2, 0, "button", 81);
|
|
347
358
|
i0.ɵɵelementEnd();
|
|
348
359
|
} if (rf & 2) {
|
|
349
|
-
const
|
|
360
|
+
const agent_r16 = ctx.$implicit;
|
|
350
361
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
351
362
|
i0.ɵɵadvance();
|
|
352
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(
|
|
363
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r16));
|
|
353
364
|
i0.ɵɵadvance();
|
|
354
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(
|
|
365
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r16) ? 2 : 3);
|
|
355
366
|
i0.ɵɵadvance(4);
|
|
356
|
-
i0.ɵɵtextInterpolate(
|
|
367
|
+
i0.ɵɵtextInterpolate(agent_r16.Name);
|
|
357
368
|
i0.ɵɵadvance(2);
|
|
358
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(
|
|
369
|
+
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(agent_r16));
|
|
359
370
|
i0.ɵɵadvance();
|
|
360
|
-
i0.ɵɵclassMap("status-" + (
|
|
371
|
+
i0.ɵɵclassMap("status-" + (agent_r16.Status || "unknown").toLowerCase());
|
|
361
372
|
i0.ɵɵadvance();
|
|
362
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
373
|
+
i0.ɵɵtextInterpolate1(" ", agent_r16.Status, " ");
|
|
363
374
|
i0.ɵɵadvance();
|
|
364
|
-
i0.ɵɵconditional(
|
|
375
|
+
i0.ɵɵconditional(agent_r16.Status === "Active" && ctx_r1.UserCanReadAgents ? 11 : -1);
|
|
365
376
|
} }
|
|
366
|
-
function
|
|
367
|
-
i0.ɵɵelementStart(0, "div",
|
|
368
|
-
i0.ɵɵrepeaterCreate(1,
|
|
377
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
378
|
+
i0.ɵɵelementStart(0, "div", 72);
|
|
379
|
+
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Template, 12, 9, "div", 73, _forTrack0);
|
|
369
380
|
i0.ɵɵelementEnd();
|
|
370
381
|
} if (rf & 2) {
|
|
371
|
-
const
|
|
372
|
-
const
|
|
373
|
-
const
|
|
374
|
-
i0.ɵɵstyleProp("padding-left", (
|
|
382
|
+
const ctx_r17 = i0.ɵɵnextContext(2);
|
|
383
|
+
const node_r14 = ctx_r17.$implicit;
|
|
384
|
+
const depth_r19 = ctx_r17.depth;
|
|
385
|
+
i0.ɵɵstyleProp("padding-left", (depth_r19 + 1) * 24, "px");
|
|
375
386
|
i0.ɵɵadvance();
|
|
376
|
-
i0.ɵɵrepeater(
|
|
387
|
+
i0.ɵɵrepeater(node_r14.Agents);
|
|
377
388
|
} }
|
|
378
|
-
function
|
|
389
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
379
390
|
i0.ɵɵelementContainer(0);
|
|
380
391
|
} }
|
|
381
|
-
function
|
|
392
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
382
393
|
i0.ɵɵelementStart(0, "div");
|
|
383
|
-
i0.ɵɵtemplate(1,
|
|
394
|
+
i0.ɵɵtemplate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 67);
|
|
384
395
|
i0.ɵɵelementEnd();
|
|
385
396
|
} if (rf & 2) {
|
|
386
|
-
const
|
|
387
|
-
const
|
|
397
|
+
const child_r20 = i0.ɵɵnextContext().$implicit;
|
|
398
|
+
const depth_r19 = i0.ɵɵnextContext(2).depth;
|
|
388
399
|
i0.ɵɵnextContext();
|
|
389
|
-
const
|
|
390
|
-
i0.ɵɵstyleProp("padding-left", (
|
|
400
|
+
const categoryNodeTpl_r9 = i0.ɵɵreference(3);
|
|
401
|
+
i0.ɵɵstyleProp("padding-left", (depth_r19 + 1) * 24, "px");
|
|
391
402
|
i0.ɵɵadvance();
|
|
392
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
403
|
+
i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTpl_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(4, _c1, child_r20, depth_r19 + 1));
|
|
393
404
|
} }
|
|
394
|
-
function
|
|
395
|
-
i0.ɵɵconditionalCreate(0,
|
|
405
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
406
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Conditional_0_Template, 2, 7, "div", 87);
|
|
396
407
|
} if (rf & 2) {
|
|
397
|
-
const
|
|
408
|
+
const child_r20 = ctx.$implicit;
|
|
398
409
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
399
|
-
i0.ɵɵconditional(ctx_r1.hasVisibleContent(
|
|
410
|
+
i0.ɵɵconditional(ctx_r1.hasVisibleContent(child_r20) ? 0 : -1);
|
|
400
411
|
} }
|
|
401
|
-
function
|
|
402
|
-
i0.ɵɵconditionalCreate(0,
|
|
403
|
-
i0.ɵɵrepeaterCreate(1,
|
|
412
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_Template, 3, 2, "div", 86);
|
|
414
|
+
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Template, 1, 1, null, null, _forTrack1);
|
|
404
415
|
} if (rf & 2) {
|
|
405
|
-
const
|
|
406
|
-
i0.ɵɵconditional(
|
|
416
|
+
const node_r14 = i0.ɵɵnextContext().$implicit;
|
|
417
|
+
i0.ɵɵconditional(node_r14.Agents.length > 0 ? 0 : -1);
|
|
407
418
|
i0.ɵɵadvance();
|
|
408
|
-
i0.ɵɵrepeater(
|
|
419
|
+
i0.ɵɵrepeater(node_r14.Children);
|
|
409
420
|
} }
|
|
410
|
-
function
|
|
411
|
-
const
|
|
412
|
-
i0.ɵɵelementStart(0, "div",
|
|
413
|
-
i0.ɵɵlistener("click", function
|
|
414
|
-
i0.ɵɵelement(2, "i",
|
|
415
|
-
i0.ɵɵelementStart(4, "span",
|
|
421
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
422
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
423
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 83);
|
|
424
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Template_div_click_1_listener() { const node_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCategoryNode(node_r14)); });
|
|
425
|
+
i0.ɵɵelement(2, "i", 84)(3, "i", 85);
|
|
426
|
+
i0.ɵɵelementStart(4, "span", 70);
|
|
416
427
|
i0.ɵɵtext(5);
|
|
417
428
|
i0.ɵɵelementEnd();
|
|
418
|
-
i0.ɵɵelementStart(6, "span",
|
|
429
|
+
i0.ɵɵelementStart(6, "span", 71);
|
|
419
430
|
i0.ɵɵtext(7);
|
|
420
431
|
i0.ɵɵelementEnd()();
|
|
421
|
-
i0.ɵɵconditionalCreate(8,
|
|
432
|
+
i0.ɵɵconditionalCreate(8, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Template, 3, 1);
|
|
422
433
|
i0.ɵɵelementEnd();
|
|
423
434
|
} if (rf & 2) {
|
|
424
|
-
const
|
|
425
|
-
const
|
|
435
|
+
const node_r14 = ctx.$implicit;
|
|
436
|
+
const depth_r19 = ctx.depth;
|
|
426
437
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
427
438
|
i0.ɵɵadvance();
|
|
428
|
-
i0.ɵɵclassMap("depth-" +
|
|
439
|
+
i0.ɵɵclassMap("depth-" + depth_r19);
|
|
429
440
|
i0.ɵɵadvance();
|
|
430
|
-
i0.ɵɵclassProp("fa-chevron-right", !
|
|
441
|
+
i0.ɵɵclassProp("fa-chevron-right", !node_r14.Expanded)("fa-chevron-down", node_r14.Expanded);
|
|
431
442
|
i0.ɵɵadvance();
|
|
432
|
-
i0.ɵɵclassProp("fa-folder", !
|
|
443
|
+
i0.ɵɵclassProp("fa-folder", !node_r14.Expanded)("fa-folder-open", node_r14.Expanded);
|
|
433
444
|
i0.ɵɵadvance(2);
|
|
434
|
-
i0.ɵɵtextInterpolate(
|
|
445
|
+
i0.ɵɵtextInterpolate(node_r14.Category.Name);
|
|
435
446
|
i0.ɵɵadvance(2);
|
|
436
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentCount(
|
|
447
|
+
i0.ɵɵtextInterpolate(ctx_r1.getAgentCount(node_r14));
|
|
437
448
|
i0.ɵɵadvance();
|
|
438
|
-
i0.ɵɵconditional(
|
|
449
|
+
i0.ɵɵconditional(node_r14.Expanded ? 8 : -1);
|
|
439
450
|
} }
|
|
440
|
-
function
|
|
441
|
-
i0.ɵɵelement(0, "img",
|
|
451
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
452
|
+
i0.ɵɵelement(0, "img", 94);
|
|
442
453
|
} if (rf & 2) {
|
|
443
|
-
const
|
|
444
|
-
i0.ɵɵproperty("src",
|
|
454
|
+
const agent_r22 = i0.ɵɵnextContext().$implicit;
|
|
455
|
+
i0.ɵɵproperty("src", agent_r22.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r22.Name + " logo");
|
|
445
456
|
} }
|
|
446
|
-
function
|
|
457
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
447
458
|
i0.ɵɵelement(0, "i");
|
|
448
459
|
} if (rf & 2) {
|
|
449
|
-
const
|
|
460
|
+
const agent_r22 = i0.ɵɵnextContext().$implicit;
|
|
450
461
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
451
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(
|
|
462
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r22));
|
|
452
463
|
} }
|
|
453
|
-
function
|
|
454
|
-
i0.ɵɵelement(0, "div",
|
|
464
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
+
i0.ɵɵelement(0, "div", 95);
|
|
455
466
|
i0.ɵɵpipe(1, "highlightSearch");
|
|
456
467
|
} if (rf & 2) {
|
|
457
|
-
const
|
|
468
|
+
const agent_r22 = i0.ɵɵnextContext().$implicit;
|
|
458
469
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
459
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1,
|
|
470
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r22.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
460
471
|
} }
|
|
461
|
-
function
|
|
462
|
-
const
|
|
463
|
-
i0.ɵɵelementStart(0, "button",
|
|
464
|
-
i0.ɵɵlistener("click", function
|
|
465
|
-
i0.ɵɵelement(1, "i",
|
|
472
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
474
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
475
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const agent_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r22)); });
|
|
476
|
+
i0.ɵɵelement(1, "i", 63);
|
|
466
477
|
i0.ɵɵelementEnd();
|
|
467
478
|
} }
|
|
468
|
-
function
|
|
469
|
-
const
|
|
470
|
-
i0.ɵɵelementStart(0, "button",
|
|
471
|
-
i0.ɵɵlistener("click", function
|
|
472
|
-
i0.ɵɵelement(1, "i",
|
|
479
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
480
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
481
|
+
i0.ɵɵelementStart(0, "button", 82);
|
|
482
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const agent_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.runAgent(agent_r22)); });
|
|
483
|
+
i0.ɵɵelement(1, "i", 65);
|
|
473
484
|
i0.ɵɵelementEnd();
|
|
474
485
|
} }
|
|
475
|
-
function
|
|
476
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div",
|
|
477
|
-
i0.ɵɵconditionalCreate(4,
|
|
486
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Template(rf, ctx) { if (rf & 1) {
|
|
487
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 92)(3, "div", 93);
|
|
488
|
+
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_4_Template, 1, 2, "img", 94)(5, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_5_Template, 1, 2, "i", 39);
|
|
478
489
|
i0.ɵɵelementEnd();
|
|
479
490
|
i0.ɵɵelementStart(6, "div");
|
|
480
|
-
i0.ɵɵelement(7, "div",
|
|
491
|
+
i0.ɵɵelement(7, "div", 41);
|
|
481
492
|
i0.ɵɵpipe(8, "highlightSearch");
|
|
482
|
-
i0.ɵɵconditionalCreate(9,
|
|
493
|
+
i0.ɵɵconditionalCreate(9, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_9_Template, 2, 4, "div", 95);
|
|
483
494
|
i0.ɵɵelementEnd()()();
|
|
484
|
-
i0.ɵɵelementStart(10, "td")(11, "span",
|
|
495
|
+
i0.ɵɵelementStart(10, "td")(11, "span", 96);
|
|
485
496
|
i0.ɵɵtext(12);
|
|
486
497
|
i0.ɵɵelementEnd()();
|
|
487
|
-
i0.ɵɵelementStart(13, "td")(14, "span",
|
|
498
|
+
i0.ɵɵelementStart(13, "td")(14, "span", 97);
|
|
488
499
|
i0.ɵɵtext(15);
|
|
489
500
|
i0.ɵɵelementEnd()();
|
|
490
|
-
i0.ɵɵelementStart(16, "td")(17, "div",
|
|
491
|
-
i0.ɵɵconditionalCreate(18,
|
|
492
|
-
i0.ɵɵconditionalCreate(19,
|
|
501
|
+
i0.ɵɵelementStart(16, "td")(17, "div", 98);
|
|
502
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_18_Template, 2, 0, "button", 99);
|
|
503
|
+
i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Conditional_19_Template, 2, 0, "button", 81);
|
|
493
504
|
i0.ɵɵelementEnd()()();
|
|
494
505
|
} if (rf & 2) {
|
|
495
|
-
const
|
|
506
|
+
const agent_r22 = ctx.$implicit;
|
|
496
507
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
497
508
|
i0.ɵɵadvance(3);
|
|
498
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(
|
|
509
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r22));
|
|
499
510
|
i0.ɵɵadvance();
|
|
500
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(
|
|
511
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r22) ? 4 : 5);
|
|
501
512
|
i0.ɵɵadvance(3);
|
|
502
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 11,
|
|
513
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 11, agent_r22.Name, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
503
514
|
i0.ɵɵadvance(2);
|
|
504
|
-
i0.ɵɵconditional(
|
|
515
|
+
i0.ɵɵconditional(agent_r22.Description ? 9 : -1);
|
|
505
516
|
i0.ɵɵadvance(3);
|
|
506
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(
|
|
517
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(agent_r22), " ");
|
|
507
518
|
i0.ɵɵadvance(2);
|
|
508
|
-
i0.ɵɵclassMap("status-" + (
|
|
519
|
+
i0.ɵɵclassMap("status-" + (agent_r22.Status || "unknown").toLowerCase());
|
|
509
520
|
i0.ɵɵadvance();
|
|
510
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
521
|
+
i0.ɵɵtextInterpolate1(" ", agent_r22.Status || "Unknown", " ");
|
|
511
522
|
i0.ɵɵadvance(3);
|
|
512
523
|
i0.ɵɵconditional(ctx_r1.UserCanReadAgents ? 18 : -1);
|
|
513
524
|
i0.ɵɵadvance();
|
|
514
|
-
i0.ɵɵconditional(
|
|
525
|
+
i0.ɵɵconditional(agent_r22.Status === "Active" && ctx_r1.UserCanReadAgents ? 19 : -1);
|
|
515
526
|
} }
|
|
516
|
-
function
|
|
517
|
-
const
|
|
518
|
-
i0.ɵɵelementStart(0, "div",
|
|
519
|
-
i0.ɵɵlistener("click", function
|
|
520
|
-
i0.ɵɵelementStart(5, "span",
|
|
527
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
528
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
529
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "table", 88)(2, "thead")(3, "tr")(4, "th", 89);
|
|
530
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Name")); });
|
|
531
|
+
i0.ɵɵelementStart(5, "span", 90);
|
|
521
532
|
i0.ɵɵtext(6, " Name ");
|
|
522
|
-
i0.ɵɵelement(7, "i",
|
|
533
|
+
i0.ɵɵelement(7, "i", 91);
|
|
523
534
|
i0.ɵɵelementEnd()();
|
|
524
535
|
i0.ɵɵelementStart(8, "th");
|
|
525
536
|
i0.ɵɵtext(9, "Type");
|
|
526
537
|
i0.ɵɵelementEnd();
|
|
527
|
-
i0.ɵɵelementStart(10, "th",
|
|
528
|
-
i0.ɵɵlistener("click", function
|
|
529
|
-
i0.ɵɵelementStart(11, "span",
|
|
538
|
+
i0.ɵɵelementStart(10, "th", 89);
|
|
539
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Status")); });
|
|
540
|
+
i0.ɵɵelementStart(11, "span", 90);
|
|
530
541
|
i0.ɵɵtext(12, " Status ");
|
|
531
|
-
i0.ɵɵelement(13, "i",
|
|
542
|
+
i0.ɵɵelement(13, "i", 91);
|
|
532
543
|
i0.ɵɵelementEnd()();
|
|
533
544
|
i0.ɵɵelementStart(14, "th");
|
|
534
545
|
i0.ɵɵtext(15, "Actions");
|
|
535
546
|
i0.ɵɵelementEnd()()();
|
|
536
547
|
i0.ɵɵelementStart(16, "tbody");
|
|
537
|
-
i0.ɵɵrepeaterCreate(17,
|
|
548
|
+
i0.ɵɵrepeaterCreate(17, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_For_18_Template, 20, 14, "tr", null, _forTrack0);
|
|
538
549
|
i0.ɵɵelementEnd()()();
|
|
539
550
|
} if (rf & 2) {
|
|
540
551
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -545,11 +556,11 @@ function AgentConfigurationComponent_Conditional_30_Conditional_1_Conditional_4_
|
|
|
545
556
|
i0.ɵɵadvance(7);
|
|
546
557
|
i0.ɵɵrepeater(ctx_r1.filteredAgents);
|
|
547
558
|
} }
|
|
548
|
-
function
|
|
549
|
-
i0.ɵɵconditionalCreate(0,
|
|
550
|
-
i0.ɵɵconditionalCreate(1,
|
|
551
|
-
i0.ɵɵtemplate(2,
|
|
552
|
-
i0.ɵɵconditionalCreate(4,
|
|
559
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
560
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template, 3, 0, "div", 30);
|
|
561
|
+
i0.ɵɵconditionalCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template, 4, 1, "div", 31);
|
|
562
|
+
i0.ɵɵtemplate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Template, 9, 13, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
563
|
+
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_Template, 19, 8, "div", 32);
|
|
553
564
|
} if (rf & 2) {
|
|
554
565
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
555
566
|
i0.ɵɵconditional(ctx_r1.viewMode === "grid" ? 0 : -1);
|
|
@@ -558,42 +569,42 @@ function AgentConfigurationComponent_Conditional_30_Conditional_1_Template(rf, c
|
|
|
558
569
|
i0.ɵɵadvance(3);
|
|
559
570
|
i0.ɵɵconditional(ctx_r1.viewMode === "list" ? 4 : -1);
|
|
560
571
|
} }
|
|
561
|
-
function
|
|
562
|
-
i0.ɵɵconditionalCreate(0,
|
|
572
|
+
function AgentConfigurationComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
573
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_0_Template, 9, 0, "div", 28)(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Template, 5, 3);
|
|
563
574
|
} if (rf & 2) {
|
|
564
575
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
565
576
|
i0.ɵɵconditional(ctx_r1.filteredAgents.length === 0 ? 0 : 1);
|
|
566
577
|
} }
|
|
567
|
-
function
|
|
568
|
-
const
|
|
569
|
-
i0.ɵɵelementStart(0, "div",
|
|
570
|
-
i0.ɵɵlistener("click", function
|
|
578
|
+
function AgentConfigurationComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
579
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
580
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
581
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_30_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
|
|
571
582
|
i0.ɵɵelementEnd();
|
|
572
583
|
} }
|
|
573
|
-
function
|
|
574
|
-
i0.ɵɵelement(0, "img",
|
|
584
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
585
|
+
i0.ɵɵelement(0, "img", 105);
|
|
575
586
|
} if (rf & 2) {
|
|
576
587
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
577
588
|
i0.ɵɵproperty("src", ctx_r1.selectedAgent.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.selectedAgent.Name + " logo");
|
|
578
589
|
} }
|
|
579
|
-
function
|
|
590
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
580
591
|
i0.ɵɵelement(0, "i");
|
|
581
592
|
} if (rf & 2) {
|
|
582
593
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
583
594
|
i0.ɵɵclassMap(ctx_r1.getAgentIcon(ctx_r1.selectedAgent));
|
|
584
595
|
} }
|
|
585
|
-
function
|
|
586
|
-
i0.ɵɵelementStart(0, "span",
|
|
587
|
-
i0.ɵɵelement(1, "i",
|
|
596
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
597
|
+
i0.ɵɵelementStart(0, "span", 113);
|
|
598
|
+
i0.ɵɵelement(1, "i", 125);
|
|
588
599
|
i0.ɵɵtext(2, " Exposed as Action ");
|
|
589
600
|
i0.ɵɵelementEnd();
|
|
590
601
|
} }
|
|
591
|
-
function
|
|
592
|
-
i0.ɵɵelementStart(0, "div",
|
|
593
|
-
i0.ɵɵelement(2, "i",
|
|
602
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
603
|
+
i0.ɵɵelementStart(0, "div", 111)(1, "h4", 114);
|
|
604
|
+
i0.ɵɵelement(2, "i", 126);
|
|
594
605
|
i0.ɵɵtext(3, " Description ");
|
|
595
606
|
i0.ɵɵelementEnd();
|
|
596
|
-
i0.ɵɵelementStart(4, "p",
|
|
607
|
+
i0.ɵɵelementStart(4, "p", 127);
|
|
597
608
|
i0.ɵɵtext(5);
|
|
598
609
|
i0.ɵɵelementEnd()();
|
|
599
610
|
} if (rf & 2) {
|
|
@@ -601,11 +612,11 @@ function AgentConfigurationComponent_Conditional_33_Conditional_19_Template(rf,
|
|
|
601
612
|
i0.ɵɵadvance(5);
|
|
602
613
|
i0.ɵɵtextInterpolate(ctx_r1.selectedAgent.Description);
|
|
603
614
|
} }
|
|
604
|
-
function
|
|
605
|
-
i0.ɵɵelementStart(0, "div",
|
|
615
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
+
i0.ɵɵelementStart(0, "div", 117)(1, "span", 118);
|
|
606
617
|
i0.ɵɵtext(2, "Parent Agent");
|
|
607
618
|
i0.ɵɵelementEnd();
|
|
608
|
-
i0.ɵɵelementStart(3, "span",
|
|
619
|
+
i0.ɵɵelementStart(3, "span", 119);
|
|
609
620
|
i0.ɵɵtext(4);
|
|
610
621
|
i0.ɵɵelementEnd()();
|
|
611
622
|
} if (rf & 2) {
|
|
@@ -613,105 +624,105 @@ function AgentConfigurationComponent_Conditional_33_Conditional_31_Template(rf,
|
|
|
613
624
|
i0.ɵɵadvance(4);
|
|
614
625
|
i0.ɵɵtextInterpolate(ctx_r1.getParentAgentName(ctx_r1.selectedAgent));
|
|
615
626
|
} }
|
|
616
|
-
function
|
|
617
|
-
i0.ɵɵelement(0, "i",
|
|
627
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
628
|
+
i0.ɵɵelement(0, "i", 128);
|
|
618
629
|
i0.ɵɵtext(1, " Enabled ");
|
|
619
630
|
} }
|
|
620
|
-
function
|
|
621
|
-
i0.ɵɵelement(0, "i",
|
|
631
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
632
|
+
i0.ɵɵelement(0, "i", 129);
|
|
622
633
|
i0.ɵɵtext(1, " Disabled ");
|
|
623
634
|
} }
|
|
624
|
-
function
|
|
625
|
-
i0.ɵɵelement(0, "i",
|
|
635
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
636
|
+
i0.ɵɵelement(0, "i", 128);
|
|
626
637
|
i0.ɵɵtext(1, " Yes ");
|
|
627
638
|
} }
|
|
628
|
-
function
|
|
629
|
-
i0.ɵɵelement(0, "i",
|
|
639
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
640
|
+
i0.ɵɵelement(0, "i", 129);
|
|
630
641
|
i0.ɵɵtext(1, " No ");
|
|
631
642
|
} }
|
|
632
|
-
function
|
|
633
|
-
const
|
|
634
|
-
i0.ɵɵelementStart(0, "button",
|
|
635
|
-
i0.ɵɵlistener("click", function
|
|
636
|
-
i0.ɵɵelement(1, "i",
|
|
643
|
+
function AgentConfigurationComponent_Conditional_32_Conditional_67_Template(rf, ctx) { if (rf & 1) {
|
|
644
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
645
|
+
i0.ɵɵelementStart(0, "button", 130);
|
|
646
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Conditional_67_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgent(ctx_r1.selectedAgent)); });
|
|
647
|
+
i0.ɵɵelement(1, "i", 65);
|
|
637
648
|
i0.ɵɵtext(2, " Run Agent ");
|
|
638
649
|
i0.ɵɵelementEnd();
|
|
639
650
|
} }
|
|
640
|
-
function
|
|
641
|
-
const
|
|
642
|
-
i0.ɵɵelementStart(0, "div",
|
|
643
|
-
i0.ɵɵconditionalCreate(3,
|
|
651
|
+
function AgentConfigurationComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
652
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
653
|
+
i0.ɵɵelementStart(0, "div", 102)(1, "div", 103)(2, "div", 104);
|
|
654
|
+
i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_32_Conditional_3_Template, 1, 2, "img", 105)(4, AgentConfigurationComponent_Conditional_32_Conditional_4_Template, 1, 2, "i", 39);
|
|
644
655
|
i0.ɵɵelementEnd();
|
|
645
|
-
i0.ɵɵelementStart(5, "div",
|
|
656
|
+
i0.ɵɵelementStart(5, "div", 106)(6, "h3");
|
|
646
657
|
i0.ɵɵtext(7);
|
|
647
658
|
i0.ɵɵelementEnd();
|
|
648
|
-
i0.ɵɵelementStart(8, "span",
|
|
659
|
+
i0.ɵɵelementStart(8, "span", 107);
|
|
649
660
|
i0.ɵɵtext(9);
|
|
650
661
|
i0.ɵɵelementEnd()()();
|
|
651
|
-
i0.ɵɵelementStart(10, "button",
|
|
652
|
-
i0.ɵɵlistener("click", function
|
|
653
|
-
i0.ɵɵelement(11, "i",
|
|
662
|
+
i0.ɵɵelementStart(10, "button", 108);
|
|
663
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
|
|
664
|
+
i0.ɵɵelement(11, "i", 109);
|
|
654
665
|
i0.ɵɵelementEnd()();
|
|
655
|
-
i0.ɵɵelementStart(12, "div",
|
|
656
|
-
i0.ɵɵelement(16, "i",
|
|
666
|
+
i0.ɵɵelementStart(12, "div", 110)(13, "div", 111)(14, "div", 112)(15, "span", 97);
|
|
667
|
+
i0.ɵɵelement(16, "i", 55);
|
|
657
668
|
i0.ɵɵtext(17);
|
|
658
669
|
i0.ɵɵelementEnd();
|
|
659
|
-
i0.ɵɵconditionalCreate(18,
|
|
670
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_32_Conditional_18_Template, 3, 0, "span", 113);
|
|
660
671
|
i0.ɵɵelementEnd()();
|
|
661
|
-
i0.ɵɵconditionalCreate(19,
|
|
662
|
-
i0.ɵɵelementStart(20, "div",
|
|
663
|
-
i0.ɵɵelement(22, "i",
|
|
672
|
+
i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_32_Conditional_19_Template, 6, 1, "div", 111);
|
|
673
|
+
i0.ɵɵelementStart(20, "div", 111)(21, "h4", 114);
|
|
674
|
+
i0.ɵɵelement(22, "i", 115);
|
|
664
675
|
i0.ɵɵtext(23, " Configuration ");
|
|
665
676
|
i0.ɵɵelementEnd();
|
|
666
|
-
i0.ɵɵelementStart(24, "div",
|
|
677
|
+
i0.ɵɵelementStart(24, "div", 116)(25, "div", 117)(26, "span", 118);
|
|
667
678
|
i0.ɵɵtext(27, "Execution Mode");
|
|
668
679
|
i0.ɵɵelementEnd();
|
|
669
|
-
i0.ɵɵelementStart(28, "span",
|
|
680
|
+
i0.ɵɵelementStart(28, "span", 119);
|
|
670
681
|
i0.ɵɵelement(29, "i");
|
|
671
682
|
i0.ɵɵtext(30);
|
|
672
683
|
i0.ɵɵelementEnd()();
|
|
673
|
-
i0.ɵɵconditionalCreate(31,
|
|
674
|
-
i0.ɵɵelementStart(32, "div",
|
|
684
|
+
i0.ɵɵconditionalCreate(31, AgentConfigurationComponent_Conditional_32_Conditional_31_Template, 5, 1, "div", 117);
|
|
685
|
+
i0.ɵɵelementStart(32, "div", 117)(33, "span", 118);
|
|
675
686
|
i0.ɵɵtext(34, "Context Compression");
|
|
676
687
|
i0.ɵɵelementEnd();
|
|
677
|
-
i0.ɵɵelementStart(35, "span",
|
|
678
|
-
i0.ɵɵconditionalCreate(36,
|
|
688
|
+
i0.ɵɵelementStart(35, "span", 119);
|
|
689
|
+
i0.ɵɵconditionalCreate(36, AgentConfigurationComponent_Conditional_32_Conditional_36_Template, 2, 0)(37, AgentConfigurationComponent_Conditional_32_Conditional_37_Template, 2, 0);
|
|
679
690
|
i0.ɵɵelementEnd()();
|
|
680
|
-
i0.ɵɵelementStart(38, "div",
|
|
691
|
+
i0.ɵɵelementStart(38, "div", 117)(39, "span", 118);
|
|
681
692
|
i0.ɵɵtext(40, "Exposed as Action");
|
|
682
693
|
i0.ɵɵelementEnd();
|
|
683
|
-
i0.ɵɵelementStart(41, "span",
|
|
684
|
-
i0.ɵɵconditionalCreate(42,
|
|
694
|
+
i0.ɵɵelementStart(41, "span", 119);
|
|
695
|
+
i0.ɵɵconditionalCreate(42, AgentConfigurationComponent_Conditional_32_Conditional_42_Template, 2, 0)(43, AgentConfigurationComponent_Conditional_32_Conditional_43_Template, 2, 0);
|
|
685
696
|
i0.ɵɵelementEnd()();
|
|
686
|
-
i0.ɵɵelementStart(44, "div",
|
|
697
|
+
i0.ɵɵelementStart(44, "div", 117)(45, "span", 118);
|
|
687
698
|
i0.ɵɵtext(46, "Model Selection");
|
|
688
699
|
i0.ɵɵelementEnd();
|
|
689
|
-
i0.ɵɵelementStart(47, "span",
|
|
700
|
+
i0.ɵɵelementStart(47, "span", 119);
|
|
690
701
|
i0.ɵɵtext(48);
|
|
691
702
|
i0.ɵɵelementEnd()()()();
|
|
692
|
-
i0.ɵɵelementStart(49, "div",
|
|
693
|
-
i0.ɵɵelement(51, "i",
|
|
703
|
+
i0.ɵɵelementStart(49, "div", 111)(50, "h4", 114);
|
|
704
|
+
i0.ɵɵelement(51, "i", 120);
|
|
694
705
|
i0.ɵɵtext(52, " Timestamps ");
|
|
695
706
|
i0.ɵɵelementEnd();
|
|
696
|
-
i0.ɵɵelementStart(53, "div",
|
|
707
|
+
i0.ɵɵelementStart(53, "div", 116)(54, "div", 117)(55, "span", 118);
|
|
697
708
|
i0.ɵɵtext(56, "Created");
|
|
698
709
|
i0.ɵɵelementEnd();
|
|
699
|
-
i0.ɵɵelementStart(57, "span",
|
|
710
|
+
i0.ɵɵelementStart(57, "span", 119);
|
|
700
711
|
i0.ɵɵtext(58);
|
|
701
712
|
i0.ɵɵpipe(59, "date");
|
|
702
713
|
i0.ɵɵelementEnd()();
|
|
703
|
-
i0.ɵɵelementStart(60, "div",
|
|
714
|
+
i0.ɵɵelementStart(60, "div", 117)(61, "span", 118);
|
|
704
715
|
i0.ɵɵtext(62, "Updated");
|
|
705
716
|
i0.ɵɵelementEnd();
|
|
706
|
-
i0.ɵɵelementStart(63, "span",
|
|
717
|
+
i0.ɵɵelementStart(63, "span", 119);
|
|
707
718
|
i0.ɵɵtext(64);
|
|
708
719
|
i0.ɵɵpipe(65, "date");
|
|
709
720
|
i0.ɵɵelementEnd()()()()();
|
|
710
|
-
i0.ɵɵelementStart(66, "div",
|
|
711
|
-
i0.ɵɵconditionalCreate(67,
|
|
712
|
-
i0.ɵɵelementStart(68, "button",
|
|
713
|
-
i0.ɵɵlistener("click", function
|
|
714
|
-
i0.ɵɵelement(69, "i",
|
|
721
|
+
i0.ɵɵelementStart(66, "div", 121);
|
|
722
|
+
i0.ɵɵconditionalCreate(67, AgentConfigurationComponent_Conditional_32_Conditional_67_Template, 3, 0, "button", 122);
|
|
723
|
+
i0.ɵɵelementStart(68, "button", 123);
|
|
724
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAgentFromPanel()); });
|
|
725
|
+
i0.ɵɵelement(69, "i", 124);
|
|
715
726
|
i0.ɵɵtext(70, " Open Full Record ");
|
|
716
727
|
i0.ɵɵelementEnd()();
|
|
717
728
|
} if (rf & 2) {
|
|
@@ -1003,8 +1014,6 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1003
1014
|
}
|
|
1004
1015
|
finally {
|
|
1005
1016
|
this.isLoading = false;
|
|
1006
|
-
// force change detection to update the view
|
|
1007
|
-
this.cdr.detectChanges();
|
|
1008
1017
|
}
|
|
1009
1018
|
}
|
|
1010
1019
|
toggleFilterPanel() {
|
|
@@ -1416,7 +1425,7 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1416
1425
|
return 'fa-solid fa-robot';
|
|
1417
1426
|
}
|
|
1418
1427
|
static ɵfac = function AgentConfigurationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentConfigurationComponent)(i0.ɵɵdirectiveInject(i1.AITestHarnessDialogService), i0.ɵɵdirectiveInject(i2.CreateAgentService), i0.ɵɵdirectiveInject(i3.NavigationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1419
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
1428
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 15, consts: [["categoryNodeTpl", ""], [1, "agent-configuration-container"], [1, "dashboard-header"], [1, "header-info"], [1, "dashboard-title"], [1, "fa-solid", "fa-robot"], ["type", "button", "title", "Toggle Filters", 1, "filter-toggle-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "item-count"], [1, "header-controls"], [1, "view-toggle"], ["type", "button", "title", "Grid View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-grip"], ["type", "button", "title", "List View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-list"], ["type", "button", "title", "Category Tree View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-folder-tree"], ["type", "button", "title", "Create New Agent", 1, "control-btn", "primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "main-content"], ["direction", "horizontal", 1, "main-splitter"], [3, "size", "minSize", "maxSize"], [1, "agents-content"], [1, "loading-container"], [1, "detail-panel-overlay"], [1, "detail-panel"], [3, "filtersChange", "filterChange", "resetFilters", "closePanel", "agents", "filteredAgents", "filters"], ["text", "Loading agents...", "size", "large"], [1, "empty-state"], ["type", "button", 1, "empty-state-btn", 3, "click"], [1, "agents-grid"], [1, "agents-tree"], [1, "agents-list"], [1, "agent-card", 3, "expanded"], [1, "agent-card"], [1, "card-header", 3, "click"], [1, "agent-info"], [1, "agent-icon"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-details"], [1, "agent-name", 3, "innerHTML"], [1, "agent-meta"], [1, "meta-item", "type-badge"], [1, "fa-solid", "fa-tag"], [1, "meta-item", 3, "class"], [1, "fa-solid", "fa-chevron-down", "expand-icon"], [1, "card-body"], [1, "agent-description", 3, "innerHTML"], [1, "agent-description", "text-muted"], [1, "expanded-content"], [1, "card-actions"], ["type", "button", "title", "View Details", 1, "action-btn"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary"], [1, "meta-item"], [1, "fa-solid", "fa-circle", 2, "font-size", "8px"], [1, "agent-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-check", 2, "color", "#28a745"], [1, "fa-solid", "fa-times", 2, "color", "#dc3545"], ["type", "button", "title", "View Details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [1, "tree-category-group"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "tree-category-header", "depth-0"], [1, "fa-solid", "fa-folder-open", "tree-folder-icon"], [1, "tree-category-name"], [1, "tree-category-count"], [1, "tree-agent-list"], [1, "tree-agent-row"], [1, "tree-agent-row", 3, "click"], [1, "tree-agent-icon"], [1, "tree-agent-logo", 3, "src", "alt"], [1, "tree-agent-info"], [1, "tree-agent-name"], [1, "tree-agent-type"], [1, "tree-agent-status"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary", 3, "click"], [1, "tree-category-header", 3, "click"], [1, "fa-solid", "tree-chevron"], [1, "fa-solid", "tree-folder-icon"], [1, "tree-agent-list", 3, "padding-left"], [3, "padding-left"], [1, "agents-table"], [3, "click"], [1, "sort-header"], [1, "fa-solid", "fa-chevron-up", "sort-icon"], [1, "agent-name-cell"], [1, "agent-icon-small"], [1, "agent-logo-small", 3, "src", "alt"], [1, "agent-description-small", 3, "innerHTML"], [1, "type-badge"], [1, "status-badge"], [1, "table-actions"], ["type", "button", "title", "View Details", 1, "action-btn-small"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], [1, "detail-panel-overlay", 3, "click"], [1, "detail-panel-header"], [1, "detail-panel-title"], [1, "detail-icon"], [1, "detail-logo", 3, "src", "alt"], [1, "detail-title-info"], [1, "detail-subtitle"], [1, "detail-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-panel-content"], [1, "detail-section"], [1, "detail-badges"], [1, "feature-badge"], [1, "detail-section-title"], [1, "fa-solid", "fa-cog"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "fa-solid", "fa-clock"], [1, "detail-panel-actions"], ["type", "button", 1, "detail-action-btn", "secondary"], ["type", "button", 1, "detail-action-btn", "primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-align-left"], [1, "detail-description"], [1, "fa-solid", "fa-check", 2, "color", "#10b981"], [1, "fa-solid", "fa-times", 2, "color", "#ef4444"], ["type", "button", 1, "detail-action-btn", "secondary", 3, "click"]], template: function AgentConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1420
1429
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "h2", 4);
|
|
1421
1430
|
i0.ɵɵelement(4, "i", 5);
|
|
1422
1431
|
i0.ɵɵtext(5, " Agent Configuration ");
|
|
@@ -1446,18 +1455,15 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1446
1455
|
i0.ɵɵelement(21, "i", 18);
|
|
1447
1456
|
i0.ɵɵtext(22, " New Agent ");
|
|
1448
1457
|
i0.ɵɵelementEnd()()();
|
|
1449
|
-
i0.ɵɵelementStart(23, "div", 19)(24, "
|
|
1450
|
-
i0.ɵɵ
|
|
1451
|
-
i0.ɵɵelementStart(
|
|
1452
|
-
i0.ɵɵ
|
|
1453
|
-
i0.ɵɵ
|
|
1454
|
-
i0.ɵɵelementStart(27, "kendo-splitter-pane", 23)(28, "div", 24);
|
|
1455
|
-
i0.ɵɵconditionalCreate(29, AgentConfigurationComponent_Conditional_29_Template, 2, 0, "div", 25);
|
|
1456
|
-
i0.ɵɵconditionalCreate(30, AgentConfigurationComponent_Conditional_30_Template, 2, 1);
|
|
1458
|
+
i0.ɵɵelementStart(23, "div", 19)(24, "as-split", 20);
|
|
1459
|
+
i0.ɵɵconditionalCreate(25, AgentConfigurationComponent_Conditional_25_Template, 2, 6, "as-split-area", 21);
|
|
1460
|
+
i0.ɵɵelementStart(26, "as-split-area")(27, "div", 22);
|
|
1461
|
+
i0.ɵɵconditionalCreate(28, AgentConfigurationComponent_Conditional_28_Template, 2, 0, "div", 23);
|
|
1462
|
+
i0.ɵɵconditionalCreate(29, AgentConfigurationComponent_Conditional_29_Template, 2, 1);
|
|
1457
1463
|
i0.ɵɵelementEnd()()()();
|
|
1458
|
-
i0.ɵɵconditionalCreate(
|
|
1459
|
-
i0.ɵɵelementStart(
|
|
1460
|
-
i0.ɵɵconditionalCreate(
|
|
1464
|
+
i0.ɵɵconditionalCreate(30, AgentConfigurationComponent_Conditional_30_Template, 1, 0, "div", 24);
|
|
1465
|
+
i0.ɵɵelementStart(31, "div", 25);
|
|
1466
|
+
i0.ɵɵconditionalCreate(32, AgentConfigurationComponent_Conditional_32_Template, 71, 26);
|
|
1461
1467
|
i0.ɵɵelementEnd()();
|
|
1462
1468
|
} if (rf & 2) {
|
|
1463
1469
|
i0.ɵɵadvance(8);
|
|
@@ -1471,22 +1477,18 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1471
1477
|
i0.ɵɵadvance(2);
|
|
1472
1478
|
i0.ɵɵclassProp("active", ctx.viewMode === "tree");
|
|
1473
1479
|
i0.ɵɵadvance(7);
|
|
1474
|
-
i0.ɵɵ
|
|
1475
|
-
i0.ɵɵadvance();
|
|
1476
|
-
i0.ɵɵ
|
|
1477
|
-
i0.ɵɵadvance();
|
|
1478
|
-
i0.ɵɵproperty("resizable", true)("scrollable", true);
|
|
1479
|
-
i0.ɵɵadvance(2);
|
|
1480
|
-
i0.ɵɵconditional(ctx.isLoading ? 29 : -1);
|
|
1480
|
+
i0.ɵɵconditional(ctx.filterPanelVisible ? 25 : -1);
|
|
1481
|
+
i0.ɵɵadvance(3);
|
|
1482
|
+
i0.ɵɵconditional(ctx.isLoading ? 28 : -1);
|
|
1481
1483
|
i0.ɵɵadvance();
|
|
1482
|
-
i0.ɵɵconditional(!ctx.isLoading ?
|
|
1484
|
+
i0.ɵɵconditional(!ctx.isLoading ? 29 : -1);
|
|
1483
1485
|
i0.ɵɵadvance();
|
|
1484
|
-
i0.ɵɵconditional(ctx.detailPanelVisible ?
|
|
1486
|
+
i0.ɵɵconditional(ctx.detailPanelVisible ? 30 : -1);
|
|
1485
1487
|
i0.ɵɵadvance();
|
|
1486
1488
|
i0.ɵɵclassProp("visible", ctx.detailPanelVisible);
|
|
1487
1489
|
i0.ɵɵadvance();
|
|
1488
|
-
i0.ɵɵconditional(ctx.selectedAgent ?
|
|
1489
|
-
} }, dependencies: [i4.NgTemplateOutlet, i5.SplitterComponent, i5.SplitterPaneComponent, i6.LoadingComponent, i7.AgentFilterPanelComponent, i4.DatePipe, i8.HighlightSearchPipe], styles: ["\n\n\n\n\n\n\n\n.agent-configuration-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n\n\n.dashboard-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.item-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\nkendo-splitter[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n[_nghost-%COMP%] .k-splitter {\n border: none;\n background: transparent;\n}\n\n[_nghost-%COMP%] .k-splitbar {\n background: var(--mj-border-default);\n width: 6px;\n}\n\n[_nghost-%COMP%] .k-splitbar:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n[_nghost-%COMP%] .k-pane {\n overflow: hidden;\n}\n\n\n\n\n\n\n.agents-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 28px;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon[_ngcontent-%COMP%] .agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.meta-item.type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.agents-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] .agent-logo-small[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell[_ngcontent-%COMP%] .agent-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%], \n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n\n\n@media (max-width: 768px) {\n .dashboard-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .agents-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .agents-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .card-body[_ngcontent-%COMP%] {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon[_ngcontent-%COMP%] .detail-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.detail-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n[_nghost-%COMP%] .search-highlight, \n.search-highlight[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n\n\n\n\n\n.agents-tree[_ngcontent-%COMP%] {\n padding: 8px 16px;\n}\n\n.tree-category-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.tree-category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.tree-category-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n width: 12px;\n text-align: center;\n transition: transform 0.15s ease;\n}\n\n.tree-folder-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.tree-category-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.tree-category-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n font-weight: 500;\n}\n\n\n\n.tree-agent-list[_ngcontent-%COMP%] {\n padding-left: 24px;\n}\n\n.tree-agent-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.tree-agent-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-agent-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.tree-agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-inverse);\n}\n\n.tree-agent-logo[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n object-fit: cover;\n}\n\n.tree-agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.tree-agent-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tree-agent-type[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.tree-agent-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n.tree-agent-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success-text);\n background: var(--mj-status-success-bg);\n}\n\n.tree-agent-status.status-disabled[_ngcontent-%COMP%], \n.tree-agent-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tree-agent-status.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n}"] });
|
|
1490
|
+
i0.ɵɵconditional(ctx.selectedAgent ? 32 : -1);
|
|
1491
|
+
} }, dependencies: [i4.NgTemplateOutlet, i5.SplitComponent, i5.SplitAreaComponent, i6.LoadingComponent, i7.AgentFilterPanelComponent, i4.DatePipe, i8.HighlightSearchPipe], styles: ["\n\n\n\n\n\n\n\n.agent-configuration-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n\n\n.dashboard-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.item-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\nas-split[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n\n\n\n\n\n.agents-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 28px;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon[_ngcontent-%COMP%] .agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.meta-item.type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.agents-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] .agent-logo-small[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell[_ngcontent-%COMP%] .agent-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%], \n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n\n\n@media (max-width: 768px) {\n .dashboard-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .agents-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .agents-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .card-body[_ngcontent-%COMP%] {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon[_ngcontent-%COMP%] .detail-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.detail-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n[_nghost-%COMP%] .search-highlight, \n.search-highlight[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n\n\n\n\n\n.agents-tree[_ngcontent-%COMP%] {\n padding: 8px 16px;\n}\n\n.tree-category-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.tree-category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.tree-category-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-chevron[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n width: 12px;\n text-align: center;\n transition: transform 0.15s ease;\n}\n\n.tree-folder-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.tree-category-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.tree-category-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n font-weight: 500;\n}\n\n\n\n.tree-agent-list[_ngcontent-%COMP%] {\n padding-left: 24px;\n}\n\n.tree-agent-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.tree-agent-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-agent-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.tree-agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-inverse);\n}\n\n.tree-agent-logo[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n object-fit: cover;\n}\n\n.tree-agent-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.tree-agent-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tree-agent-type[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.tree-agent-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n.tree-agent-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success-text);\n background: var(--mj-status-success-bg);\n}\n\n.tree-agent-status.status-disabled[_ngcontent-%COMP%], \n.tree-agent-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tree-agent-status.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n}"] });
|
|
1490
1492
|
};
|
|
1491
1493
|
AgentConfigurationComponent = __decorate([
|
|
1492
1494
|
RegisterClass(BaseResourceComponent, 'AIAgentsResource')
|
|
@@ -1494,7 +1496,7 @@ AgentConfigurationComponent = __decorate([
|
|
|
1494
1496
|
export { AgentConfigurationComponent };
|
|
1495
1497
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentConfigurationComponent, [{
|
|
1496
1498
|
type: Component,
|
|
1497
|
-
args: [{ standalone: false, selector: 'app-agent-configuration', template: "<div class=\"agent-configuration-container\">\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <h2 class=\"dashboard-title\">\n <i class=\"fa-solid fa-robot\"></i>\n Agent Configuration\n </h2>\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=\"item-count\">{{ filteredAgents.length }} agents</span>\n </div>\n \n <div class=\"header-controls\">\n <div class=\"view-toggle\">\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"setViewMode('list')\"\n title=\"List View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'tree'\"\n (click)=\"setViewMode('tree')\"\n title=\"Category Tree View\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n </button>\n </div>\n \n <button \n type=\"button\" \n class=\"control-btn primary\"\n (click)=\"createNewAgent()\"\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\" >\n <kendo-splitter \n class=\"main-splitter\"\n orientation=\"horizontal\"\n (layoutChange)=\"onMainSplitterChange($event)\"\n >\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]=\"true\">\n <div class=\"agents-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Agents Display -->\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 <button \n type=\"button\" \n class=\"empty-state-btn\"\n (click)=\"createNewAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Agent\n </button>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"agents-grid\">\n @for (agent of filteredAgents; track agent.ID) {\n <div class=\"agent-card\" [class.expanded]=\"expandedAgentId === agent.ID\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleAgentExpansion(agent.ID)\">\n <div class=\"agent-info\">\n <div class=\"agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"agent-details\">\n <h4 class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></h4>\n <div class=\"agent-meta\">\n <span class=\"meta-item type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ getAgentTypeName(agent) }}\n </span>\n @if (agent.Status) {\n <span class=\"meta-item\" [class]=\"'status-' + agent.Status.toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ agent.Status }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <i class=\"fa-solid fa-chevron-down expand-icon\" \n [class.rotated]=\"expandedAgentId === agent.ID\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (agent.Description) {\n <p class=\"agent-description\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></p>\n } @else {\n <p class=\"agent-description text-muted\">No description provided</p>\n }\n \n <!-- Expandable Content -->\n @if (expandedAgentId === agent.ID) {\n <div class=\"expanded-content\">\n <div class=\"agent-stats\">\n @if (agent.Parent) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parent</span>\n <span class=\"stat-value\">{{ agent.Parent }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-label\">Context Compression</span>\n <span class=\"stat-value\">\n @if (agent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #28a745;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #dc3545;\"></i> Disabled\n }\n </span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showAgentDetails(agent, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n }\n\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n \n <!-- Tree View (Mac Finder style) -->\n @if (viewMode === 'tree') {\n <div class=\"agents-tree\">\n @for (node of categoryTree; track node.Category.ID) {\n @if (hasVisibleContent(node)) {\n <ng-container *ngTemplateOutlet=\"categoryNodeTpl; context: { $implicit: node, depth: 0 }\"></ng-container>\n }\n }\n\n <!-- Uncategorized agents -->\n @if (uncategorizedAgents.length > 0) {\n <div class=\"tree-category-group\">\n <div class=\"tree-category-header depth-0\">\n <i class=\"fa-solid fa-folder-open tree-folder-icon\"></i>\n <span class=\"tree-category-name\">Uncategorized</span>\n <span class=\"tree-category-count\">{{ uncategorizedAgents.length }}</span>\n </div>\n <div class=\"tree-agent-list\">\n @for (agent of uncategorizedAgents; track agent.ID) {\n <div class=\"tree-agent-row\" (click)=\"showAgentDetails(agent)\">\n <div class=\"tree-agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"tree-agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"tree-agent-info\">\n <span class=\"tree-agent-name\">{{ agent.Name }}</span>\n <span class=\"tree-agent-type\">{{ getAgentTypeName(agent) }}</span>\n </div>\n <span class=\"tree-agent-status\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status }}\n </span>\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Recursive category node template -->\n <ng-template #categoryNodeTpl let-node let-depth=\"depth\">\n <div class=\"tree-category-group\">\n <div class=\"tree-category-header\" [class]=\"'depth-' + depth\" (click)=\"toggleCategoryNode(node)\">\n <i class=\"fa-solid tree-chevron\"\n [class.fa-chevron-right]=\"!node.Expanded\"\n [class.fa-chevron-down]=\"node.Expanded\"></i>\n <i class=\"fa-solid tree-folder-icon\"\n [class.fa-folder]=\"!node.Expanded\"\n [class.fa-folder-open]=\"node.Expanded\"></i>\n <span class=\"tree-category-name\">{{ node.Category.Name }}</span>\n <span class=\"tree-category-count\">{{ getAgentCount(node) }}</span>\n </div>\n\n @if (node.Expanded) {\n <!-- Agents directly in this category -->\n @if (node.Agents.length > 0) {\n <div class=\"tree-agent-list\" [style.padding-left.px]=\"(depth + 1) * 24\">\n @for (agent of node.Agents; track agent.ID) {\n <div class=\"tree-agent-row\" (click)=\"showAgentDetails(agent)\">\n <div class=\"tree-agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"tree-agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"tree-agent-info\">\n <span class=\"tree-agent-name\">{{ agent.Name }}</span>\n <span class=\"tree-agent-type\">{{ getAgentTypeName(agent) }}</span>\n </div>\n <span class=\"tree-agent-status\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status }}\n </span>\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Child categories -->\n @for (child of node.Children; track child.Category.ID) {\n @if (hasVisibleContent(child)) {\n <div [style.padding-left.px]=\"(depth + 1) * 24\">\n <ng-container *ngTemplateOutlet=\"categoryNodeTpl; context: { $implicit: child, depth: depth + 1 }\"></ng-container>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"agents-list\">\n <table class=\"agents-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Name\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Type</th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (agent of filteredAgents; track agent.ID) {\n <tr>\n <td>\n <div class=\"agent-name-cell\">\n <div class=\"agent-icon-small\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo-small\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div>\n <div class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></div>\n @if (agent.Description) {\n <div class=\"agent-description-small\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"type-badge\">\n {{ getAgentTypeName(agent) }}\n </span>\n </td>\n <td>\n <span class=\"status-badge\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status || 'Unknown' }}\n </span>\n </td>\n <td>\n <div class=\"table-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showAgentDetails(agent)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n }\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent)\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedAgent) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\" [style.background-color]=\"getAgentIconColor(selectedAgent)\">\n @if (hasLogoURL(selectedAgent)) {\n <img [src]=\"selectedAgent.LogoURL\" [alt]=\"selectedAgent.Name + ' logo'\" class=\"detail-logo\">\n } @else {\n <i [class]=\"getAgentIcon(selectedAgent)\"></i>\n }\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedAgent.Name }}</h3>\n <span class=\"detail-subtitle\">{{ getAgentTypeName(selectedAgent) }}</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status and Type Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [class]=\"'status-' + (selectedAgent.Status || 'unknown').toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ selectedAgent.Status || 'Unknown' }}\n </span>\n @if (selectedAgent.ExposeAsAction) {\n <span class=\"feature-badge\">\n <i class=\"fa-solid fa-bolt\"></i>\n Exposed as Action\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedAgent.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedAgent.Description }}</p>\n </div>\n }\n\n <!-- Configuration Details -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n Configuration\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Execution Mode</span>\n <span class=\"detail-value\">\n <i [class]=\"getExecutionModeIcon(selectedAgent.ExecutionMode)\"></i>\n {{ selectedAgent.ExecutionMode }}\n </span>\n </div>\n @if (getParentAgentName(selectedAgent)) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parent Agent</span>\n <span class=\"detail-value\">{{ getParentAgentName(selectedAgent) }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedAgent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> Disabled\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Exposed as Action</span>\n <span class=\"detail-value\">\n @if (selectedAgent.ExposeAsAction) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Yes\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> No\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Model Selection</span>\n <span class=\"detail-value\">{{ selectedAgent.ModelSelectionMode }}</span>\n </div>\n </div>\n </div>\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_CreatedAt | date:'medium' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_UpdatedAt | date:'medium' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n @if (selectedAgent.Status === 'Active') {\n <button\n type=\"button\"\n class=\"detail-action-btn secondary\"\n (click)=\"runAgent(selectedAgent)\">\n <i class=\"fa-solid fa-play\"></i>\n Run Agent\n </button>\n }\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openAgentFromPanel()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</div>\n\n<!-- AI Agent Test Harness - Now handled by service with minimize support -->", styles: ["/* ============================================\n AI Agents Dashboard - World-Class Design\n Clean white header with brand blue accents\n ============================================ */\n\n/* Container */\n.agent-configuration-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n/* Dashboard Header - Clean White Style */\n.dashboard-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.item-count {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Main Content */\n.main-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n/* Splitter Styling */\nkendo-splitter {\n background: transparent;\n}\n\n:host ::ng-deep .k-splitter {\n border: none;\n background: transparent;\n}\n\n:host ::ng-deep .k-splitbar {\n background: var(--mj-border-default);\n width: 6px;\n}\n\n:host ::ng-deep .k-splitbar:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n:host ::ng-deep .k-pane {\n overflow: hidden;\n}\n\n/* Filter Panel Styles - used by child component */\n\n/* Agents Content */\n.agents-content {\n height: 100%;\n overflow-y: auto;\n padding: 28px;\n background: var(--mj-bg-surface-card);\n}\n\n/* Grid View */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded::before {\n opacity: 1;\n}\n\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon .agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active i {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending i {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled,\n.meta-item.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled i,\n.meta-item.status-inactive i {\n color: var(--mj-text-muted);\n}\n\n/* Type Badge - for Agent Type display */\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Type badge in meta context (grid view) */\n.meta-item.type-badge {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge i {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* Expanded Content */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Card Actions */\n.card-actions {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* List View */\n.agents-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table th {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.agents-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.agents-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small .agent-logo-small {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell .agent-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge i {\n font-size: 8px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled,\n.status-badge.status-inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode i {\n color: var(--mj-brand-primary);\n}\n\n.table-actions {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state h3 {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .dashboard-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls {\n justify-content: center;\n }\n\n .agents-content {\n padding: 16px;\n }\n\n .agents-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 18px;\n }\n\n .card-body {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n/* =============================================\n Detail Panel - Slide-in Overlay\n ============================================= */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon .detail-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n.detail-code-block {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Search Highlight */\n:host ::ng-deep .search-highlight,\n.search-highlight {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n/* ============================================\n Tree View - Mac Finder Style\n ============================================ */\n\n.agents-tree {\n padding: 8px 16px;\n}\n\n.tree-category-group {\n margin-bottom: 2px;\n}\n\n.tree-category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.tree-category-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-chevron {\n font-size: 10px;\n color: var(--mj-text-muted);\n width: 12px;\n text-align: center;\n transition: transform 0.15s ease;\n}\n\n.tree-folder-icon {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.tree-category-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.tree-category-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n font-weight: 500;\n}\n\n/* Agent rows within tree */\n.tree-agent-list {\n padding-left: 24px;\n}\n\n.tree-agent-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.tree-agent-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-agent-icon {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.tree-agent-icon i {\n font-size: 12px;\n color: var(--mj-text-inverse);\n}\n\n.tree-agent-logo {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n object-fit: cover;\n}\n\n.tree-agent-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.tree-agent-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tree-agent-type {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.tree-agent-status {\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n.tree-agent-status.status-active {\n color: var(--mj-status-success-text);\n background: var(--mj-status-success-bg);\n}\n\n.tree-agent-status.status-disabled,\n.tree-agent-status.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tree-agent-status.status-pending {\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n}\n"] }]
|
|
1499
|
+
args: [{ standalone: false, selector: 'app-agent-configuration', template: "<div class=\"agent-configuration-container\">\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <h2 class=\"dashboard-title\">\n <i class=\"fa-solid fa-robot\"></i>\n Agent Configuration\n </h2>\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=\"item-count\">{{ filteredAgents.length }} agents</span>\n </div>\n \n <div class=\"header-controls\">\n <div class=\"view-toggle\">\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"setViewMode('list')\"\n title=\"List View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'tree'\"\n (click)=\"setViewMode('tree')\"\n title=\"Category Tree View\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n </button>\n </div>\n \n <button \n type=\"button\" \n class=\"control-btn primary\"\n (click)=\"createNewAgent()\"\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\" >\n <as-split direction=\"horizontal\" class=\"main-splitter\">\n\n <!-- Filter Panel (Left) -->\n @if (filterPanelVisible) {\n <as-split-area [size]=\"20\" [minSize]=\"15\" [maxSize]=\"30\">\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 </as-split-area>\n }\n\n <!-- Agents List Panel -->\n <as-split-area>\n <div class=\"agents-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Agents Display -->\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 <button \n type=\"button\" \n class=\"empty-state-btn\"\n (click)=\"createNewAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Agent\n </button>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"agents-grid\">\n @for (agent of filteredAgents; track agent.ID) {\n <div class=\"agent-card\" [class.expanded]=\"expandedAgentId === agent.ID\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleAgentExpansion(agent.ID)\">\n <div class=\"agent-info\">\n <div class=\"agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"agent-details\">\n <h4 class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></h4>\n <div class=\"agent-meta\">\n <span class=\"meta-item type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ getAgentTypeName(agent) }}\n </span>\n @if (agent.Status) {\n <span class=\"meta-item\" [class]=\"'status-' + agent.Status.toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ agent.Status }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <i class=\"fa-solid fa-chevron-down expand-icon\" \n [class.rotated]=\"expandedAgentId === agent.ID\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (agent.Description) {\n <p class=\"agent-description\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></p>\n } @else {\n <p class=\"agent-description text-muted\">No description provided</p>\n }\n \n <!-- Expandable Content -->\n @if (expandedAgentId === agent.ID) {\n <div class=\"expanded-content\">\n <div class=\"agent-stats\">\n @if (agent.Parent) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parent</span>\n <span class=\"stat-value\">{{ agent.Parent }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-label\">Context Compression</span>\n <span class=\"stat-value\">\n @if (agent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #28a745;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #dc3545;\"></i> Disabled\n }\n </span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showAgentDetails(agent, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n }\n\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n \n <!-- Tree View (Mac Finder style) -->\n @if (viewMode === 'tree') {\n <div class=\"agents-tree\">\n @for (node of categoryTree; track node.Category.ID) {\n @if (hasVisibleContent(node)) {\n <ng-container *ngTemplateOutlet=\"categoryNodeTpl; context: { $implicit: node, depth: 0 }\"></ng-container>\n }\n }\n\n <!-- Uncategorized agents -->\n @if (uncategorizedAgents.length > 0) {\n <div class=\"tree-category-group\">\n <div class=\"tree-category-header depth-0\">\n <i class=\"fa-solid fa-folder-open tree-folder-icon\"></i>\n <span class=\"tree-category-name\">Uncategorized</span>\n <span class=\"tree-category-count\">{{ uncategorizedAgents.length }}</span>\n </div>\n <div class=\"tree-agent-list\">\n @for (agent of uncategorizedAgents; track agent.ID) {\n <div class=\"tree-agent-row\" (click)=\"showAgentDetails(agent)\">\n <div class=\"tree-agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"tree-agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"tree-agent-info\">\n <span class=\"tree-agent-name\">{{ agent.Name }}</span>\n <span class=\"tree-agent-type\">{{ getAgentTypeName(agent) }}</span>\n </div>\n <span class=\"tree-agent-status\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status }}\n </span>\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Recursive category node template -->\n <ng-template #categoryNodeTpl let-node let-depth=\"depth\">\n <div class=\"tree-category-group\">\n <div class=\"tree-category-header\" [class]=\"'depth-' + depth\" (click)=\"toggleCategoryNode(node)\">\n <i class=\"fa-solid tree-chevron\"\n [class.fa-chevron-right]=\"!node.Expanded\"\n [class.fa-chevron-down]=\"node.Expanded\"></i>\n <i class=\"fa-solid tree-folder-icon\"\n [class.fa-folder]=\"!node.Expanded\"\n [class.fa-folder-open]=\"node.Expanded\"></i>\n <span class=\"tree-category-name\">{{ node.Category.Name }}</span>\n <span class=\"tree-category-count\">{{ getAgentCount(node) }}</span>\n </div>\n\n @if (node.Expanded) {\n <!-- Agents directly in this category -->\n @if (node.Agents.length > 0) {\n <div class=\"tree-agent-list\" [style.padding-left.px]=\"(depth + 1) * 24\">\n @for (agent of node.Agents; track agent.ID) {\n <div class=\"tree-agent-row\" (click)=\"showAgentDetails(agent)\">\n <div class=\"tree-agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"tree-agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"tree-agent-info\">\n <span class=\"tree-agent-name\">{{ agent.Name }}</span>\n <span class=\"tree-agent-type\">{{ getAgentTypeName(agent) }}</span>\n </div>\n <span class=\"tree-agent-status\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status }}\n </span>\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Child categories -->\n @for (child of node.Children; track child.Category.ID) {\n @if (hasVisibleContent(child)) {\n <div [style.padding-left.px]=\"(depth + 1) * 24\">\n <ng-container *ngTemplateOutlet=\"categoryNodeTpl; context: { $implicit: child, depth: depth + 1 }\"></ng-container>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"agents-list\">\n <table class=\"agents-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Name\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Type</th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (agent of filteredAgents; track agent.ID) {\n <tr>\n <td>\n <div class=\"agent-name-cell\">\n <div class=\"agent-icon-small\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo-small\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div>\n <div class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></div>\n @if (agent.Description) {\n <div class=\"agent-description-small\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"type-badge\">\n {{ getAgentTypeName(agent) }}\n </span>\n </td>\n <td>\n <span class=\"status-badge\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status || 'Unknown' }}\n </span>\n </td>\n <td>\n <div class=\"table-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showAgentDetails(agent)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n }\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent)\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </div>\n </as-split-area>\n </as-split>\n </div>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedAgent) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\" [style.background-color]=\"getAgentIconColor(selectedAgent)\">\n @if (hasLogoURL(selectedAgent)) {\n <img [src]=\"selectedAgent.LogoURL\" [alt]=\"selectedAgent.Name + ' logo'\" class=\"detail-logo\">\n } @else {\n <i [class]=\"getAgentIcon(selectedAgent)\"></i>\n }\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedAgent.Name }}</h3>\n <span class=\"detail-subtitle\">{{ getAgentTypeName(selectedAgent) }}</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status and Type Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [class]=\"'status-' + (selectedAgent.Status || 'unknown').toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ selectedAgent.Status || 'Unknown' }}\n </span>\n @if (selectedAgent.ExposeAsAction) {\n <span class=\"feature-badge\">\n <i class=\"fa-solid fa-bolt\"></i>\n Exposed as Action\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedAgent.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedAgent.Description }}</p>\n </div>\n }\n\n <!-- Configuration Details -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n Configuration\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Execution Mode</span>\n <span class=\"detail-value\">\n <i [class]=\"getExecutionModeIcon(selectedAgent.ExecutionMode)\"></i>\n {{ selectedAgent.ExecutionMode }}\n </span>\n </div>\n @if (getParentAgentName(selectedAgent)) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parent Agent</span>\n <span class=\"detail-value\">{{ getParentAgentName(selectedAgent) }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedAgent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> Disabled\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Exposed as Action</span>\n <span class=\"detail-value\">\n @if (selectedAgent.ExposeAsAction) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Yes\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> No\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Model Selection</span>\n <span class=\"detail-value\">{{ selectedAgent.ModelSelectionMode }}</span>\n </div>\n </div>\n </div>\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_CreatedAt | date:'medium' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_UpdatedAt | date:'medium' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n @if (selectedAgent.Status === 'Active') {\n <button\n type=\"button\"\n class=\"detail-action-btn secondary\"\n (click)=\"runAgent(selectedAgent)\">\n <i class=\"fa-solid fa-play\"></i>\n Run Agent\n </button>\n }\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openAgentFromPanel()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</div>\n\n<!-- AI Agent Test Harness - Now handled by service with minimize support -->", styles: ["/* ============================================\n AI Agents Dashboard - World-Class Design\n Clean white header with brand blue accents\n ============================================ */\n\n/* Container */\n.agent-configuration-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n/* Dashboard Header - Clean White Style */\n.dashboard-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.item-count {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Main Content */\n.main-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n/* Splitter Styling */\nas-split {\n background: transparent;\n}\n\n/* Filter Panel Styles - used by child component */\n\n/* Agents Content */\n.agents-content {\n height: 100%;\n overflow-y: auto;\n padding: 28px;\n background: var(--mj-bg-surface-card);\n}\n\n/* Grid View */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded::before {\n opacity: 1;\n}\n\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon .agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active i {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending i {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled,\n.meta-item.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled i,\n.meta-item.status-inactive i {\n color: var(--mj-text-muted);\n}\n\n/* Type Badge - for Agent Type display */\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Type badge in meta context (grid view) */\n.meta-item.type-badge {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge i {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* Expanded Content */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Card Actions */\n.card-actions {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* List View */\n.agents-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table th {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.agents-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.agents-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small .agent-logo-small {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell .agent-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge i {\n font-size: 8px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled,\n.status-badge.status-inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode i {\n color: var(--mj-brand-primary);\n}\n\n.table-actions {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state h3 {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .dashboard-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls {\n justify-content: center;\n }\n\n .agents-content {\n padding: 16px;\n }\n\n .agents-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 18px;\n }\n\n .card-body {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n/* =============================================\n Detail Panel - Slide-in Overlay\n ============================================= */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon .detail-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n.detail-code-block {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Search Highlight */\n:host ::ng-deep .search-highlight,\n.search-highlight {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n/* ============================================\n Tree View - Mac Finder Style\n ============================================ */\n\n.agents-tree {\n padding: 8px 16px;\n}\n\n.tree-category-group {\n margin-bottom: 2px;\n}\n\n.tree-category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.tree-category-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-chevron {\n font-size: 10px;\n color: var(--mj-text-muted);\n width: 12px;\n text-align: center;\n transition: transform 0.15s ease;\n}\n\n.tree-folder-icon {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.tree-category-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.tree-category-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n font-weight: 500;\n}\n\n/* Agent rows within tree */\n.tree-agent-list {\n padding-left: 24px;\n}\n\n.tree-agent-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.tree-agent-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.tree-agent-icon {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.tree-agent-icon i {\n font-size: 12px;\n color: var(--mj-text-inverse);\n}\n\n.tree-agent-logo {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n object-fit: cover;\n}\n\n.tree-agent-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n\n.tree-agent-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tree-agent-type {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.tree-agent-status {\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n.tree-agent-status.status-active {\n color: var(--mj-status-success-text);\n background: var(--mj-status-success-bg);\n}\n\n.tree-agent-status.status-disabled,\n.tree-agent-status.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n}\n\n.tree-agent-status.status-pending {\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n}\n"] }]
|
|
1498
1500
|
}], () => [{ type: i1.AITestHarnessDialogService }, { type: i2.CreateAgentService }, { type: i3.NavigationService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
1499
1501
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentConfigurationComponent, { className: "AgentConfigurationComponent", filePath: "src/AI/components/agents/agent-configuration.component.ts", lineNumber: 61 }); })();
|
|
1500
1502
|
//# sourceMappingURL=agent-configuration.component.js.map
|