@memberjunction/ng-dashboards 5.23.0 → 5.25.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/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +233 -493
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +7 -7
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +717 -8
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7166 -1889
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +50 -4
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +759 -491
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +14 -15
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +4 -4
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +5 -5
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +5 -5
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +9 -11
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +62 -7
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +825 -359
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +2 -0
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +4 -5
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +11 -12
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +2 -3
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +4 -6
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +2 -3
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +4 -6
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +10 -11
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +4 -6
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +2 -3
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +4 -6
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +1 -0
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +4 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +4 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +4 -1
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +4 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +4 -1
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -0
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +470 -437
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +4 -4
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -5
- 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 +2 -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 +3 -0
- 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 +2 -0
- 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 +3 -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 +3 -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 +3 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +412 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4267 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +39 -4
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +187 -13
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -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 +329 -224
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +76 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +602 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +2 -1
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +2 -1
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +2 -0
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +2 -0
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +2 -0
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +25 -107
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
- package/dist/MCP/mcp-resource.component.js +1 -0
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +2 -0
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +2 -0
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +1 -0
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +9 -10
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +2 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +10 -11
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +2 -0
- package/dist/VersionHistory/components/restore-resource.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/ai-dashboards.module.d.ts +22 -18
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +29 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +19 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +8 -0
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +2 -1
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +7 -3
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -1
- package/dist/public-api.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/package.json +47 -46
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -85
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -461
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
|
@@ -16,16 +16,13 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "@memberjunction/ng-ai-test-harness";
|
|
18
18
|
import * as i2 from "@memberjunction/ng-agents";
|
|
19
|
-
import * as i3 from "
|
|
20
|
-
import * as i4 from "@
|
|
21
|
-
import * as i5 from "
|
|
22
|
-
import * as i6 from "
|
|
23
|
-
import * as i7 from "
|
|
19
|
+
import * as i3 from "angular-split";
|
|
20
|
+
import * as i4 from "@memberjunction/ng-shared-generic";
|
|
21
|
+
import * as i5 from "@memberjunction/ng-trees";
|
|
22
|
+
import * as i6 from "./agent-filter-panel.component";
|
|
23
|
+
import * as i7 from "@angular/common";
|
|
24
24
|
import * as i8 from "../../../shared/pipes/highlight-search.pipe";
|
|
25
|
-
const _c0 = a0 => ({ $implicit: a0, depth: 0 });
|
|
26
|
-
const _c1 = (a0, a1) => ({ $implicit: a0, depth: a1 });
|
|
27
25
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
28
|
-
const _forTrack1 = ($index, $item) => $item.Category.ID;
|
|
29
26
|
function AgentConfigurationComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
30
27
|
i0.ɵɵtext(0, " Hide Filters ");
|
|
31
28
|
} }
|
|
@@ -34,7 +31,7 @@ function AgentConfigurationComponent_Conditional_9_Template(rf, ctx) { if (rf &
|
|
|
34
31
|
} }
|
|
35
32
|
function AgentConfigurationComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
36
33
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
37
|
-
i0.ɵɵelementStart(0, "as-split-area",
|
|
34
|
+
i0.ɵɵelementStart(0, "as-split-area", 20)(1, "mj-agent-filter-panel", 25);
|
|
38
35
|
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
36
|
i0.ɵɵelementEnd()();
|
|
40
37
|
} if (rf & 2) {
|
|
@@ -44,28 +41,28 @@ function AgentConfigurationComponent_Conditional_25_Template(rf, ctx) { if (rf &
|
|
|
44
41
|
i0.ɵɵproperty("agents", ctx_r1.agents)("filteredAgents", ctx_r1.filteredAgents)("filters", ctx_r1.currentFilters);
|
|
45
42
|
} }
|
|
46
43
|
function AgentConfigurationComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
i0.ɵɵelementStart(0, "div",
|
|
48
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
45
|
+
i0.ɵɵelement(1, "mj-loading", 26);
|
|
49
46
|
i0.ɵɵelementEnd();
|
|
50
47
|
} }
|
|
51
48
|
function AgentConfigurationComponent_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
52
49
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
53
|
-
i0.ɵɵelementStart(0, "div",
|
|
54
|
-
i0.ɵɵelement(1, "i",
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
51
|
+
i0.ɵɵelement(1, "i", 4);
|
|
55
52
|
i0.ɵɵelementStart(2, "h3");
|
|
56
53
|
i0.ɵɵtext(3, "No agents found");
|
|
57
54
|
i0.ɵɵelementEnd();
|
|
58
55
|
i0.ɵɵelementStart(4, "p");
|
|
59
56
|
i0.ɵɵtext(5, "No agents match your current filters. Try adjusting your search criteria or create a new agent.");
|
|
60
57
|
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelementStart(6, "button",
|
|
58
|
+
i0.ɵɵelementStart(6, "button", 28);
|
|
62
59
|
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()); });
|
|
63
|
-
i0.ɵɵelement(7, "i",
|
|
60
|
+
i0.ɵɵelement(7, "i", 17);
|
|
64
61
|
i0.ɵɵtext(8, " Create New Agent ");
|
|
65
62
|
i0.ɵɵelementEnd()();
|
|
66
63
|
} }
|
|
67
64
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
-
i0.ɵɵelement(0, "img",
|
|
65
|
+
i0.ɵɵelement(0, "img", 37);
|
|
69
66
|
} if (rf & 2) {
|
|
70
67
|
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
71
68
|
i0.ɵɵproperty("src", agent_r5.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r5.Name + " logo");
|
|
@@ -78,8 +75,8 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
78
75
|
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r5));
|
|
79
76
|
} }
|
|
80
77
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
i0.ɵɵelementStart(0, "span",
|
|
82
|
-
i0.ɵɵelement(1, "i",
|
|
78
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
79
|
+
i0.ɵɵelement(1, "i", 54);
|
|
83
80
|
i0.ɵɵtext(2);
|
|
84
81
|
i0.ɵɵelementEnd();
|
|
85
82
|
} if (rf & 2) {
|
|
@@ -89,7 +86,7 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
89
86
|
i0.ɵɵtextInterpolate1(" ", agent_r5.Status, " ");
|
|
90
87
|
} }
|
|
91
88
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
-
i0.ɵɵelement(0, "p",
|
|
89
|
+
i0.ɵɵelement(0, "p", 47);
|
|
93
90
|
i0.ɵɵpipe(1, "highlightSearch");
|
|
94
91
|
} if (rf & 2) {
|
|
95
92
|
const agent_r5 = i0.ɵɵnextContext().$implicit;
|
|
@@ -97,15 +94,15 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
97
94
|
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r5.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
98
95
|
} }
|
|
99
96
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
-
i0.ɵɵelementStart(0, "p",
|
|
97
|
+
i0.ɵɵelementStart(0, "p", 48);
|
|
101
98
|
i0.ɵɵtext(1, "No description provided");
|
|
102
99
|
i0.ɵɵelementEnd();
|
|
103
100
|
} }
|
|
104
101
|
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",
|
|
102
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "span", 57);
|
|
106
103
|
i0.ɵɵtext(2, "Parent");
|
|
107
104
|
i0.ɵɵelementEnd();
|
|
108
|
-
i0.ɵɵelementStart(3, "span",
|
|
105
|
+
i0.ɵɵelementStart(3, "span", 58);
|
|
109
106
|
i0.ɵɵtext(4);
|
|
110
107
|
i0.ɵɵelementEnd()();
|
|
111
108
|
} if (rf & 2) {
|
|
@@ -114,20 +111,20 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
114
111
|
i0.ɵɵtextInterpolate(agent_r5.Parent);
|
|
115
112
|
} }
|
|
116
113
|
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",
|
|
114
|
+
i0.ɵɵelement(0, "i", 59);
|
|
118
115
|
i0.ɵɵtext(1, " Enabled ");
|
|
119
116
|
} }
|
|
120
117
|
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",
|
|
118
|
+
i0.ɵɵelement(0, "i", 60);
|
|
122
119
|
i0.ɵɵtext(1, " Disabled ");
|
|
123
120
|
} }
|
|
124
121
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelementStart(0, "div",
|
|
126
|
-
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template, 5, 1, "div",
|
|
127
|
-
i0.ɵɵelementStart(3, "div",
|
|
122
|
+
i0.ɵɵelementStart(0, "div", 49)(1, "div", 55);
|
|
123
|
+
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template, 5, 1, "div", 56);
|
|
124
|
+
i0.ɵɵelementStart(3, "div", 56)(4, "span", 57);
|
|
128
125
|
i0.ɵɵtext(5, "Context Compression");
|
|
129
126
|
i0.ɵɵelementEnd();
|
|
130
|
-
i0.ɵɵelementStart(6, "span",
|
|
127
|
+
i0.ɵɵelementStart(6, "span", 58);
|
|
131
128
|
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);
|
|
132
129
|
i0.ɵɵelementEnd()()()();
|
|
133
130
|
} if (rf & 2) {
|
|
@@ -139,45 +136,45 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
139
136
|
} }
|
|
140
137
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
141
138
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
142
|
-
i0.ɵɵelementStart(0, "button",
|
|
139
|
+
i0.ɵɵelementStart(0, "button", 61);
|
|
143
140
|
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",
|
|
141
|
+
i0.ɵɵelement(1, "i", 62);
|
|
145
142
|
i0.ɵɵtext(2, " Details ");
|
|
146
143
|
i0.ɵɵelementEnd();
|
|
147
144
|
} }
|
|
148
145
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
149
146
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
150
|
-
i0.ɵɵelementStart(0, "button",
|
|
147
|
+
i0.ɵɵelementStart(0, "button", 63);
|
|
151
148
|
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",
|
|
149
|
+
i0.ɵɵelement(1, "i", 64);
|
|
153
150
|
i0.ɵɵtext(2, " Run ");
|
|
154
151
|
i0.ɵɵelementEnd();
|
|
155
152
|
} }
|
|
156
153
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
157
154
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
158
|
-
i0.ɵɵelementStart(0, "div",
|
|
155
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
|
|
159
156
|
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",
|
|
161
|
-
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_4_Template, 1, 2, "img",
|
|
157
|
+
i0.ɵɵelementStart(2, "div", 35)(3, "div", 36);
|
|
158
|
+
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_4_Template, 1, 2, "img", 37)(5, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_5_Template, 1, 2, "i", 38);
|
|
162
159
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(6, "div",
|
|
164
|
-
i0.ɵɵelement(7, "h4",
|
|
160
|
+
i0.ɵɵelementStart(6, "div", 39);
|
|
161
|
+
i0.ɵɵelement(7, "h4", 40);
|
|
165
162
|
i0.ɵɵpipe(8, "highlightSearch");
|
|
166
|
-
i0.ɵɵelementStart(9, "div",
|
|
167
|
-
i0.ɵɵelement(11, "i",
|
|
163
|
+
i0.ɵɵelementStart(9, "div", 41)(10, "span", 42);
|
|
164
|
+
i0.ɵɵelement(11, "i", 43);
|
|
168
165
|
i0.ɵɵtext(12);
|
|
169
166
|
i0.ɵɵelementEnd();
|
|
170
|
-
i0.ɵɵconditionalCreate(13, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_13_Template, 3, 3, "span",
|
|
167
|
+
i0.ɵɵconditionalCreate(13, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_13_Template, 3, 3, "span", 44);
|
|
171
168
|
i0.ɵɵelementEnd()()();
|
|
172
|
-
i0.ɵɵelement(14, "i",
|
|
169
|
+
i0.ɵɵelement(14, "i", 45);
|
|
173
170
|
i0.ɵɵelementEnd();
|
|
174
|
-
i0.ɵɵelementStart(15, "div",
|
|
175
|
-
i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 4, "p",
|
|
176
|
-
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Template, 9, 2, "div",
|
|
171
|
+
i0.ɵɵelementStart(15, "div", 46);
|
|
172
|
+
i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 4, "p", 47)(17, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 2, 0, "p", 48);
|
|
173
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_18_Template, 9, 2, "div", 49);
|
|
177
174
|
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵelementStart(19, "div",
|
|
179
|
-
i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template, 3, 0, "button",
|
|
180
|
-
i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template, 3, 0, "button",
|
|
175
|
+
i0.ɵɵelementStart(19, "div", 50);
|
|
176
|
+
i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_20_Template, 3, 0, "button", 51);
|
|
177
|
+
i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_21_Template, 3, 0, "button", 52);
|
|
181
178
|
i0.ɵɵelementEnd()();
|
|
182
179
|
} if (rf & 2) {
|
|
183
180
|
const agent_r5 = ctx.$implicit;
|
|
@@ -205,347 +202,122 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_
|
|
|
205
202
|
i0.ɵɵconditional(agent_r5.Status === "Active" && ctx_r1.UserCanReadAgents ? 21 : -1);
|
|
206
203
|
} }
|
|
207
204
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
208
|
-
i0.ɵɵelementStart(0, "div",
|
|
209
|
-
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template, 22, 17, "div",
|
|
205
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
206
|
+
i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template, 22, 17, "div", 32, _forTrack0);
|
|
210
207
|
i0.ɵɵelementEnd();
|
|
211
208
|
} if (rf & 2) {
|
|
212
209
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
213
210
|
i0.ɵɵadvance();
|
|
214
211
|
i0.ɵɵrepeater(ctx_r1.filteredAgents);
|
|
215
212
|
} }
|
|
216
|
-
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
217
|
-
i0.ɵɵelementContainer(0);
|
|
218
|
-
} }
|
|
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);
|
|
221
|
-
} if (rf & 2) {
|
|
222
|
-
const node_r8 = i0.ɵɵnextContext().$implicit;
|
|
223
|
-
i0.ɵɵnextContext(2);
|
|
224
|
-
const categoryNodeTpl_r9 = i0.ɵɵreference(3);
|
|
225
|
-
i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTpl_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r8));
|
|
226
|
-
} }
|
|
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");
|
|
229
|
-
} if (rf & 2) {
|
|
230
|
-
const node_r8 = ctx.$implicit;
|
|
231
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
232
|
-
i0.ɵɵconditional(ctx_r1.hasVisibleContent(node_r8) ? 0 : -1);
|
|
233
|
-
} }
|
|
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);
|
|
236
|
-
} if (rf & 2) {
|
|
237
|
-
const agent_r11 = i0.ɵɵnextContext().$implicit;
|
|
238
|
-
i0.ɵɵproperty("src", agent_r11.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r11.Name + " logo");
|
|
239
|
-
} }
|
|
240
|
-
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
241
|
-
i0.ɵɵelement(0, "i");
|
|
242
|
-
} if (rf & 2) {
|
|
243
|
-
const agent_r11 = i0.ɵɵnextContext().$implicit;
|
|
244
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
245
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r11));
|
|
246
|
-
} }
|
|
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);
|
|
252
|
-
i0.ɵɵelementEnd();
|
|
253
|
-
} }
|
|
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);
|
|
260
|
-
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵelementStart(4, "div", 77)(5, "span", 78);
|
|
262
|
-
i0.ɵɵtext(6);
|
|
263
|
-
i0.ɵɵelementEnd();
|
|
264
|
-
i0.ɵɵelementStart(7, "span", 79);
|
|
265
|
-
i0.ɵɵtext(8);
|
|
266
|
-
i0.ɵɵelementEnd()();
|
|
267
|
-
i0.ɵɵelementStart(9, "span", 80);
|
|
268
|
-
i0.ɵɵtext(10);
|
|
269
|
-
i0.ɵɵelementEnd();
|
|
270
|
-
i0.ɵɵconditionalCreate(11, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Conditional_3_For_9_Conditional_11_Template, 2, 0, "button", 81);
|
|
271
|
-
i0.ɵɵelementEnd();
|
|
272
|
-
} if (rf & 2) {
|
|
273
|
-
const agent_r11 = ctx.$implicit;
|
|
274
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
275
|
-
i0.ɵɵadvance();
|
|
276
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r11));
|
|
277
|
-
i0.ɵɵadvance();
|
|
278
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r11) ? 2 : 3);
|
|
279
|
-
i0.ɵɵadvance(4);
|
|
280
|
-
i0.ɵɵtextInterpolate(agent_r11.Name);
|
|
281
|
-
i0.ɵɵadvance(2);
|
|
282
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(agent_r11));
|
|
283
|
-
i0.ɵɵadvance();
|
|
284
|
-
i0.ɵɵclassMap("status-" + (agent_r11.Status || "unknown").toLowerCase());
|
|
285
|
-
i0.ɵɵadvance();
|
|
286
|
-
i0.ɵɵtextInterpolate1(" ", agent_r11.Status, " ");
|
|
287
|
-
i0.ɵɵadvance();
|
|
288
|
-
i0.ɵɵconditional(agent_r11.Status === "Active" && ctx_r1.UserCanReadAgents ? 11 : -1);
|
|
289
|
-
} }
|
|
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);
|
|
294
|
-
i0.ɵɵtext(4, "Uncategorized");
|
|
295
|
-
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵelementStart(5, "span", 71);
|
|
297
|
-
i0.ɵɵtext(6);
|
|
298
|
-
i0.ɵɵelementEnd()();
|
|
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);
|
|
301
|
-
i0.ɵɵelementEnd()();
|
|
302
|
-
} if (rf & 2) {
|
|
303
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
304
|
-
i0.ɵɵadvance(6);
|
|
305
|
-
i0.ɵɵtextInterpolate(ctx_r1.uncategorizedAgents.length);
|
|
306
|
-
i0.ɵɵadvance(2);
|
|
307
|
-
i0.ɵɵrepeater(ctx_r1.uncategorizedAgents);
|
|
308
|
-
} }
|
|
309
213
|
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
-
i0.ɵɵ
|
|
311
|
-
i0.ɵɵ
|
|
312
|
-
i0.ɵɵ
|
|
313
|
-
i0.ɵɵelementEnd();
|
|
314
|
-
} if (rf & 2) {
|
|
315
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
316
|
-
i0.ɵɵadvance();
|
|
317
|
-
i0.ɵɵrepeater(ctx_r1.categoryTree);
|
|
318
|
-
i0.ɵɵadvance(2);
|
|
319
|
-
i0.ɵɵconditional(ctx_r1.uncategorizedAgents.length > 0 ? 3 : -1);
|
|
320
|
-
} }
|
|
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);
|
|
323
|
-
} if (rf & 2) {
|
|
324
|
-
const agent_r16 = i0.ɵɵnextContext().$implicit;
|
|
325
|
-
i0.ɵɵproperty("src", agent_r16.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r16.Name + " logo");
|
|
326
|
-
} }
|
|
327
|
-
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Conditional_0_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
328
|
-
i0.ɵɵelement(0, "i");
|
|
329
|
-
} if (rf & 2) {
|
|
330
|
-
const agent_r16 = i0.ɵɵnextContext().$implicit;
|
|
331
|
-
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
332
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r16));
|
|
333
|
-
} }
|
|
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);
|
|
339
|
-
i0.ɵɵelementEnd();
|
|
340
|
-
} }
|
|
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);
|
|
347
|
-
i0.ɵɵelementEnd();
|
|
348
|
-
i0.ɵɵelementStart(4, "div", 77)(5, "span", 78);
|
|
349
|
-
i0.ɵɵtext(6);
|
|
350
|
-
i0.ɵɵelementEnd();
|
|
351
|
-
i0.ɵɵelementStart(7, "span", 79);
|
|
352
|
-
i0.ɵɵtext(8);
|
|
214
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
215
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "mj-tree", 65);
|
|
216
|
+
i0.ɵɵlistener("AfterNodeClick", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeClick_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeClick($event)); })("AfterNodeDoubleClick", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeDoubleClick_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeDoubleClick($event)); });
|
|
353
217
|
i0.ɵɵelementEnd()();
|
|
354
|
-
i0.ɵɵelementStart(9, "span", 80);
|
|
355
|
-
i0.ɵɵtext(10);
|
|
356
|
-
i0.ɵɵelementEnd();
|
|
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);
|
|
358
|
-
i0.ɵɵelementEnd();
|
|
359
218
|
} if (rf & 2) {
|
|
360
|
-
const agent_r16 = ctx.$implicit;
|
|
361
|
-
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
362
|
-
i0.ɵɵadvance();
|
|
363
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r16));
|
|
364
|
-
i0.ɵɵadvance();
|
|
365
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r16) ? 2 : 3);
|
|
366
|
-
i0.ɵɵadvance(4);
|
|
367
|
-
i0.ɵɵtextInterpolate(agent_r16.Name);
|
|
368
|
-
i0.ɵɵadvance(2);
|
|
369
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentTypeName(agent_r16));
|
|
370
|
-
i0.ɵɵadvance();
|
|
371
|
-
i0.ɵɵclassMap("status-" + (agent_r16.Status || "unknown").toLowerCase());
|
|
372
|
-
i0.ɵɵadvance();
|
|
373
|
-
i0.ɵɵtextInterpolate1(" ", agent_r16.Status, " ");
|
|
374
|
-
i0.ɵɵadvance();
|
|
375
|
-
i0.ɵɵconditional(agent_r16.Status === "Active" && ctx_r1.UserCanReadAgents ? 11 : -1);
|
|
376
|
-
} }
|
|
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);
|
|
380
|
-
i0.ɵɵelementEnd();
|
|
381
|
-
} if (rf & 2) {
|
|
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");
|
|
386
|
-
i0.ɵɵadvance();
|
|
387
|
-
i0.ɵɵrepeater(node_r14.Agents);
|
|
388
|
-
} }
|
|
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) {
|
|
390
|
-
i0.ɵɵelementContainer(0);
|
|
391
|
-
} }
|
|
392
|
-
function AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
-
i0.ɵɵelementStart(0, "div");
|
|
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);
|
|
395
|
-
i0.ɵɵelementEnd();
|
|
396
|
-
} if (rf & 2) {
|
|
397
|
-
const child_r20 = i0.ɵɵnextContext().$implicit;
|
|
398
|
-
const depth_r19 = i0.ɵɵnextContext(2).depth;
|
|
399
|
-
i0.ɵɵnextContext();
|
|
400
|
-
const categoryNodeTpl_r9 = i0.ɵɵreference(3);
|
|
401
|
-
i0.ɵɵstyleProp("padding-left", (depth_r19 + 1) * 24, "px");
|
|
402
|
-
i0.ɵɵadvance();
|
|
403
|
-
i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTpl_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(4, _c1, child_r20, depth_r19 + 1));
|
|
404
|
-
} }
|
|
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);
|
|
407
|
-
} if (rf & 2) {
|
|
408
|
-
const child_r20 = ctx.$implicit;
|
|
409
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
410
|
-
i0.ɵɵconditional(ctx_r1.hasVisibleContent(child_r20) ? 0 : -1);
|
|
411
|
-
} }
|
|
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);
|
|
415
|
-
} if (rf & 2) {
|
|
416
|
-
const node_r14 = i0.ɵɵnextContext().$implicit;
|
|
417
|
-
i0.ɵɵconditional(node_r14.Agents.length > 0 ? 0 : -1);
|
|
418
|
-
i0.ɵɵadvance();
|
|
419
|
-
i0.ɵɵrepeater(node_r14.Children);
|
|
420
|
-
} }
|
|
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);
|
|
427
|
-
i0.ɵɵtext(5);
|
|
428
|
-
i0.ɵɵelementEnd();
|
|
429
|
-
i0.ɵɵelementStart(6, "span", 71);
|
|
430
|
-
i0.ɵɵtext(7);
|
|
431
|
-
i0.ɵɵelementEnd()();
|
|
432
|
-
i0.ɵɵconditionalCreate(8, AgentConfigurationComponent_Conditional_29_Conditional_1_ng_template_2_Conditional_8_Template, 3, 1);
|
|
433
|
-
i0.ɵɵelementEnd();
|
|
434
|
-
} if (rf & 2) {
|
|
435
|
-
const node_r14 = ctx.$implicit;
|
|
436
|
-
const depth_r19 = ctx.depth;
|
|
437
219
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
438
220
|
i0.ɵɵadvance();
|
|
439
|
-
i0.ɵɵ
|
|
440
|
-
i0.ɵɵadvance();
|
|
441
|
-
i0.ɵɵclassProp("fa-chevron-right", !node_r14.Expanded)("fa-chevron-down", node_r14.Expanded);
|
|
442
|
-
i0.ɵɵadvance();
|
|
443
|
-
i0.ɵɵclassProp("fa-folder", !node_r14.Expanded)("fa-folder-open", node_r14.Expanded);
|
|
444
|
-
i0.ɵɵadvance(2);
|
|
445
|
-
i0.ɵɵtextInterpolate(node_r14.Category.Name);
|
|
446
|
-
i0.ɵɵadvance(2);
|
|
447
|
-
i0.ɵɵtextInterpolate(ctx_r1.getAgentCount(node_r14));
|
|
448
|
-
i0.ɵɵadvance();
|
|
449
|
-
i0.ɵɵconditional(node_r14.Expanded ? 8 : -1);
|
|
221
|
+
i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("LeafConfig", ctx_r1.AgentLeafConfig)("SelectionMode", "single")("SelectableTypes", "leaf")("ShowDescriptions", true)("ShowBadges", true)("ShowExpandCollapseAll", true)("EmptyMessage", "No agents found")("EmptyIcon", "fa-solid fa-robot");
|
|
450
222
|
} }
|
|
451
|
-
function
|
|
452
|
-
i0.ɵɵelement(0, "img",
|
|
223
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
224
|
+
i0.ɵɵelement(0, "img", 72);
|
|
453
225
|
} if (rf & 2) {
|
|
454
|
-
const
|
|
455
|
-
i0.ɵɵproperty("src",
|
|
226
|
+
const agent_r10 = i0.ɵɵnextContext().$implicit;
|
|
227
|
+
i0.ɵɵproperty("src", agent_r10.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r10.Name + " logo");
|
|
456
228
|
} }
|
|
457
|
-
function
|
|
229
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
458
230
|
i0.ɵɵelement(0, "i");
|
|
459
231
|
} if (rf & 2) {
|
|
460
|
-
const
|
|
232
|
+
const agent_r10 = i0.ɵɵnextContext().$implicit;
|
|
461
233
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
462
|
-
i0.ɵɵclassMap(ctx_r1.getAgentIcon(
|
|
234
|
+
i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r10));
|
|
463
235
|
} }
|
|
464
|
-
function
|
|
465
|
-
i0.ɵɵelement(0, "div",
|
|
236
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
237
|
+
i0.ɵɵelement(0, "div", 73);
|
|
466
238
|
i0.ɵɵpipe(1, "highlightSearch");
|
|
467
239
|
} if (rf & 2) {
|
|
468
|
-
const
|
|
240
|
+
const agent_r10 = i0.ɵɵnextContext().$implicit;
|
|
469
241
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
470
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1,
|
|
242
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r10.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
471
243
|
} }
|
|
472
|
-
function
|
|
473
|
-
const
|
|
474
|
-
i0.ɵɵelementStart(0, "button",
|
|
475
|
-
i0.ɵɵlistener("click", function
|
|
476
|
-
i0.ɵɵelement(1, "i",
|
|
244
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
245
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
246
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
247
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const agent_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r10)); });
|
|
248
|
+
i0.ɵɵelement(1, "i", 62);
|
|
477
249
|
i0.ɵɵelementEnd();
|
|
478
250
|
} }
|
|
479
|
-
function
|
|
480
|
-
const
|
|
481
|
-
i0.ɵɵelementStart(0, "button",
|
|
482
|
-
i0.ɵɵlistener("click", function
|
|
483
|
-
i0.ɵɵelement(1, "i",
|
|
251
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
253
|
+
i0.ɵɵelementStart(0, "button", 80);
|
|
254
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const agent_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.runAgent(agent_r10)); });
|
|
255
|
+
i0.ɵɵelement(1, "i", 64);
|
|
484
256
|
i0.ɵɵelementEnd();
|
|
485
257
|
} }
|
|
486
|
-
function
|
|
487
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div",
|
|
488
|
-
i0.ɵɵconditionalCreate(4,
|
|
258
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 70)(3, "div", 71);
|
|
260
|
+
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_4_Template, 1, 2, "img", 72)(5, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_5_Template, 1, 2, "i", 38);
|
|
489
261
|
i0.ɵɵelementEnd();
|
|
490
262
|
i0.ɵɵelementStart(6, "div");
|
|
491
|
-
i0.ɵɵelement(7, "div",
|
|
263
|
+
i0.ɵɵelement(7, "div", 40);
|
|
492
264
|
i0.ɵɵpipe(8, "highlightSearch");
|
|
493
|
-
i0.ɵɵconditionalCreate(9,
|
|
265
|
+
i0.ɵɵconditionalCreate(9, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_9_Template, 2, 4, "div", 73);
|
|
494
266
|
i0.ɵɵelementEnd()()();
|
|
495
|
-
i0.ɵɵelementStart(10, "td")(11, "span",
|
|
267
|
+
i0.ɵɵelementStart(10, "td")(11, "span", 74);
|
|
496
268
|
i0.ɵɵtext(12);
|
|
497
269
|
i0.ɵɵelementEnd()();
|
|
498
|
-
i0.ɵɵelementStart(13, "td")(14, "span",
|
|
270
|
+
i0.ɵɵelementStart(13, "td")(14, "span", 75);
|
|
499
271
|
i0.ɵɵtext(15);
|
|
500
272
|
i0.ɵɵelementEnd()();
|
|
501
|
-
i0.ɵɵelementStart(16, "td")(17, "div",
|
|
502
|
-
i0.ɵɵconditionalCreate(18,
|
|
503
|
-
i0.ɵɵconditionalCreate(19,
|
|
273
|
+
i0.ɵɵelementStart(16, "td")(17, "div", 76);
|
|
274
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_18_Template, 2, 0, "button", 77);
|
|
275
|
+
i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Conditional_19_Template, 2, 0, "button", 78);
|
|
504
276
|
i0.ɵɵelementEnd()()();
|
|
505
277
|
} if (rf & 2) {
|
|
506
|
-
const
|
|
278
|
+
const agent_r10 = ctx.$implicit;
|
|
507
279
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
508
280
|
i0.ɵɵadvance(3);
|
|
509
|
-
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(
|
|
281
|
+
i0.ɵɵstyleProp("background-color", ctx_r1.getAgentIconColor(agent_r10));
|
|
510
282
|
i0.ɵɵadvance();
|
|
511
|
-
i0.ɵɵconditional(ctx_r1.hasLogoURL(
|
|
283
|
+
i0.ɵɵconditional(ctx_r1.hasLogoURL(agent_r10) ? 4 : 5);
|
|
512
284
|
i0.ɵɵadvance(3);
|
|
513
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 11,
|
|
285
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(8, 11, agent_r10.Name, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
|
|
514
286
|
i0.ɵɵadvance(2);
|
|
515
|
-
i0.ɵɵconditional(
|
|
287
|
+
i0.ɵɵconditional(agent_r10.Description ? 9 : -1);
|
|
516
288
|
i0.ɵɵadvance(3);
|
|
517
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(
|
|
289
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getAgentTypeName(agent_r10), " ");
|
|
518
290
|
i0.ɵɵadvance(2);
|
|
519
|
-
i0.ɵɵclassMap("status-" + (
|
|
291
|
+
i0.ɵɵclassMap("status-" + (agent_r10.Status || "unknown").toLowerCase());
|
|
520
292
|
i0.ɵɵadvance();
|
|
521
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
293
|
+
i0.ɵɵtextInterpolate1(" ", agent_r10.Status || "Unknown", " ");
|
|
522
294
|
i0.ɵɵadvance(3);
|
|
523
295
|
i0.ɵɵconditional(ctx_r1.UserCanReadAgents ? 18 : -1);
|
|
524
296
|
i0.ɵɵadvance();
|
|
525
|
-
i0.ɵɵconditional(
|
|
297
|
+
i0.ɵɵconditional(agent_r10.Status === "Active" && ctx_r1.UserCanReadAgents ? 19 : -1);
|
|
526
298
|
} }
|
|
527
|
-
function
|
|
528
|
-
const
|
|
529
|
-
i0.ɵɵelementStart(0, "div",
|
|
530
|
-
i0.ɵɵlistener("click", function
|
|
531
|
-
i0.ɵɵelementStart(5, "span",
|
|
299
|
+
function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
300
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
301
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "table", 66)(2, "thead")(3, "tr")(4, "th", 67);
|
|
302
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Name")); });
|
|
303
|
+
i0.ɵɵelementStart(5, "span", 68);
|
|
532
304
|
i0.ɵɵtext(6, " Name ");
|
|
533
|
-
i0.ɵɵelement(7, "i",
|
|
305
|
+
i0.ɵɵelement(7, "i", 69);
|
|
534
306
|
i0.ɵɵelementEnd()();
|
|
535
307
|
i0.ɵɵelementStart(8, "th");
|
|
536
308
|
i0.ɵɵtext(9, "Type");
|
|
537
309
|
i0.ɵɵelementEnd();
|
|
538
|
-
i0.ɵɵelementStart(10, "th",
|
|
539
|
-
i0.ɵɵlistener("click", function
|
|
540
|
-
i0.ɵɵelementStart(11, "span",
|
|
310
|
+
i0.ɵɵelementStart(10, "th", 67);
|
|
311
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Status")); });
|
|
312
|
+
i0.ɵɵelementStart(11, "span", 68);
|
|
541
313
|
i0.ɵɵtext(12, " Status ");
|
|
542
|
-
i0.ɵɵelement(13, "i",
|
|
314
|
+
i0.ɵɵelement(13, "i", 69);
|
|
543
315
|
i0.ɵɵelementEnd()();
|
|
544
316
|
i0.ɵɵelementStart(14, "th");
|
|
545
317
|
i0.ɵɵtext(15, "Actions");
|
|
546
318
|
i0.ɵɵelementEnd()()();
|
|
547
319
|
i0.ɵɵelementStart(16, "tbody");
|
|
548
|
-
i0.ɵɵrepeaterCreate(17,
|
|
320
|
+
i0.ɵɵrepeaterCreate(17, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_For_18_Template, 20, 14, "tr", null, _forTrack0);
|
|
549
321
|
i0.ɵɵelementEnd()()();
|
|
550
322
|
} if (rf & 2) {
|
|
551
323
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -557,32 +329,31 @@ function AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_
|
|
|
557
329
|
i0.ɵɵrepeater(ctx_r1.filteredAgents);
|
|
558
330
|
} }
|
|
559
331
|
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",
|
|
561
|
-
i0.ɵɵconditionalCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template,
|
|
562
|
-
i0.ɵɵ
|
|
563
|
-
i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_4_Template, 19, 8, "div", 32);
|
|
332
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template, 3, 0, "div", 29);
|
|
333
|
+
i0.ɵɵconditionalCreate(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template, 2, 9, "div", 30);
|
|
334
|
+
i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_29_Conditional_1_Conditional_2_Template, 19, 8, "div", 31);
|
|
564
335
|
} if (rf & 2) {
|
|
565
336
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
566
337
|
i0.ɵɵconditional(ctx_r1.viewMode === "grid" ? 0 : -1);
|
|
567
338
|
i0.ɵɵadvance();
|
|
568
339
|
i0.ɵɵconditional(ctx_r1.viewMode === "tree" ? 1 : -1);
|
|
569
|
-
i0.ɵɵadvance(
|
|
570
|
-
i0.ɵɵconditional(ctx_r1.viewMode === "list" ?
|
|
340
|
+
i0.ɵɵadvance();
|
|
341
|
+
i0.ɵɵconditional(ctx_r1.viewMode === "list" ? 2 : -1);
|
|
571
342
|
} }
|
|
572
343
|
function AgentConfigurationComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
573
|
-
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_0_Template, 9, 0, "div",
|
|
344
|
+
i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_29_Conditional_0_Template, 9, 0, "div", 27)(1, AgentConfigurationComponent_Conditional_29_Conditional_1_Template, 3, 3);
|
|
574
345
|
} if (rf & 2) {
|
|
575
346
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
576
347
|
i0.ɵɵconditional(ctx_r1.filteredAgents.length === 0 ? 0 : 1);
|
|
577
348
|
} }
|
|
578
349
|
function AgentConfigurationComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
579
|
-
const
|
|
580
|
-
i0.ɵɵelementStart(0, "div",
|
|
581
|
-
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_30_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
350
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
351
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
352
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_30_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
|
|
582
353
|
i0.ɵɵelementEnd();
|
|
583
354
|
} }
|
|
584
355
|
function AgentConfigurationComponent_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
585
|
-
i0.ɵɵelement(0, "img",
|
|
356
|
+
i0.ɵɵelement(0, "img", 85);
|
|
586
357
|
} if (rf & 2) {
|
|
587
358
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
588
359
|
i0.ɵɵproperty("src", ctx_r1.selectedAgent.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.selectedAgent.Name + " logo");
|
|
@@ -594,17 +365,17 @@ function AgentConfigurationComponent_Conditional_32_Conditional_4_Template(rf, c
|
|
|
594
365
|
i0.ɵɵclassMap(ctx_r1.getAgentIcon(ctx_r1.selectedAgent));
|
|
595
366
|
} }
|
|
596
367
|
function AgentConfigurationComponent_Conditional_32_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
597
|
-
i0.ɵɵelementStart(0, "span",
|
|
598
|
-
i0.ɵɵelement(1, "i",
|
|
368
|
+
i0.ɵɵelementStart(0, "span", 93);
|
|
369
|
+
i0.ɵɵelement(1, "i", 105);
|
|
599
370
|
i0.ɵɵtext(2, " Exposed as Action ");
|
|
600
371
|
i0.ɵɵelementEnd();
|
|
601
372
|
} }
|
|
602
373
|
function AgentConfigurationComponent_Conditional_32_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
603
|
-
i0.ɵɵelementStart(0, "div",
|
|
604
|
-
i0.ɵɵelement(2, "i",
|
|
374
|
+
i0.ɵɵelementStart(0, "div", 91)(1, "h4", 94);
|
|
375
|
+
i0.ɵɵelement(2, "i", 106);
|
|
605
376
|
i0.ɵɵtext(3, " Description ");
|
|
606
377
|
i0.ɵɵelementEnd();
|
|
607
|
-
i0.ɵɵelementStart(4, "p",
|
|
378
|
+
i0.ɵɵelementStart(4, "p", 107);
|
|
608
379
|
i0.ɵɵtext(5);
|
|
609
380
|
i0.ɵɵelementEnd()();
|
|
610
381
|
} if (rf & 2) {
|
|
@@ -613,10 +384,10 @@ function AgentConfigurationComponent_Conditional_32_Conditional_19_Template(rf,
|
|
|
613
384
|
i0.ɵɵtextInterpolate(ctx_r1.selectedAgent.Description);
|
|
614
385
|
} }
|
|
615
386
|
function AgentConfigurationComponent_Conditional_32_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
-
i0.ɵɵelementStart(0, "div",
|
|
387
|
+
i0.ɵɵelementStart(0, "div", 97)(1, "span", 98);
|
|
617
388
|
i0.ɵɵtext(2, "Parent Agent");
|
|
618
389
|
i0.ɵɵelementEnd();
|
|
619
|
-
i0.ɵɵelementStart(3, "span",
|
|
390
|
+
i0.ɵɵelementStart(3, "span", 99);
|
|
620
391
|
i0.ɵɵtext(4);
|
|
621
392
|
i0.ɵɵelementEnd()();
|
|
622
393
|
} if (rf & 2) {
|
|
@@ -625,104 +396,104 @@ function AgentConfigurationComponent_Conditional_32_Conditional_31_Template(rf,
|
|
|
625
396
|
i0.ɵɵtextInterpolate(ctx_r1.getParentAgentName(ctx_r1.selectedAgent));
|
|
626
397
|
} }
|
|
627
398
|
function AgentConfigurationComponent_Conditional_32_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
628
|
-
i0.ɵɵelement(0, "i",
|
|
399
|
+
i0.ɵɵelement(0, "i", 108);
|
|
629
400
|
i0.ɵɵtext(1, " Enabled ");
|
|
630
401
|
} }
|
|
631
402
|
function AgentConfigurationComponent_Conditional_32_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
632
|
-
i0.ɵɵelement(0, "i",
|
|
403
|
+
i0.ɵɵelement(0, "i", 109);
|
|
633
404
|
i0.ɵɵtext(1, " Disabled ");
|
|
634
405
|
} }
|
|
635
406
|
function AgentConfigurationComponent_Conditional_32_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
636
|
-
i0.ɵɵelement(0, "i",
|
|
407
|
+
i0.ɵɵelement(0, "i", 108);
|
|
637
408
|
i0.ɵɵtext(1, " Yes ");
|
|
638
409
|
} }
|
|
639
410
|
function AgentConfigurationComponent_Conditional_32_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
640
|
-
i0.ɵɵelement(0, "i",
|
|
411
|
+
i0.ɵɵelement(0, "i", 109);
|
|
641
412
|
i0.ɵɵtext(1, " No ");
|
|
642
413
|
} }
|
|
643
414
|
function AgentConfigurationComponent_Conditional_32_Conditional_67_Template(rf, ctx) { if (rf & 1) {
|
|
644
|
-
const
|
|
645
|
-
i0.ɵɵelementStart(0, "button",
|
|
646
|
-
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Conditional_67_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
647
|
-
i0.ɵɵelement(1, "i",
|
|
415
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
416
|
+
i0.ɵɵelementStart(0, "button", 110);
|
|
417
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Conditional_67_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgent(ctx_r1.selectedAgent)); });
|
|
418
|
+
i0.ɵɵelement(1, "i", 64);
|
|
648
419
|
i0.ɵɵtext(2, " Run Agent ");
|
|
649
420
|
i0.ɵɵelementEnd();
|
|
650
421
|
} }
|
|
651
422
|
function AgentConfigurationComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
652
|
-
const
|
|
653
|
-
i0.ɵɵelementStart(0, "div",
|
|
654
|
-
i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_32_Conditional_3_Template, 1, 2, "img",
|
|
423
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
424
|
+
i0.ɵɵelementStart(0, "div", 82)(1, "div", 83)(2, "div", 84);
|
|
425
|
+
i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_32_Conditional_3_Template, 1, 2, "img", 85)(4, AgentConfigurationComponent_Conditional_32_Conditional_4_Template, 1, 2, "i", 38);
|
|
655
426
|
i0.ɵɵelementEnd();
|
|
656
|
-
i0.ɵɵelementStart(5, "div",
|
|
427
|
+
i0.ɵɵelementStart(5, "div", 86)(6, "h3");
|
|
657
428
|
i0.ɵɵtext(7);
|
|
658
429
|
i0.ɵɵelementEnd();
|
|
659
|
-
i0.ɵɵelementStart(8, "span",
|
|
430
|
+
i0.ɵɵelementStart(8, "span", 87);
|
|
660
431
|
i0.ɵɵtext(9);
|
|
661
432
|
i0.ɵɵelementEnd()()();
|
|
662
|
-
i0.ɵɵelementStart(10, "button",
|
|
663
|
-
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
664
|
-
i0.ɵɵelement(11, "i",
|
|
433
|
+
i0.ɵɵelementStart(10, "button", 88);
|
|
434
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
|
|
435
|
+
i0.ɵɵelement(11, "i", 89);
|
|
665
436
|
i0.ɵɵelementEnd()();
|
|
666
|
-
i0.ɵɵelementStart(12, "div",
|
|
667
|
-
i0.ɵɵelement(16, "i",
|
|
437
|
+
i0.ɵɵelementStart(12, "div", 90)(13, "div", 91)(14, "div", 92)(15, "span", 75);
|
|
438
|
+
i0.ɵɵelement(16, "i", 54);
|
|
668
439
|
i0.ɵɵtext(17);
|
|
669
440
|
i0.ɵɵelementEnd();
|
|
670
|
-
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_32_Conditional_18_Template, 3, 0, "span",
|
|
441
|
+
i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_32_Conditional_18_Template, 3, 0, "span", 93);
|
|
671
442
|
i0.ɵɵelementEnd()();
|
|
672
|
-
i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_32_Conditional_19_Template, 6, 1, "div",
|
|
673
|
-
i0.ɵɵelementStart(20, "div",
|
|
674
|
-
i0.ɵɵelement(22, "i",
|
|
443
|
+
i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_32_Conditional_19_Template, 6, 1, "div", 91);
|
|
444
|
+
i0.ɵɵelementStart(20, "div", 91)(21, "h4", 94);
|
|
445
|
+
i0.ɵɵelement(22, "i", 95);
|
|
675
446
|
i0.ɵɵtext(23, " Configuration ");
|
|
676
447
|
i0.ɵɵelementEnd();
|
|
677
|
-
i0.ɵɵelementStart(24, "div",
|
|
448
|
+
i0.ɵɵelementStart(24, "div", 96)(25, "div", 97)(26, "span", 98);
|
|
678
449
|
i0.ɵɵtext(27, "Execution Mode");
|
|
679
450
|
i0.ɵɵelementEnd();
|
|
680
|
-
i0.ɵɵelementStart(28, "span",
|
|
451
|
+
i0.ɵɵelementStart(28, "span", 99);
|
|
681
452
|
i0.ɵɵelement(29, "i");
|
|
682
453
|
i0.ɵɵtext(30);
|
|
683
454
|
i0.ɵɵelementEnd()();
|
|
684
|
-
i0.ɵɵconditionalCreate(31, AgentConfigurationComponent_Conditional_32_Conditional_31_Template, 5, 1, "div",
|
|
685
|
-
i0.ɵɵelementStart(32, "div",
|
|
455
|
+
i0.ɵɵconditionalCreate(31, AgentConfigurationComponent_Conditional_32_Conditional_31_Template, 5, 1, "div", 97);
|
|
456
|
+
i0.ɵɵelementStart(32, "div", 97)(33, "span", 98);
|
|
686
457
|
i0.ɵɵtext(34, "Context Compression");
|
|
687
458
|
i0.ɵɵelementEnd();
|
|
688
|
-
i0.ɵɵelementStart(35, "span",
|
|
459
|
+
i0.ɵɵelementStart(35, "span", 99);
|
|
689
460
|
i0.ɵɵconditionalCreate(36, AgentConfigurationComponent_Conditional_32_Conditional_36_Template, 2, 0)(37, AgentConfigurationComponent_Conditional_32_Conditional_37_Template, 2, 0);
|
|
690
461
|
i0.ɵɵelementEnd()();
|
|
691
|
-
i0.ɵɵelementStart(38, "div",
|
|
462
|
+
i0.ɵɵelementStart(38, "div", 97)(39, "span", 98);
|
|
692
463
|
i0.ɵɵtext(40, "Exposed as Action");
|
|
693
464
|
i0.ɵɵelementEnd();
|
|
694
|
-
i0.ɵɵelementStart(41, "span",
|
|
465
|
+
i0.ɵɵelementStart(41, "span", 99);
|
|
695
466
|
i0.ɵɵconditionalCreate(42, AgentConfigurationComponent_Conditional_32_Conditional_42_Template, 2, 0)(43, AgentConfigurationComponent_Conditional_32_Conditional_43_Template, 2, 0);
|
|
696
467
|
i0.ɵɵelementEnd()();
|
|
697
|
-
i0.ɵɵelementStart(44, "div",
|
|
468
|
+
i0.ɵɵelementStart(44, "div", 97)(45, "span", 98);
|
|
698
469
|
i0.ɵɵtext(46, "Model Selection");
|
|
699
470
|
i0.ɵɵelementEnd();
|
|
700
|
-
i0.ɵɵelementStart(47, "span",
|
|
471
|
+
i0.ɵɵelementStart(47, "span", 99);
|
|
701
472
|
i0.ɵɵtext(48);
|
|
702
473
|
i0.ɵɵelementEnd()()()();
|
|
703
|
-
i0.ɵɵelementStart(49, "div",
|
|
704
|
-
i0.ɵɵelement(51, "i",
|
|
474
|
+
i0.ɵɵelementStart(49, "div", 91)(50, "h4", 94);
|
|
475
|
+
i0.ɵɵelement(51, "i", 100);
|
|
705
476
|
i0.ɵɵtext(52, " Timestamps ");
|
|
706
477
|
i0.ɵɵelementEnd();
|
|
707
|
-
i0.ɵɵelementStart(53, "div",
|
|
478
|
+
i0.ɵɵelementStart(53, "div", 96)(54, "div", 97)(55, "span", 98);
|
|
708
479
|
i0.ɵɵtext(56, "Created");
|
|
709
480
|
i0.ɵɵelementEnd();
|
|
710
|
-
i0.ɵɵelementStart(57, "span",
|
|
481
|
+
i0.ɵɵelementStart(57, "span", 99);
|
|
711
482
|
i0.ɵɵtext(58);
|
|
712
483
|
i0.ɵɵpipe(59, "date");
|
|
713
484
|
i0.ɵɵelementEnd()();
|
|
714
|
-
i0.ɵɵelementStart(60, "div",
|
|
485
|
+
i0.ɵɵelementStart(60, "div", 97)(61, "span", 98);
|
|
715
486
|
i0.ɵɵtext(62, "Updated");
|
|
716
487
|
i0.ɵɵelementEnd();
|
|
717
|
-
i0.ɵɵelementStart(63, "span",
|
|
488
|
+
i0.ɵɵelementStart(63, "span", 99);
|
|
718
489
|
i0.ɵɵtext(64);
|
|
719
490
|
i0.ɵɵpipe(65, "date");
|
|
720
491
|
i0.ɵɵelementEnd()()()()();
|
|
721
|
-
i0.ɵɵelementStart(66, "div",
|
|
722
|
-
i0.ɵɵconditionalCreate(67, AgentConfigurationComponent_Conditional_32_Conditional_67_Template, 3, 0, "button",
|
|
723
|
-
i0.ɵɵelementStart(68, "button",
|
|
724
|
-
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_68_listener() { i0.ɵɵrestoreView(
|
|
725
|
-
i0.ɵɵelement(69, "i",
|
|
492
|
+
i0.ɵɵelementStart(66, "div", 101);
|
|
493
|
+
i0.ɵɵconditionalCreate(67, AgentConfigurationComponent_Conditional_32_Conditional_67_Template, 3, 0, "button", 102);
|
|
494
|
+
i0.ɵɵelementStart(68, "button", 103);
|
|
495
|
+
i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_32_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAgentFromPanel()); });
|
|
496
|
+
i0.ɵɵelement(69, "i", 104);
|
|
726
497
|
i0.ɵɵtext(70, " Open Full Record ");
|
|
727
498
|
i0.ɵɵelementEnd()();
|
|
728
499
|
} if (rf & 2) {
|
|
@@ -769,7 +540,6 @@ function AgentConfigurationComponent_Conditional_32_Template(rf, ctx) { if (rf &
|
|
|
769
540
|
let AgentConfigurationComponent = class AgentConfigurationComponent extends BaseResourceComponent {
|
|
770
541
|
testHarnessService;
|
|
771
542
|
createAgentService;
|
|
772
|
-
navigationService;
|
|
773
543
|
cdr;
|
|
774
544
|
// Settings persistence
|
|
775
545
|
USER_SETTINGS_KEY = 'AI.Agents.UserPreferences';
|
|
@@ -798,10 +568,26 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
798
568
|
categoryId: 'all'
|
|
799
569
|
};
|
|
800
570
|
selectedAgentForTest = null;
|
|
801
|
-
//
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
571
|
+
// mj-tree configuration for category tree view
|
|
572
|
+
CategoryBranchConfig = {
|
|
573
|
+
EntityName: 'MJ: AI Agent Categories',
|
|
574
|
+
DisplayField: 'Name',
|
|
575
|
+
ParentIDField: 'ParentID',
|
|
576
|
+
DefaultIcon: 'fa-solid fa-folder',
|
|
577
|
+
DescriptionField: 'Description',
|
|
578
|
+
ExtraFilter: "Status='Active'",
|
|
579
|
+
OrderBy: 'Name ASC'
|
|
580
|
+
};
|
|
581
|
+
AgentLeafConfig = {
|
|
582
|
+
EntityName: 'MJ: AI Agents',
|
|
583
|
+
ParentField: 'CategoryID',
|
|
584
|
+
DisplayField: 'Name',
|
|
585
|
+
DefaultIcon: 'fa-solid fa-robot',
|
|
586
|
+
IconField: 'IconClass',
|
|
587
|
+
DescriptionField: 'Type',
|
|
588
|
+
BadgeField: 'Status',
|
|
589
|
+
OrderBy: 'Name ASC'
|
|
590
|
+
};
|
|
805
591
|
// === Permission Checks ===
|
|
806
592
|
/** Cache for permission checks to avoid repeated calculations */
|
|
807
593
|
_permissionCache = new Map();
|
|
@@ -871,11 +657,10 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
871
657
|
clearPermissionCache() {
|
|
872
658
|
this._permissionCache.clear();
|
|
873
659
|
}
|
|
874
|
-
constructor(testHarnessService, createAgentService,
|
|
660
|
+
constructor(testHarnessService, createAgentService, cdr) {
|
|
875
661
|
super();
|
|
876
662
|
this.testHarnessService = testHarnessService;
|
|
877
663
|
this.createAgentService = createAgentService;
|
|
878
|
-
this.navigationService = navigationService;
|
|
879
664
|
this.cdr = cdr;
|
|
880
665
|
// Set up debounced settings persistence
|
|
881
666
|
this.settingsPersistSubject.pipe(debounceTime(500), takeUntil(this.destroy$)).subscribe(() => {
|
|
@@ -889,17 +674,19 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
889
674
|
if (this.Data?.Configuration) {
|
|
890
675
|
this.applyInitialState(this.Data.Configuration);
|
|
891
676
|
}
|
|
892
|
-
|
|
677
|
+
// Load agents and categories in parallel
|
|
678
|
+
await Promise.all([
|
|
679
|
+
this.loadAgents(),
|
|
680
|
+
this.loadCategories()
|
|
681
|
+
]);
|
|
893
682
|
// Apply filters after data is loaded (uses saved preferences)
|
|
894
683
|
this.applyFilters();
|
|
895
|
-
|
|
896
|
-
if (this.viewMode === 'tree') {
|
|
897
|
-
this.loadCategoriesAndBuildTree();
|
|
898
|
-
}
|
|
684
|
+
this.cdr.detectChanges();
|
|
899
685
|
// Notify that the resource has finished loading
|
|
900
686
|
this.NotifyLoadComplete();
|
|
901
687
|
}
|
|
902
688
|
ngOnDestroy() {
|
|
689
|
+
super.ngOnDestroy();
|
|
903
690
|
this.destroy$.next();
|
|
904
691
|
this.destroy$.complete();
|
|
905
692
|
}
|
|
@@ -1096,10 +883,6 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1096
883
|
// Apply sorting
|
|
1097
884
|
filtered = this.applySorting(filtered);
|
|
1098
885
|
this.filteredAgents = filtered;
|
|
1099
|
-
// Rebuild tree view data when filters change
|
|
1100
|
-
if (this.viewMode === 'tree') {
|
|
1101
|
-
this.buildCategoryTree();
|
|
1102
|
-
}
|
|
1103
886
|
}
|
|
1104
887
|
/**
|
|
1105
888
|
* Sort the agents by the specified column
|
|
@@ -1154,12 +937,6 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1154
937
|
}
|
|
1155
938
|
setViewMode(mode) {
|
|
1156
939
|
this.viewMode = mode;
|
|
1157
|
-
if (mode === 'tree' && this.categories.length === 0) {
|
|
1158
|
-
this.loadCategoriesAndBuildTree();
|
|
1159
|
-
}
|
|
1160
|
-
else if (mode === 'tree') {
|
|
1161
|
-
this.buildCategoryTree();
|
|
1162
|
-
}
|
|
1163
940
|
this.emitStateChange();
|
|
1164
941
|
this.saveUserPreferencesDebounced();
|
|
1165
942
|
}
|
|
@@ -1326,64 +1103,28 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1326
1103
|
return !!agent?.LogoURL;
|
|
1327
1104
|
}
|
|
1328
1105
|
// ========================================
|
|
1329
|
-
// Category Tree View
|
|
1106
|
+
// Category Tree View (mj-tree)
|
|
1330
1107
|
// ========================================
|
|
1331
|
-
/**
|
|
1332
|
-
|
|
1108
|
+
/** Lightweight category row for descendant filtering */
|
|
1109
|
+
categories = [];
|
|
1110
|
+
/** Load categories for descendant-based filter matching */
|
|
1111
|
+
async loadCategories() {
|
|
1333
1112
|
try {
|
|
1334
1113
|
const rv = new RunView();
|
|
1335
1114
|
const result = await rv.RunView({
|
|
1336
1115
|
EntityName: 'MJ: AI Agent Categories',
|
|
1337
|
-
Fields: ['ID', '
|
|
1116
|
+
Fields: ['ID', 'ParentID'],
|
|
1338
1117
|
ExtraFilter: "Status='Active'",
|
|
1339
|
-
OrderBy: 'Name ASC',
|
|
1340
1118
|
ResultType: 'simple'
|
|
1341
1119
|
});
|
|
1342
1120
|
if (result.Success) {
|
|
1343
1121
|
this.categories = result.Results;
|
|
1344
|
-
this.buildCategoryTree();
|
|
1345
|
-
this.cdr.detectChanges();
|
|
1346
1122
|
}
|
|
1347
1123
|
}
|
|
1348
1124
|
catch (error) {
|
|
1349
1125
|
console.error('[AgentConfiguration] Error loading categories:', error);
|
|
1350
1126
|
}
|
|
1351
1127
|
}
|
|
1352
|
-
/** Build tree nodes from flat categories + filtered agents */
|
|
1353
|
-
buildCategoryTree() {
|
|
1354
|
-
const agentsByCategory = new Map();
|
|
1355
|
-
const uncategorized = [];
|
|
1356
|
-
for (const agent of this.filteredAgents) {
|
|
1357
|
-
const catId = agent.CategoryID;
|
|
1358
|
-
if (catId) {
|
|
1359
|
-
const normalizedId = catId.toUpperCase();
|
|
1360
|
-
if (!agentsByCategory.has(normalizedId)) {
|
|
1361
|
-
agentsByCategory.set(normalizedId, []);
|
|
1362
|
-
}
|
|
1363
|
-
agentsByCategory.get(normalizedId).push(agent);
|
|
1364
|
-
}
|
|
1365
|
-
else {
|
|
1366
|
-
uncategorized.push(agent);
|
|
1367
|
-
}
|
|
1368
|
-
}
|
|
1369
|
-
// Build tree from root categories (ParentID is null)
|
|
1370
|
-
const rootCategories = this.categories.filter(c => !c.ParentID);
|
|
1371
|
-
this.categoryTree = rootCategories.map(c => this.buildTreeNode(c, agentsByCategory));
|
|
1372
|
-
this.uncategorizedAgents = uncategorized;
|
|
1373
|
-
}
|
|
1374
|
-
/** Recursively build a CategoryTreeNode */
|
|
1375
|
-
buildTreeNode(category, agentsByCategory) {
|
|
1376
|
-
const children = this.categories
|
|
1377
|
-
.filter(c => c.ParentID && UUIDsEqual(c.ParentID, category.ID))
|
|
1378
|
-
.map(c => this.buildTreeNode(c, agentsByCategory));
|
|
1379
|
-
const normalizedId = category.ID.toUpperCase();
|
|
1380
|
-
return {
|
|
1381
|
-
Category: category,
|
|
1382
|
-
Agents: agentsByCategory.get(normalizedId) || [],
|
|
1383
|
-
Children: children,
|
|
1384
|
-
Expanded: true // default expanded
|
|
1385
|
-
};
|
|
1386
|
-
}
|
|
1387
1128
|
/** Get a category and all its descendant IDs (for inclusive filtering) */
|
|
1388
1129
|
getCategoryAndDescendantIds(categoryId) {
|
|
1389
1130
|
const ids = [categoryId];
|
|
@@ -1393,23 +1134,22 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1393
1134
|
}
|
|
1394
1135
|
return ids;
|
|
1395
1136
|
}
|
|
1396
|
-
/**
|
|
1397
|
-
|
|
1398
|
-
node
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1137
|
+
/** Handle click on a tree node — open detail panel for agents */
|
|
1138
|
+
onTreeNodeClick(event) {
|
|
1139
|
+
const node = event.Node;
|
|
1140
|
+
if (node.Type === 'leaf') {
|
|
1141
|
+
const agent = this.agents.find(a => UUIDsEqual(a.ID, node.ID));
|
|
1142
|
+
if (agent) {
|
|
1143
|
+
this.showAgentDetails(agent);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1405
1146
|
}
|
|
1406
|
-
/**
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1147
|
+
/** Handle double-click on a tree node — open full record for agents */
|
|
1148
|
+
onTreeNodeDoubleClick(event) {
|
|
1149
|
+
const node = event.Node;
|
|
1150
|
+
if (node.Type === 'leaf') {
|
|
1151
|
+
this.openAgentRecord(node.ID);
|
|
1411
1152
|
}
|
|
1412
|
-
return count;
|
|
1413
1153
|
}
|
|
1414
1154
|
// === BaseResourceComponent Required Methods ===
|
|
1415
1155
|
/**
|
|
@@ -1424,45 +1164,45 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1424
1164
|
async GetResourceIconClass(data) {
|
|
1425
1165
|
return 'fa-solid fa-robot';
|
|
1426
1166
|
}
|
|
1427
|
-
static ɵfac = function AgentConfigurationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentConfigurationComponent)(i0.ɵɵdirectiveInject(i1.AITestHarnessDialogService), i0.ɵɵdirectiveInject(i2.CreateAgentService), i0.ɵɵdirectiveInject(
|
|
1428
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 15, consts: [[
|
|
1429
|
-
i0.ɵɵelementStart(0, "div",
|
|
1430
|
-
i0.ɵɵelement(4, "i",
|
|
1167
|
+
static ɵfac = function AgentConfigurationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentConfigurationComponent)(i0.ɵɵdirectiveInject(i1.AITestHarnessDialogService), i0.ɵɵdirectiveInject(i2.CreateAgentService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1168
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 15, consts: [[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"], [3, "AfterNodeClick", "AfterNodeDoubleClick", "BranchConfig", "LeafConfig", "SelectionMode", "SelectableTypes", "ShowDescriptions", "ShowBadges", "ShowExpandCollapseAll", "EmptyMessage", "EmptyIcon"], [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", "Run Agent", 1, "action-btn-small", "primary"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary", 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) {
|
|
1169
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2", 3);
|
|
1170
|
+
i0.ɵɵelement(4, "i", 4);
|
|
1431
1171
|
i0.ɵɵtext(5, " Agent Configuration ");
|
|
1432
1172
|
i0.ɵɵelementEnd();
|
|
1433
|
-
i0.ɵɵelementStart(6, "button",
|
|
1173
|
+
i0.ɵɵelementStart(6, "button", 5);
|
|
1434
1174
|
i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_6_listener() { return ctx.toggleFilterPanel(); });
|
|
1435
|
-
i0.ɵɵelement(7, "i",
|
|
1175
|
+
i0.ɵɵelement(7, "i", 6);
|
|
1436
1176
|
i0.ɵɵconditionalCreate(8, AgentConfigurationComponent_Conditional_8_Template, 1, 0)(9, AgentConfigurationComponent_Conditional_9_Template, 1, 0);
|
|
1437
1177
|
i0.ɵɵelementEnd();
|
|
1438
|
-
i0.ɵɵelementStart(10, "span",
|
|
1178
|
+
i0.ɵɵelementStart(10, "span", 7);
|
|
1439
1179
|
i0.ɵɵtext(11);
|
|
1440
1180
|
i0.ɵɵelementEnd()();
|
|
1441
|
-
i0.ɵɵelementStart(12, "div",
|
|
1181
|
+
i0.ɵɵelementStart(12, "div", 8)(13, "div", 9)(14, "button", 10);
|
|
1442
1182
|
i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_14_listener() { return ctx.setViewMode("grid"); });
|
|
1443
|
-
i0.ɵɵelement(15, "i",
|
|
1183
|
+
i0.ɵɵelement(15, "i", 11);
|
|
1444
1184
|
i0.ɵɵelementEnd();
|
|
1445
|
-
i0.ɵɵelementStart(16, "button",
|
|
1185
|
+
i0.ɵɵelementStart(16, "button", 12);
|
|
1446
1186
|
i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_16_listener() { return ctx.setViewMode("list"); });
|
|
1447
|
-
i0.ɵɵelement(17, "i",
|
|
1187
|
+
i0.ɵɵelement(17, "i", 13);
|
|
1448
1188
|
i0.ɵɵelementEnd();
|
|
1449
|
-
i0.ɵɵelementStart(18, "button",
|
|
1189
|
+
i0.ɵɵelementStart(18, "button", 14);
|
|
1450
1190
|
i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_18_listener() { return ctx.setViewMode("tree"); });
|
|
1451
|
-
i0.ɵɵelement(19, "i",
|
|
1191
|
+
i0.ɵɵelement(19, "i", 15);
|
|
1452
1192
|
i0.ɵɵelementEnd()();
|
|
1453
|
-
i0.ɵɵelementStart(20, "button",
|
|
1193
|
+
i0.ɵɵelementStart(20, "button", 16);
|
|
1454
1194
|
i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_20_listener() { return ctx.createNewAgent(); });
|
|
1455
|
-
i0.ɵɵelement(21, "i",
|
|
1195
|
+
i0.ɵɵelement(21, "i", 17);
|
|
1456
1196
|
i0.ɵɵtext(22, " New Agent ");
|
|
1457
1197
|
i0.ɵɵelementEnd()()();
|
|
1458
|
-
i0.ɵɵelementStart(23, "div",
|
|
1459
|
-
i0.ɵɵconditionalCreate(25, AgentConfigurationComponent_Conditional_25_Template, 2, 6, "as-split-area",
|
|
1460
|
-
i0.ɵɵelementStart(26, "as-split-area")(27, "div",
|
|
1461
|
-
i0.ɵɵconditionalCreate(28, AgentConfigurationComponent_Conditional_28_Template, 2, 0, "div",
|
|
1198
|
+
i0.ɵɵelementStart(23, "div", 18)(24, "as-split", 19);
|
|
1199
|
+
i0.ɵɵconditionalCreate(25, AgentConfigurationComponent_Conditional_25_Template, 2, 6, "as-split-area", 20);
|
|
1200
|
+
i0.ɵɵelementStart(26, "as-split-area")(27, "div", 21);
|
|
1201
|
+
i0.ɵɵconditionalCreate(28, AgentConfigurationComponent_Conditional_28_Template, 2, 0, "div", 22);
|
|
1462
1202
|
i0.ɵɵconditionalCreate(29, AgentConfigurationComponent_Conditional_29_Template, 2, 1);
|
|
1463
1203
|
i0.ɵɵelementEnd()()()();
|
|
1464
|
-
i0.ɵɵconditionalCreate(30, AgentConfigurationComponent_Conditional_30_Template, 1, 0, "div",
|
|
1465
|
-
i0.ɵɵelementStart(31, "div",
|
|
1204
|
+
i0.ɵɵconditionalCreate(30, AgentConfigurationComponent_Conditional_30_Template, 1, 0, "div", 23);
|
|
1205
|
+
i0.ɵɵelementStart(31, "div", 24);
|
|
1466
1206
|
i0.ɵɵconditionalCreate(32, AgentConfigurationComponent_Conditional_32_Template, 71, 26);
|
|
1467
1207
|
i0.ɵɵelementEnd()();
|
|
1468
1208
|
} if (rf & 2) {
|
|
@@ -1488,7 +1228,7 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
|
|
|
1488
1228
|
i0.ɵɵclassProp("visible", ctx.detailPanelVisible);
|
|
1489
1229
|
i0.ɵɵadvance();
|
|
1490
1230
|
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}"] });
|
|
1231
|
+
} }, dependencies: [i3.SplitComponent, i3.SplitAreaComponent, i4.LoadingComponent, i5.TreeComponent, i6.AgentFilterPanelComponent, i7.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 height: 100%;\n overflow: auto;\n}"] });
|
|
1492
1232
|
};
|
|
1493
1233
|
AgentConfigurationComponent = __decorate([
|
|
1494
1234
|
RegisterClass(BaseResourceComponent, 'AIAgentsResource')
|
|
@@ -1496,7 +1236,7 @@ AgentConfigurationComponent = __decorate([
|
|
|
1496
1236
|
export { AgentConfigurationComponent };
|
|
1497
1237
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentConfigurationComponent, [{
|
|
1498
1238
|
type: Component,
|
|
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"] }]
|
|
1500
|
-
}], () => [{ type: i1.AITestHarnessDialogService }, { type: i2.CreateAgentService }, { type:
|
|
1501
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentConfigurationComponent, { className: "AgentConfigurationComponent", filePath: "src/AI/components/agents/agent-configuration.component.ts", lineNumber:
|
|
1239
|
+
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 (mj-tree component) -->\n @if (viewMode === 'tree') {\n <div class=\"agents-tree\">\n <mj-tree\n [BranchConfig]=\"CategoryBranchConfig\"\n [LeafConfig]=\"AgentLeafConfig\"\n [SelectionMode]=\"'single'\"\n [SelectableTypes]=\"'leaf'\"\n [ShowDescriptions]=\"true\"\n [ShowBadges]=\"true\"\n [ShowExpandCollapseAll]=\"true\"\n [EmptyMessage]=\"'No agents found'\"\n [EmptyIcon]=\"'fa-solid fa-robot'\"\n (AfterNodeClick)=\"onTreeNodeClick($event)\"\n (AfterNodeDoubleClick)=\"onTreeNodeDoubleClick($event)\">\n </mj-tree>\n </div>\n }\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 height: 100%;\n overflow: auto;\n}\n"] }]
|
|
1240
|
+
}], () => [{ type: i1.AITestHarnessDialogService }, { type: i2.CreateAgentService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
1241
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentConfigurationComponent, { className: "AgentConfigurationComponent", filePath: "src/AI/components/agents/agent-configuration.component.ts", lineNumber: 47 }); })();
|
|
1502
1242
|
//# sourceMappingURL=agent-configuration.component.js.map
|