@memberjunction/ng-dashboards 5.34.1 → 5.35.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 +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- 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 +127 -106
- 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 +44 -45
- 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 +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -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 +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.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 +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.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 +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-configuration.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-configuration.component.ts","../../../../src/AI/components/agents/agent-configuration.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnDestroy, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Metadata, CompositeKey, RunView } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { AITestHarnessDialogService } from '@memberjunction/ng-ai-test-harness';\nimport { CreateAgentService, CreateAgentDialogResult, CreateAgentResult } from '@memberjunction/ng-agents';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { TreeBranchConfig, TreeLeafConfig, AfterNodeClickEventArgs, AfterNodeDoubleClickEventArgs } from '@memberjunction/ng-trees';\n\ninterface AgentFilter {\n searchTerm: string;\n agentType: string;\n parentAgent: string;\n status: string;\n executionMode: string;\n exposeAsAction: string;\n categoryId: string;\n}\n\n\n/**\n * User preferences for the Agent Configuration dashboard\n */\ninterface AgentConfigurationUserPreferences {\n filterPanelVisible: boolean;\n viewMode: 'grid' | 'list' | 'tree';\n sortColumn: string;\n sortDirection: 'asc' | 'desc';\n filters: AgentFilter;\n}\n/**\n * AI Agents Resource - displays AI agent configuration and management\n * Extends BaseResourceComponent to work with the resource type system\n */\n@RegisterClass(BaseResourceComponent, 'AIAgentsResource')\n@Component({\n standalone: false,\n selector: 'app-agent-configuration',\n templateUrl: './agent-configuration.component.html',\n styleUrls: ['./agent-configuration.component.css']\n})\nexport class AgentConfigurationComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n // Settings persistence\n private readonly USER_SETTINGS_KEY = 'AI.Agents.UserPreferences';\n private settingsPersistSubject = new Subject<void>();\n protected override destroy$ = new Subject<void>();\n private settingsLoaded = false;\n\n public isLoading = false;\n public filterPanelVisible = true;\n public viewMode: 'grid' | 'list' | 'tree' = 'grid';\n public expandedAgentId: string | null = null;\n\n public agents: MJAIAgentEntityExtended[] = [];\n public filteredAgents: MJAIAgentEntityExtended[] = [];\n\n // Detail panel\n public selectedAgent: MJAIAgentEntityExtended | null = null;\n public detailPanelVisible = false;\n\n // Sorting state\n public sortColumn: string = 'Name';\n public sortDirection: 'asc' | 'desc' = 'asc';\n\n public currentFilters: AgentFilter = {\n searchTerm: '',\n agentType: 'all',\n parentAgent: 'all',\n status: 'all',\n executionMode: 'all',\n exposeAsAction: 'all',\n categoryId: 'all'\n };\n\n public selectedAgentForTest: MJAIAgentEntityExtended | null = null;\n\n // mj-tree configuration for category tree view\n public CategoryBranchConfig: TreeBranchConfig = {\n EntityName: 'MJ: AI Agent Categories',\n DisplayField: 'Name',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n DescriptionField: 'Description',\n ExtraFilter: \"Status='Active'\",\n OrderBy: 'Name ASC'\n };\n\n public AgentLeafConfig: TreeLeafConfig = {\n EntityName: 'MJ: AI Agents',\n ParentField: 'CategoryID',\n DisplayField: 'Name',\n DefaultIcon: 'fa-solid fa-robot',\n IconField: 'IconClass',\n DescriptionField: 'Type',\n BadgeField: 'Status',\n OrderBy: 'Name ASC'\n };\n\n // === Permission Checks ===\n /** Cache for permission checks to avoid repeated calculations */\n private _permissionCache = new Map<string, boolean>();\n private _metadata = this.ProviderToUse;\n\n /** Check if user can create AI Agents */\n public get UserCanCreateAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Create');\n }\n\n /** Check if user can read AI Agents */\n public get UserCanReadAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Read');\n }\n\n /** Check if user can update AI Agents */\n public get UserCanUpdateAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Update');\n }\n\n /** Check if user can delete AI Agents */\n public get UserCanDeleteAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Delete');\n }\n\n /**\n * Helper method to check entity permissions with caching\n * @param entityName - The name of the entity to check permissions for\n * @param permissionType - The type of permission to check (Create, Read, Update, Delete)\n * @returns boolean indicating if user has the permission\n */\n private checkEntityPermission(entityName: string, permissionType: 'Create' | 'Read' | 'Update' | 'Delete'): boolean {\n const cacheKey = `${entityName}_${permissionType}`;\n \n if (this._permissionCache.has(cacheKey)) {\n return this._permissionCache.get(cacheKey)!;\n }\n\n try {\n const entityInfo = this._metadata.Entities.find(e => e.Name === entityName);\n \n if (!entityInfo) {\n console.warn(`Entity '${entityName}' not found for permission check`);\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n\n const userPermissions = entityInfo.GetUserPermisions(this._metadata.CurrentUser);\n let hasPermission = false;\n\n switch (permissionType) {\n case 'Create':\n hasPermission = userPermissions.CanCreate;\n break;\n case 'Read':\n hasPermission = userPermissions.CanRead;\n break;\n case 'Update':\n hasPermission = userPermissions.CanUpdate;\n break;\n case 'Delete':\n hasPermission = userPermissions.CanDelete;\n break;\n }\n\n this._permissionCache.set(cacheKey, hasPermission);\n return hasPermission;\n } catch (error) {\n console.error(`Error checking ${permissionType} permission for ${entityName}:`, error);\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n }\n\n /**\n * Clears the permission cache. Call this when user context changes or permissions are updated.\n */\n public clearPermissionCache(): void {\n this._permissionCache.clear();\n }\n\n constructor(\n private testHarnessService: AITestHarnessDialogService,\n private createAgentService: CreateAgentService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n\n // Set up debounced settings persistence\n this.settingsPersistSubject.pipe(\n debounceTime(500),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.persistUserPreferences();\n });\n }\n\n async ngAfterViewInit() {\n // Load saved user preferences first\n this.loadUserPreferences();\n\n // Apply initial state from resource configuration if provided (overrides saved prefs)\n if (this.Data?.Configuration) {\n this.applyInitialState(this.Data.Configuration);\n }\n\n // Load agents and categories in parallel\n await Promise.all([\n this.loadAgents(),\n this.loadCategories()\n ]);\n\n // Apply filters after data is loaded (uses saved preferences)\n this.applyFilters();\n this.cdr.detectChanges();\n\n // Notify that the resource has finished loading\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ========================================\n // User Settings Persistence\n // ========================================\n\n /**\n * Load saved user preferences from the UserInfoEngine\n */\n private loadUserPreferences(): void {\n try {\n const savedPrefs = UserInfoEngine.Instance.GetSetting(this.USER_SETTINGS_KEY);\n if (savedPrefs) {\n const prefs = JSON.parse(savedPrefs) as AgentConfigurationUserPreferences;\n this.applyUserPreferences(prefs);\n }\n } catch (error) {\n console.warn('[AgentConfiguration] Failed to load user preferences:', error);\n } finally {\n this.settingsLoaded = true;\n }\n }\n\n /**\n * Apply loaded preferences to component state\n */\n private applyUserPreferences(prefs: AgentConfigurationUserPreferences): void {\n if (prefs.filterPanelVisible !== undefined) {\n this.filterPanelVisible = prefs.filterPanelVisible;\n }\n if (prefs.viewMode) {\n this.viewMode = prefs.viewMode;\n }\n if (prefs.sortColumn) {\n this.sortColumn = prefs.sortColumn;\n }\n if (prefs.sortDirection) {\n this.sortDirection = prefs.sortDirection;\n }\n if (prefs.filters) {\n this.currentFilters = {\n searchTerm: prefs.filters.searchTerm || '',\n agentType: prefs.filters.agentType || 'all',\n parentAgent: prefs.filters.parentAgent || 'all',\n status: prefs.filters.status || 'all',\n executionMode: prefs.filters.executionMode || 'all',\n exposeAsAction: prefs.filters.exposeAsAction || 'all',\n categoryId: prefs.filters.categoryId || 'all'\n };\n }\n }\n\n /**\n * Get current preferences as an object for saving\n */\n private getCurrentPreferences(): AgentConfigurationUserPreferences {\n return {\n filterPanelVisible: this.filterPanelVisible,\n viewMode: this.viewMode,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n filters: {\n ...this.currentFilters\n }\n };\n }\n\n /**\n * Persist user preferences to storage (debounced)\n */\n private saveUserPreferencesDebounced(): void {\n if (!this.settingsLoaded) return; // Don't save during initial load\n this.settingsPersistSubject.next();\n }\n\n /**\n * Actually persist user preferences to the UserInfoEngine\n */\n private async persistUserPreferences(): Promise<void> {\n try {\n const prefs = this.getCurrentPreferences();\n await UserInfoEngine.Instance.SetSetting(this.USER_SETTINGS_KEY, JSON.stringify(prefs));\n } catch (error) {\n console.warn('[AgentConfiguration] Failed to persist user preferences:', error);\n }\n }\n\n private applyInitialState(state: any): void {\n if (state.filterPanelVisible !== undefined) {\n this.filterPanelVisible = state.filterPanelVisible;\n }\n if (state.viewMode) {\n this.viewMode = state.viewMode;\n }\n if (state.expandedAgentId) {\n this.expandedAgentId = state.expandedAgentId;\n }\n if (state.currentFilters) {\n this.currentFilters = { ...this.currentFilters, ...state.currentFilters };\n }\n }\n\n private async loadAgents(): Promise<void> {\n try {\n this.isLoading = true;\n\n // Ensure AIEngineBase is configured (no-op if already loaded)\n await AIEngineBase.Instance.Config(false);\n\n // Get cached agents from AIEngineBase\n this.agents = AIEngineBase.Instance.Agents;\n this.filteredAgents = [...this.agents];\n } catch (error) {\n console.error('Error loading AI agents:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n public toggleFilterPanel(): void {\n this.filterPanelVisible = !this.filterPanelVisible;\n this.emitStateChange();\n this.saveUserPreferencesDebounced();\n }\n\n public onMainSplitterChange(_event: any): void {\n this.emitStateChange();\n }\n\n public onFiltersChange(filters: AgentFilter): void {\n this.currentFilters = { ...filters };\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n public onFilterChange(): void {\n this.applyFilters();\n }\n\n public onResetFilters(): void {\n this.currentFilters = {\n searchTerm: '',\n agentType: 'all',\n parentAgent: 'all',\n status: 'all',\n executionMode: 'all',\n exposeAsAction: 'all',\n categoryId: 'all'\n };\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n private applyFilters(): void {\n let filtered = [...this.agents];\n\n // Apply search filter (name contains)\n if (this.currentFilters.searchTerm) {\n const searchTerm = this.currentFilters.searchTerm.toLowerCase();\n filtered = filtered.filter(agent =>\n (agent.Name || '').toLowerCase().includes(searchTerm) ||\n (agent.Description || '').toLowerCase().includes(searchTerm)\n );\n }\n\n // Apply agent type filter\n if (this.currentFilters.agentType !== 'all') {\n filtered = filtered.filter(agent => UUIDsEqual(agent.TypeID, this.currentFilters.agentType));\n }\n\n // Apply parent agent filter\n if (this.currentFilters.parentAgent !== 'all') {\n if (this.currentFilters.parentAgent === 'none') {\n filtered = filtered.filter(agent => !agent.ParentID);\n } else {\n filtered = filtered.filter(agent => UUIDsEqual(agent.ParentID, this.currentFilters.parentAgent));\n }\n }\n\n // Apply status filter\n if (this.currentFilters.status !== 'all') {\n const wantActive = this.currentFilters.status === 'active';\n if (wantActive) {\n filtered = filtered.filter(agent => agent.Status === 'Active');\n } else {\n filtered = filtered.filter(agent => agent.Status !== 'Active');\n }\n }\n\n // Apply execution mode filter\n if (this.currentFilters.executionMode !== 'all') {\n filtered = filtered.filter(agent => agent.ExecutionMode === this.currentFilters.executionMode);\n }\n\n // Apply expose as action filter\n if (this.currentFilters.exposeAsAction !== 'all') {\n const isExposed = this.currentFilters.exposeAsAction === 'true';\n filtered = filtered.filter(agent => agent.ExposeAsAction === isExposed);\n }\n\n // Apply category filter — match the selected category or any of its descendants\n if (this.currentFilters.categoryId !== 'all') {\n const matchingIds = this.getCategoryAndDescendantIds(this.currentFilters.categoryId);\n filtered = filtered.filter(agent => {\n const agentCatId = agent.CategoryID;\n return agentCatId != null && matchingIds.some(id => UUIDsEqual(id, agentCatId));\n });\n }\n\n // Apply sorting\n filtered = this.applySorting(filtered);\n\n this.filteredAgents = filtered;\n }\n\n /**\n * Sort the agents by the specified column\n */\n public sortBy(column: string): void {\n if (this.sortColumn === column) {\n // Toggle direction if same column\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n // New column, default to ascending\n this.sortColumn = column;\n this.sortDirection = 'asc';\n }\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Apply sorting to the filtered list\n */\n private applySorting(agents: MJAIAgentEntityExtended[]): MJAIAgentEntityExtended[] {\n return agents.sort((a, b) => {\n let valueA: string | boolean | null | undefined;\n let valueB: string | boolean | null | undefined;\n\n switch (this.sortColumn) {\n case 'Name':\n valueA = a.Name;\n valueB = b.Name;\n break;\n case 'Status':\n valueA = a.Status;\n valueB = b.Status;\n break;\n case 'ExecutionMode':\n valueA = a.ExecutionMode;\n valueB = b.ExecutionMode;\n break;\n default:\n valueA = a.Name;\n valueB = b.Name;\n }\n\n // Handle null/undefined values\n const strA = (valueA ?? '').toString().toLowerCase();\n const strB = (valueB ?? '').toString().toLowerCase();\n\n let comparison = strA.localeCompare(strB);\n return this.sortDirection === 'desc' ? -comparison : comparison;\n });\n }\n\n private emitStateChange(): void {\n // State change handling - could be used for persisting user preferences in the future\n // For now, just a placeholder for tracking state changes\n }\n\n public setViewMode(mode: 'grid' | 'list' | 'tree'): void {\n this.viewMode = mode;\n this.emitStateChange();\n this.saveUserPreferencesDebounced();\n }\n\n public toggleAgentExpansion(agentId: string): void {\n this.expandedAgentId = this.expandedAgentId === agentId ? null : agentId;\n }\n\n /**\n * Show the detail panel for an agent\n */\n public showAgentDetails(agent: MJAIAgentEntityExtended, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.selectedAgent = agent;\n this.detailPanelVisible = true;\n }\n\n /**\n * Close the detail panel\n */\n public closeDetailPanel(): void {\n this.detailPanelVisible = false;\n // Delay clearing selectedAgent for smoother animation\n setTimeout(() => {\n if (!this.detailPanelVisible) {\n this.selectedAgent = null;\n }\n }, 300);\n }\n\n /**\n * Open the full entity record from the detail panel\n */\n public openAgentFromPanel(): void {\n if (this.selectedAgent) {\n this.openAgentRecord(this.selectedAgent.ID);\n }\n }\n\n /**\n * Get the parent agent name if it exists\n */\n public getParentAgentName(agent: MJAIAgentEntityExtended): string | null {\n if (!agent.ParentID) return null;\n const parent = this.agents.find(a => UUIDsEqual(a.ID, agent.ParentID));\n return parent?.Name || 'Unknown Parent';\n }\n\n /**\n * Get agent type name\n */\n public getAgentTypeName(agent: MJAIAgentEntityExtended): string {\n return agent.Type || 'Standard Agent';\n }\n\n public openAgentRecord(agentId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: agentId }]);\n this.navigationService.OpenEntityRecord('MJ: AI Agents', compositeKey);\n }\n\n /**\n * Opens the create agent slide-in panel. Upon successful creation,\n * saves the agent and navigates to the new record.\n */\n public createNewAgent(): void {\n this.createAgentService.OpenSlideIn({\n Title: 'Create New Agent'\n }).pipe(takeUntil(this.destroy$)).subscribe({\n next: async (dialogResult: CreateAgentDialogResult) => {\n if (!dialogResult.Cancelled && dialogResult.Result) {\n await this.handleAgentCreated(dialogResult.Result);\n }\n },\n error: (error) => {\n console.error('Error in create agent slide-in:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening agent creation panel. Please try again.',\n 'error',\n 3000\n );\n }\n });\n }\n\n /**\n * Handles the result from the create agent slide-in.\n * Saves the agent and navigates to the new record.\n */\n private async handleAgentCreated(result: CreateAgentResult): Promise<void> {\n try {\n const agent = result.Agent;\n\n // Create agent + linked prompts + linked actions in one atomic transaction.\n // agent.ID is assigned client-side by NewRecord() so we can use it on child records before submit.\n const md = this.ProviderToUse;\n const tg = await md.CreateTransactionGroup();\n\n agent.TransactionGroup = tg;\n await agent.Save();\n\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n agentPrompt.AgentID = agent.ID;\n agentPrompt.TransactionGroup = tg;\n await agentPrompt.Save();\n }\n }\n\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n agentAction.AgentID = agent.ID;\n agentAction.TransactionGroup = tg;\n await agentAction.Save();\n }\n }\n\n if (!await tg.Submit()) {\n throw new Error('Failed to save agent — all changes have been rolled back');\n }\n\n // Refresh the agent list\n await AIEngineBase.Instance.Config(true); // Force refresh\n await this.loadAgents();\n this.applyFilters();\n\n // Navigate to the new agent record\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: agent.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Agents', compositeKey);\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Agent \"${agent.Name}\" created successfully`,\n 'success',\n 3000\n );\n } catch (error) {\n console.error('Error saving created agent:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error saving agent. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public runAgent(agent: MJAIAgentEntityExtended): void {\n // Use the test harness service for window management features\n this.testHarnessService.openForAgent(agent.ID);\n }\n\n public closeTestHarness(): void {\n // No longer needed - window manages its own closure\n this.selectedAgentForTest = null;\n }\n\n public getAgentIconColor(agent: MJAIAgentEntityExtended): string {\n // Generate a consistent color based on agent properties\n const colors = ['#17a2b8', '#28a745', '#ffc107', '#dc3545', '#6c757d', '#007bff'];\n const index = (agent.Name?.charCodeAt(0) || 0) % colors.length;\n return colors[index];\n }\n\n public onOpenRecord(entityName: string, recordId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: recordId }]);\n this.navigationService.OpenEntityRecord(entityName, compositeKey);\n }\n\n public getExecutionModeColor(mode: string): string {\n switch (mode) {\n case 'Sequential': return 'info';\n case 'Parallel': return 'success';\n default: return 'info';\n }\n }\n\n public getExecutionModeIcon(mode: string): string {\n switch (mode) {\n case 'Sequential': return 'fa-solid fa-list-ol';\n case 'Parallel': return 'fa-solid fa-layer-group';\n default: return 'fa-solid fa-robot';\n }\n }\n\n /**\n * Gets the agent's display icon\n * Prioritizes LogoURL, falls back to IconClass, then default robot icon\n */\n public getAgentIcon(agent: MJAIAgentEntityExtended): string {\n if (agent?.LogoURL) {\n // LogoURL is used in img tag, not here\n return '';\n }\n return agent?.IconClass || 'fa-solid fa-robot';\n }\n\n /**\n * Checks if the agent has a logo URL (for image display)\n */\n public hasLogoURL(agent: MJAIAgentEntityExtended): boolean {\n return !!agent?.LogoURL;\n }\n\n // ========================================\n // Category Tree View (mj-tree)\n // ========================================\n\n /** Lightweight category row for descendant filtering */\n private categories: { ID: string; ParentID: string | null }[] = [];\n\n /** Load categories for descendant-based filter matching */\n private async loadCategories(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ ID: string; ParentID: string | null }>({\n EntityName: 'MJ: AI Agent Categories',\n Fields: ['ID', 'ParentID'],\n ExtraFilter: \"Status='Active'\",\n ResultType: 'simple'\n });\n if (result.Success) {\n this.categories = result.Results;\n }\n } catch (error) {\n console.error('[AgentConfiguration] Error loading categories:', error);\n }\n }\n\n /** Get a category and all its descendant IDs (for inclusive filtering) */\n private getCategoryAndDescendantIds(categoryId: string): string[] {\n const ids = [categoryId];\n const children = this.categories.filter(c => c.ParentID && UUIDsEqual(c.ParentID, categoryId));\n for (const child of children) {\n ids.push(...this.getCategoryAndDescendantIds(child.ID));\n }\n return ids;\n }\n\n /** Handle click on a tree node — open detail panel for agents */\n public onTreeNodeClick(event: AfterNodeClickEventArgs): void {\n const node = event.Node;\n if (node.Type === 'leaf') {\n const agent = this.agents.find(a => UUIDsEqual(a.ID, node.ID));\n if (agent) {\n this.showAgentDetails(agent);\n }\n }\n }\n\n /** Handle double-click on a tree node — open full record for agents */\n public onTreeNodeDoubleClick(event: AfterNodeDoubleClickEventArgs): void {\n const node = event.Node;\n if (node.Type === 'leaf') {\n this.openAgentRecord(node.ID);\n }\n }\n\n // === BaseResourceComponent Required Methods ===\n\n /**\n * Get the display name for this resource\n */\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Agents';\n }\n\n /**\n * Get the icon class for this resource\n */\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-robot';\n }\n}","<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 -->"]}
|
|
1
|
+
{"version":3,"file":"agent-configuration.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-configuration.component.ts","../../../../src/AI/components/agents/agent-configuration.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnDestroy, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Metadata, CompositeKey, RunView } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { AITestHarnessDialogService } from '@memberjunction/ng-ai-test-harness';\nimport { CreateAgentService, CreateAgentDialogResult, CreateAgentResult } from '@memberjunction/ng-agents';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { TreeBranchConfig, TreeLeafConfig, AfterNodeClickEventArgs, AfterNodeDoubleClickEventArgs } from '@memberjunction/ng-trees';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n\ninterface AgentFilter {\n searchTerm: string;\n agentType: string;\n parentAgent: string;\n status: string;\n executionMode: string;\n exposeAsAction: string;\n categoryId: string;\n}\n\n\n/**\n * User preferences for the Agent Configuration dashboard\n */\ninterface AgentConfigurationUserPreferences {\n filterPanelVisible: boolean;\n viewMode: 'grid' | 'list' | 'tree';\n sortColumn: string;\n sortDirection: 'asc' | 'desc';\n filters: AgentFilter;\n}\n/**\n * AI Agents Resource - displays AI agent configuration and management\n * Extends BaseResourceComponent to work with the resource type system\n */\n@RegisterClass(BaseResourceComponent, 'AIAgentsResource')\n@Component({\n standalone: false,\n selector: 'app-agent-configuration',\n templateUrl: './agent-configuration.component.html',\n styleUrls: ['./agent-configuration.component.css']\n})\nexport class AgentConfigurationComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n // Settings persistence\n private readonly USER_SETTINGS_KEY = 'AI.Agents.UserPreferences';\n private settingsPersistSubject = new Subject<void>();\n protected override destroy$ = new Subject<void>();\n private settingsLoaded = false;\n\n public isLoading = false;\n public filterPanelVisible = true;\n public viewMode: 'grid' | 'list' | 'tree' = 'grid';\n public expandedAgentId: string | null = null;\n\n public agents: MJAIAgentEntityExtended[] = [];\n public filteredAgents: MJAIAgentEntityExtended[] = [];\n\n // Detail panel\n public selectedAgent: MJAIAgentEntityExtended | null = null;\n public detailPanelVisible = false;\n\n // Sorting state\n public sortColumn: string = 'Name';\n public sortDirection: 'asc' | 'desc' = 'asc';\n\n public currentFilters: AgentFilter = {\n searchTerm: '',\n agentType: 'all',\n parentAgent: 'all',\n status: 'all',\n executionMode: 'all',\n exposeAsAction: 'all',\n categoryId: 'all'\n };\n\n /** Static option arrays for the shared mj-filter-panel. */\n public readonly statusOptions = [\n { text: 'All Statuses', value: 'all' },\n { text: 'Active', value: 'active' },\n { text: 'Inactive', value: 'inactive' },\n ];\n public readonly executionModeOptions = [\n { text: 'All Execution Modes', value: 'all' },\n { text: 'Sequential', value: 'Sequential' },\n { text: 'Parallel', value: 'Parallel' },\n ];\n public readonly exposeAsActionOptions = [\n { text: 'All Agents', value: 'all' },\n { text: 'Exposed as Action', value: 'true' },\n { text: 'Not Exposed', value: 'false' },\n ];\n\n /** Dynamic agent-type options built from AIEngineBase metadata. */\n public get agentTypeOptions(): { text: string; value: string }[] {\n const aiEngine = AIEngineBase.Instance;\n const types = aiEngine?.AgentTypes ?? [];\n return [\n { text: 'All Types', value: 'all' },\n ...types.map(t => ({ text: t.Name, value: t.ID })),\n ];\n }\n\n /** Dynamic parent-agent options built from the loaded agents (top-level only). */\n public get parentAgentOptions(): { text: string; value: string }[] {\n return [\n { text: 'All Agents', value: 'all' },\n { text: 'No Parent', value: 'none' },\n ...this.agents\n .filter(a => !a.ParentID)\n .map(a => ({ text: a.Name || 'Unnamed Agent', value: a.ID })),\n ];\n }\n\n /** View-mode options for the shared <mj-view-toggle>. */\n public readonly agentViewOptions = [\n { key: 'grid', icon: 'fa-solid fa-grip', title: 'Grid View' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List View' },\n { key: 'tree', icon: 'fa-solid fa-folder-tree', title: 'Category Tree View' },\n ];\n\n /** Field config consumed by the centralized <mj-filter-panel>. */\n public get agentFilterFields(): FilterFieldConfig[] {\n return [\n { key: 'agentType', type: 'dropdown', label: 'Type', icon: 'fa-solid fa-robot', options: this.agentTypeOptions },\n { key: 'parentAgent', type: 'dropdown', label: 'Parent', icon: 'fa-solid fa-sitemap', options: this.parentAgentOptions, filterable: this.parentAgentOptions.length > 10 },\n { key: 'status', type: 'dropdown', label: 'Status', icon: 'fa-solid fa-toggle-on', options: this.statusOptions },\n { key: 'executionMode', type: 'dropdown', label: 'Execution Mode', icon: 'fa-solid fa-list-ol', options: this.executionModeOptions },\n { key: 'exposeAsAction', type: 'dropdown', label: 'Action Exposure', icon: 'fa-solid fa-share', options: this.exposeAsActionOptions },\n ];\n }\n\n /** Current category selection for the tree dropdown (Category is projected into mj-filter-panel as a custom widget). */\n public SelectedCategoryKey: CompositeKey | null = null;\n\n /**\n * Timestamp of last real (non-null) category set. Used to swallow spurious\n * null re-emits from <mj-tree-dropdown> that arrive milliseconds after a\n * real selection — without the guard, the spurious null resets categoryId\n * to 'all' before the user sees the filtered list, making the Category\n * filter appear broken. See onCategoryChange below.\n */\n private _lastCategorySetAt = 0;\n\n /** Handler for the projected mj-tree-dropdown — extracts the entity ID from the CompositeKey. */\n public onCategoryChange(value: CompositeKey | CompositeKey[] | null): void {\n // Duck-typed extraction — works whether tree-dropdown emits a real\n // CompositeKey instance or a plain object (it's currently the latter\n // when projected inside <mj-filter-panel>). Single-PK entities: take\n // the first KVP's Value; FieldName varies by entity so positional is\n // safer than name-matching.\n const single = !value || Array.isArray(value) ? null : value;\n\n // Swallow the spurious null re-emit that <mj-tree-dropdown> fires within\n // a few milliseconds of a real selection (confirmed empirically — the\n // null arrives ~2ms after the real CompositeKey). Without this guard, the\n // null resets categoryId to 'all' and the filter never narrows. A 100ms\n // window is short enough to never interfere with a deliberate user clear.\n const now = Date.now();\n if (single == null && (now - this._lastCategorySetAt) < 100) {\n return;\n }\n\n const idValue = single?.KeyValuePairs?.[0]?.Value;\n this.currentFilters = {\n ...this.currentFilters,\n categoryId: (idValue != null && idValue !== '') ? String(idValue) : 'all'\n };\n if (single != null) {\n this._lastCategorySetAt = now;\n }\n this.SelectedCategoryKey = single;\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n /** Receive the updated values record from <mj-filter-panel> and apply it. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n // Preserve fields the panel doesn't own (searchTerm comes from toolbar, categoryId from tree-dropdown handler)\n this.currentFilters = {\n ...this.currentFilters,\n agentType: (values['agentType'] as string) ?? 'all',\n parentAgent: (values['parentAgent'] as string) ?? 'all',\n status: (values['status'] as string) ?? 'all',\n executionMode: (values['executionMode'] as string) ?? 'all',\n exposeAsAction: (values['exposeAsAction'] as string) ?? 'all',\n };\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n /** Number of currently-applied filter criteria inside the popover (excludes searchTerm — surfaced separately in the header). */\n public get ActiveFilterCount(): number {\n const f = this.currentFilters;\n let n = 0;\n if (f.agentType && f.agentType !== 'all') n++;\n if (f.parentAgent && f.parentAgent !== 'all') n++;\n if (f.status && f.status !== 'all') n++;\n if (f.executionMode && f.executionMode !== 'all') n++;\n if (f.exposeAsAction && f.exposeAsAction !== 'all') n++;\n if (f.categoryId && f.categoryId !== 'all') n++;\n return n;\n }\n\n public selectedAgentForTest: MJAIAgentEntityExtended | null = null;\n\n // mj-tree configuration for category tree view\n public CategoryBranchConfig: TreeBranchConfig = {\n EntityName: 'MJ: AI Agent Categories',\n DisplayField: 'Name',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n DescriptionField: 'Description',\n ExtraFilter: \"Status='Active'\",\n OrderBy: 'Name ASC'\n };\n\n public AgentLeafConfig: TreeLeafConfig = {\n EntityName: 'MJ: AI Agents',\n ParentField: 'CategoryID',\n DisplayField: 'Name',\n DefaultIcon: 'fa-solid fa-robot',\n IconField: 'IconClass',\n DescriptionField: 'Type',\n BadgeField: 'Status',\n OrderBy: 'Name ASC'\n };\n\n // === Permission Checks ===\n /** Cache for permission checks to avoid repeated calculations */\n private _permissionCache = new Map<string, boolean>();\n private _metadata = this.ProviderToUse;\n\n /** Check if user can create AI Agents */\n public get UserCanCreateAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Create');\n }\n\n /** Check if user can read AI Agents */\n public get UserCanReadAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Read');\n }\n\n /** Check if user can update AI Agents */\n public get UserCanUpdateAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Update');\n }\n\n /** Check if user can delete AI Agents */\n public get UserCanDeleteAgents(): boolean {\n return this.checkEntityPermission('MJ: AI Agents', 'Delete');\n }\n\n /**\n * Helper method to check entity permissions with caching\n * @param entityName - The name of the entity to check permissions for\n * @param permissionType - The type of permission to check (Create, Read, Update, Delete)\n * @returns boolean indicating if user has the permission\n */\n private checkEntityPermission(entityName: string, permissionType: 'Create' | 'Read' | 'Update' | 'Delete'): boolean {\n const cacheKey = `${entityName}_${permissionType}`;\n \n if (this._permissionCache.has(cacheKey)) {\n return this._permissionCache.get(cacheKey)!;\n }\n\n try {\n const entityInfo = this._metadata.Entities.find(e => e.Name === entityName);\n \n if (!entityInfo) {\n console.warn(`Entity '${entityName}' not found for permission check`);\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n\n const userPermissions = entityInfo.GetUserPermisions(this._metadata.CurrentUser);\n let hasPermission = false;\n\n switch (permissionType) {\n case 'Create':\n hasPermission = userPermissions.CanCreate;\n break;\n case 'Read':\n hasPermission = userPermissions.CanRead;\n break;\n case 'Update':\n hasPermission = userPermissions.CanUpdate;\n break;\n case 'Delete':\n hasPermission = userPermissions.CanDelete;\n break;\n }\n\n this._permissionCache.set(cacheKey, hasPermission);\n return hasPermission;\n } catch (error) {\n console.error(`Error checking ${permissionType} permission for ${entityName}:`, error);\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n }\n\n /**\n * Clears the permission cache. Call this when user context changes or permissions are updated.\n */\n public clearPermissionCache(): void {\n this._permissionCache.clear();\n }\n\n constructor(\n private testHarnessService: AITestHarnessDialogService,\n private createAgentService: CreateAgentService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n\n // Set up debounced settings persistence\n this.settingsPersistSubject.pipe(\n debounceTime(500),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.persistUserPreferences();\n });\n }\n\n async ngAfterViewInit() {\n // Load saved user preferences first\n this.loadUserPreferences();\n\n // Apply initial state from resource configuration if provided (overrides saved prefs)\n if (this.Data?.Configuration) {\n this.applyInitialState(this.Data.Configuration);\n }\n\n // Load agents and categories in parallel\n await Promise.all([\n this.loadAgents(),\n this.loadCategories()\n ]);\n\n // Apply filters after data is loaded (uses saved preferences)\n this.applyFilters();\n this.cdr.detectChanges();\n\n // Notify that the resource has finished loading\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ========================================\n // User Settings Persistence\n // ========================================\n\n /**\n * Load saved user preferences from the UserInfoEngine\n */\n private loadUserPreferences(): void {\n try {\n const savedPrefs = UserInfoEngine.Instance.GetSetting(this.USER_SETTINGS_KEY);\n if (savedPrefs) {\n const prefs = JSON.parse(savedPrefs) as AgentConfigurationUserPreferences;\n this.applyUserPreferences(prefs);\n }\n } catch (error) {\n console.warn('[AgentConfiguration] Failed to load user preferences:', error);\n } finally {\n this.settingsLoaded = true;\n }\n }\n\n /**\n * Apply loaded preferences to component state\n */\n private applyUserPreferences(prefs: AgentConfigurationUserPreferences): void {\n if (prefs.filterPanelVisible !== undefined) {\n this.filterPanelVisible = prefs.filterPanelVisible;\n }\n if (prefs.viewMode) {\n this.viewMode = prefs.viewMode;\n }\n if (prefs.sortColumn) {\n this.sortColumn = prefs.sortColumn;\n }\n if (prefs.sortDirection) {\n this.sortDirection = prefs.sortDirection;\n }\n if (prefs.filters) {\n this.currentFilters = {\n searchTerm: prefs.filters.searchTerm || '',\n agentType: prefs.filters.agentType || 'all',\n parentAgent: prefs.filters.parentAgent || 'all',\n status: prefs.filters.status || 'all',\n executionMode: prefs.filters.executionMode || 'all',\n exposeAsAction: prefs.filters.exposeAsAction || 'all',\n categoryId: prefs.filters.categoryId || 'all'\n };\n }\n }\n\n /**\n * Get current preferences as an object for saving\n */\n private getCurrentPreferences(): AgentConfigurationUserPreferences {\n return {\n filterPanelVisible: this.filterPanelVisible,\n viewMode: this.viewMode,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n filters: {\n ...this.currentFilters\n }\n };\n }\n\n /**\n * Persist user preferences to storage (debounced)\n */\n private saveUserPreferencesDebounced(): void {\n if (!this.settingsLoaded) return; // Don't save during initial load\n this.settingsPersistSubject.next();\n }\n\n /**\n * Actually persist user preferences to the UserInfoEngine\n */\n private async persistUserPreferences(): Promise<void> {\n try {\n const prefs = this.getCurrentPreferences();\n await UserInfoEngine.Instance.SetSetting(this.USER_SETTINGS_KEY, JSON.stringify(prefs));\n } catch (error) {\n console.warn('[AgentConfiguration] Failed to persist user preferences:', error);\n }\n }\n\n private applyInitialState(state: any): void {\n if (state.filterPanelVisible !== undefined) {\n this.filterPanelVisible = state.filterPanelVisible;\n }\n if (state.viewMode) {\n this.viewMode = state.viewMode;\n }\n if (state.expandedAgentId) {\n this.expandedAgentId = state.expandedAgentId;\n }\n if (state.currentFilters) {\n this.currentFilters = { ...this.currentFilters, ...state.currentFilters };\n }\n }\n\n private async loadAgents(): Promise<void> {\n try {\n this.isLoading = true;\n\n // Ensure AIEngineBase is configured (no-op if already loaded)\n await AIEngineBase.Instance.Config(false);\n\n // Get cached agents from AIEngineBase\n this.agents = AIEngineBase.Instance.Agents;\n this.filteredAgents = [...this.agents];\n } catch (error) {\n console.error('Error loading AI agents:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n public toggleFilterPanel(): void {\n this.filterPanelVisible = !this.filterPanelVisible;\n this.emitStateChange();\n this.saveUserPreferencesDebounced();\n }\n\n public onMainSplitterChange(_event: any): void {\n this.emitStateChange();\n }\n\n public onFiltersChange(filters: AgentFilter): void {\n this.currentFilters = { ...filters };\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n public onFilterChange(): void {\n this.applyFilters();\n }\n\n /** Handler for the inline mj-page-search input in the page-header toolbar. */\n public onSearchTermChange(value: string): void {\n this.currentFilters = { ...this.currentFilters, searchTerm: value ?? '' };\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n public onResetFilters(): void {\n this.currentFilters = {\n searchTerm: '',\n agentType: 'all',\n parentAgent: 'all',\n status: 'all',\n executionMode: 'all',\n exposeAsAction: 'all',\n categoryId: 'all'\n };\n // Clear the tree-dropdown's bound value too — otherwise the dropdown\n // visually still shows the previous category after Reset (the value\n // input drives its internal display state).\n this.SelectedCategoryKey = null;\n this._lastCategorySetAt = 0;\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n private applyFilters(): void {\n let filtered = [...this.agents];\n\n // Apply search filter (name contains)\n if (this.currentFilters.searchTerm) {\n const searchTerm = this.currentFilters.searchTerm.toLowerCase();\n filtered = filtered.filter(agent =>\n (agent.Name || '').toLowerCase().includes(searchTerm) ||\n (agent.Description || '').toLowerCase().includes(searchTerm)\n );\n }\n\n // Apply agent type filter\n if (this.currentFilters.agentType !== 'all') {\n filtered = filtered.filter(agent => UUIDsEqual(agent.TypeID, this.currentFilters.agentType));\n }\n\n // Apply parent agent filter\n if (this.currentFilters.parentAgent !== 'all') {\n if (this.currentFilters.parentAgent === 'none') {\n filtered = filtered.filter(agent => !agent.ParentID);\n } else {\n filtered = filtered.filter(agent => UUIDsEqual(agent.ParentID, this.currentFilters.parentAgent));\n }\n }\n\n // Apply status filter\n if (this.currentFilters.status !== 'all') {\n const wantActive = this.currentFilters.status === 'active';\n if (wantActive) {\n filtered = filtered.filter(agent => agent.Status === 'Active');\n } else {\n filtered = filtered.filter(agent => agent.Status !== 'Active');\n }\n }\n\n // Apply execution mode filter\n if (this.currentFilters.executionMode !== 'all') {\n filtered = filtered.filter(agent => agent.ExecutionMode === this.currentFilters.executionMode);\n }\n\n // Apply expose as action filter\n if (this.currentFilters.exposeAsAction !== 'all') {\n const isExposed = this.currentFilters.exposeAsAction === 'true';\n filtered = filtered.filter(agent => agent.ExposeAsAction === isExposed);\n }\n\n // Apply category filter — match the selected category or any of its descendants\n if (this.currentFilters.categoryId !== 'all') {\n const matchingIds = this.getCategoryAndDescendantIds(this.currentFilters.categoryId);\n filtered = filtered.filter(agent => {\n const agentCatId = agent.CategoryID;\n return agentCatId != null && matchingIds.some(id => UUIDsEqual(id, agentCatId));\n });\n }\n\n // Apply sorting\n filtered = this.applySorting(filtered);\n\n this.filteredAgents = filtered;\n }\n\n /**\n * Sort the agents by the specified column\n */\n public sortBy(column: string): void {\n if (this.sortColumn === column) {\n // Toggle direction if same column\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n // New column, default to ascending\n this.sortColumn = column;\n this.sortDirection = 'asc';\n }\n this.applyFilters();\n this.saveUserPreferencesDebounced();\n }\n\n /**\n * Apply sorting to the filtered list\n */\n private applySorting(agents: MJAIAgentEntityExtended[]): MJAIAgentEntityExtended[] {\n return agents.sort((a, b) => {\n let valueA: string | boolean | null | undefined;\n let valueB: string | boolean | null | undefined;\n\n switch (this.sortColumn) {\n case 'Name':\n valueA = a.Name;\n valueB = b.Name;\n break;\n case 'Status':\n valueA = a.Status;\n valueB = b.Status;\n break;\n case 'ExecutionMode':\n valueA = a.ExecutionMode;\n valueB = b.ExecutionMode;\n break;\n default:\n valueA = a.Name;\n valueB = b.Name;\n }\n\n // Handle null/undefined values\n const strA = (valueA ?? '').toString().toLowerCase();\n const strB = (valueB ?? '').toString().toLowerCase();\n\n let comparison = strA.localeCompare(strB);\n return this.sortDirection === 'desc' ? -comparison : comparison;\n });\n }\n\n private emitStateChange(): void {\n // State change handling - could be used for persisting user preferences in the future\n // For now, just a placeholder for tracking state changes\n }\n\n public setViewMode(mode: 'grid' | 'list' | 'tree'): void {\n this.viewMode = mode;\n this.emitStateChange();\n this.saveUserPreferencesDebounced();\n }\n\n public toggleAgentExpansion(agentId: string): void {\n this.expandedAgentId = this.expandedAgentId === agentId ? null : agentId;\n }\n\n /**\n * Show the detail panel for an agent\n */\n public showAgentDetails(agent: MJAIAgentEntityExtended, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.selectedAgent = agent;\n this.detailPanelVisible = true;\n }\n\n /**\n * Close the detail panel\n */\n public closeDetailPanel(): void {\n this.detailPanelVisible = false;\n // Delay clearing selectedAgent for smoother animation\n setTimeout(() => {\n if (!this.detailPanelVisible) {\n this.selectedAgent = null;\n }\n }, 300);\n }\n\n /**\n * Open the full entity record from the detail panel\n */\n public openAgentFromPanel(): void {\n if (this.selectedAgent) {\n this.openAgentRecord(this.selectedAgent.ID);\n }\n }\n\n /**\n * Get the parent agent name if it exists\n */\n public getParentAgentName(agent: MJAIAgentEntityExtended): string | null {\n if (!agent.ParentID) return null;\n const parent = this.agents.find(a => UUIDsEqual(a.ID, agent.ParentID));\n return parent?.Name || 'Unknown Parent';\n }\n\n /**\n * Get agent type name\n */\n public getAgentTypeName(agent: MJAIAgentEntityExtended): string {\n return agent.Type || 'Standard Agent';\n }\n\n public openAgentRecord(agentId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: agentId }]);\n this.navigationService.OpenEntityRecord('MJ: AI Agents', compositeKey);\n }\n\n /**\n * Opens the create agent slide-in panel. Upon successful creation,\n * saves the agent and navigates to the new record.\n */\n public createNewAgent(): void {\n this.createAgentService.OpenSlideIn({\n Title: 'Create New Agent'\n }).pipe(takeUntil(this.destroy$)).subscribe({\n next: async (dialogResult: CreateAgentDialogResult) => {\n if (!dialogResult.Cancelled && dialogResult.Result) {\n await this.handleAgentCreated(dialogResult.Result);\n }\n },\n error: (error) => {\n console.error('Error in create agent slide-in:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error opening agent creation panel. Please try again.',\n 'error',\n 3000\n );\n }\n });\n }\n\n /**\n * Handles the result from the create agent slide-in.\n * Saves the agent and navigates to the new record.\n */\n private async handleAgentCreated(result: CreateAgentResult): Promise<void> {\n try {\n const agent = result.Agent;\n\n // Create agent + linked prompts + linked actions in one atomic transaction.\n // agent.ID is assigned client-side by NewRecord() so we can use it on child records before submit.\n const md = this.ProviderToUse;\n const tg = await md.CreateTransactionGroup();\n\n agent.TransactionGroup = tg;\n await agent.Save();\n\n if (result.AgentPrompts && result.AgentPrompts.length > 0) {\n for (const agentPrompt of result.AgentPrompts) {\n agentPrompt.AgentID = agent.ID;\n agentPrompt.TransactionGroup = tg;\n await agentPrompt.Save();\n }\n }\n\n if (result.AgentActions && result.AgentActions.length > 0) {\n for (const agentAction of result.AgentActions) {\n agentAction.AgentID = agent.ID;\n agentAction.TransactionGroup = tg;\n await agentAction.Save();\n }\n }\n\n if (!await tg.Submit()) {\n throw new Error('Failed to save agent — all changes have been rolled back');\n }\n\n // Refresh the agent list\n await AIEngineBase.Instance.Config(true); // Force refresh\n await this.loadAgents();\n this.applyFilters();\n\n // Navigate to the new agent record\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: agent.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Agents', compositeKey);\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Agent \"${agent.Name}\" created successfully`,\n 'success',\n 3000\n );\n } catch (error) {\n console.error('Error saving created agent:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error saving agent. Please try again.',\n 'error',\n 3000\n );\n }\n }\n\n public runAgent(agent: MJAIAgentEntityExtended): void {\n // Use the test harness service for window management features\n this.testHarnessService.openForAgent(agent.ID);\n }\n\n public closeTestHarness(): void {\n // No longer needed - window manages its own closure\n this.selectedAgentForTest = null;\n }\n\n public getAgentIconColor(agent: MJAIAgentEntityExtended): string {\n // Generate a consistent color based on agent properties\n const colors = ['#17a2b8', '#28a745', '#ffc107', '#dc3545', '#6c757d', '#007bff'];\n const index = (agent.Name?.charCodeAt(0) || 0) % colors.length;\n return colors[index];\n }\n\n public onOpenRecord(entityName: string, recordId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: recordId }]);\n this.navigationService.OpenEntityRecord(entityName, compositeKey);\n }\n\n public getExecutionModeColor(mode: string): string {\n switch (mode) {\n case 'Sequential': return 'info';\n case 'Parallel': return 'success';\n default: return 'info';\n }\n }\n\n public getExecutionModeIcon(mode: string): string {\n switch (mode) {\n case 'Sequential': return 'fa-solid fa-list-ol';\n case 'Parallel': return 'fa-solid fa-layer-group';\n default: return 'fa-solid fa-robot';\n }\n }\n\n /**\n * Gets the agent's display icon\n * Prioritizes LogoURL, falls back to IconClass, then default robot icon\n */\n public getAgentIcon(agent: MJAIAgentEntityExtended): string {\n if (agent?.LogoURL) {\n // LogoURL is used in img tag, not here\n return '';\n }\n return agent?.IconClass || 'fa-solid fa-robot';\n }\n\n /**\n * Checks if the agent has a logo URL (for image display)\n */\n public hasLogoURL(agent: MJAIAgentEntityExtended): boolean {\n return !!agent?.LogoURL;\n }\n\n // ========================================\n // Category Tree View (mj-tree)\n // ========================================\n\n /** Lightweight category row for descendant filtering */\n private categories: { ID: string; ParentID: string | null }[] = [];\n\n /** Load categories for descendant-based filter matching */\n private async loadCategories(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ ID: string; ParentID: string | null }>({\n EntityName: 'MJ: AI Agent Categories',\n Fields: ['ID', 'ParentID'],\n ExtraFilter: \"Status='Active'\",\n ResultType: 'simple'\n });\n if (result.Success) {\n this.categories = result.Results;\n }\n } catch (error) {\n console.error('[AgentConfiguration] Error loading categories:', error);\n }\n }\n\n /** Get a category and all its descendant IDs (for inclusive filtering) */\n private getCategoryAndDescendantIds(categoryId: string): string[] {\n const ids = [categoryId];\n const children = this.categories.filter(c => c.ParentID && UUIDsEqual(c.ParentID, categoryId));\n for (const child of children) {\n ids.push(...this.getCategoryAndDescendantIds(child.ID));\n }\n return ids;\n }\n\n /** Handle click on a tree node — open detail panel for agents */\n public onTreeNodeClick(event: AfterNodeClickEventArgs): void {\n const node = event.Node;\n if (node.Type === 'leaf') {\n const agent = this.agents.find(a => UUIDsEqual(a.ID, node.ID));\n if (agent) {\n this.showAgentDetails(agent);\n }\n }\n }\n\n /** Handle double-click on a tree node — open full record for agents */\n public onTreeNodeDoubleClick(event: AfterNodeDoubleClickEventArgs): void {\n const node = event.Node;\n if (node.Type === 'leaf') {\n this.openAgentRecord(node.ID);\n }\n }\n\n // === BaseResourceComponent Required Methods ===\n\n /**\n * Get the display name for this resource\n */\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Agents';\n }\n\n /**\n * Get the icon class for this resource\n */\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-robot';\n }\n}","<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agents\"\n Icon=\"fa-solid fa-robot\">\n <div meta>\n <mj-stat-badge [Count]=\"filteredAgents.length\" Label=\"agents\"></mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"onResetFilters()\">\n <mj-filter-panel\n [Fields]=\"agentFilterFields\"\n [Values]=\"$any(currentFilters)\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"onResetFilters()\">\n <!-- Custom widget: Category uses a tree-dropdown, projected via mj-filter-field -->\n <mj-filter-field Label=\"Category\" Icon=\"fa-solid fa-folder-tree\">\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"All Categories\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"onCategoryChange($event)\">\n </mj-tree-dropdown>\n </mj-filter-field>\n </mj-filter-panel>\n </mj-filter-popover>\n\n <mj-view-toggle\n [Options]=\"agentViewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewAgent()\" title=\"Create New Agent\">\n <i class=\"fa-solid fa-plus\"></i>\n New Agent\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search agents...\"\n [Value]=\"currentFilters.searchTerm\"\n (ValueChange)=\"onSearchTermChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <!-- Main Content (no sidebar — filters live in the popover above) -->\n <mj-page-body [Flex]=\"true\">\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 </mj-page-body>\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</mj-page-layout>\n\n<!-- AI Agent Test Harness - Now handled by service with minimize support -->"]}
|
|
@@ -46,10 +46,16 @@ interface RecentRunRow {
|
|
|
46
46
|
type SortField = 'Agent' | 'Status' | 'StepCount' | 'Duration' | 'Cost' | 'Time';
|
|
47
47
|
type SortDirection = 'asc' | 'desc';
|
|
48
48
|
export declare class AnalyticsAgentRunsComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
private _timeRange;
|
|
50
|
+
set TimeRange(value: string);
|
|
51
|
+
get TimeRange(): string;
|
|
52
|
+
private _filters;
|
|
53
|
+
set Filters(value: AgentRunFilters);
|
|
54
|
+
get Filters(): AgentRunFilters;
|
|
55
|
+
private shallowFiltersEqual;
|
|
51
56
|
TimeRangeChange: EventEmitter<string>;
|
|
52
57
|
FiltersChange: EventEmitter<AgentRunFilters>;
|
|
58
|
+
private initialized;
|
|
53
59
|
private cdr;
|
|
54
60
|
private destroy$;
|
|
55
61
|
IsLoading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-analysis.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/agent-runs/agent-run-analysis.component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACuB,YAAY,EACtC,MAAM,EAAE,SAAS,EACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;;AAIxF,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAwBD,UAAU,aAAa;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,kBAAkB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACjF,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAkBpC,
|
|
1
|
+
{"version":3,"file":"agent-run-analysis.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/agent-runs/agent-run-analysis.component.ts"],"names":[],"mappings":"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"}
|