@memberjunction/ng-dashboards 5.38.0 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -7
- package/dist/AI/components/agents/agent-configuration.component.js +199 -198
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
- 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 +166 -58
- package/dist/AI/components/analytics/cost-budget/cost-budget.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 +2 -1
- 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 +1 -0
- 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 +55 -36
- 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 +9 -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 +158 -117
- 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 +1 -0
- 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 +22 -8
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +209 -208
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +130 -128
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +17 -17
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +578 -538
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +14 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/AI/services/cache-metrics.d.ts +50 -0
- package/dist/AI/services/cache-metrics.d.ts.map +1 -0
- package/dist/AI/services/cache-metrics.js +43 -0
- package/dist/AI/services/cache-metrics.js.map +1 -0
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js +132 -131
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +141 -141
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +15 -15
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +2 -2
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +2 -2
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +2 -2
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +72 -50
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +103 -102
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +52 -51
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +39 -38
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +92 -89
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +18 -17
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -85
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +155 -150
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +245 -243
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +18 -17
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +236 -229
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +390 -389
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +525 -566
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +135 -134
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js +443 -438
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +436 -427
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +1 -1
- package/dist/Testing/components/testing-runs.component.js +116 -115
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +6 -7
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +173 -172
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +116 -92
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +57 -35
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +80 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +1 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +7 -1
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +12 -14
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +5 -14
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +4 -5
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +7 -5
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +57 -54
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
|
|
9
9
|
import { Subject } from 'rxjs';
|
|
10
10
|
import { RunView } from '@memberjunction/core';
|
|
11
|
+
import { cacheHitRate } from '../../../services/cache-metrics';
|
|
11
12
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@memberjunction/ng-shared-generic";
|
|
@@ -23,10 +24,10 @@ function AnalyticsPromptRunsComponent_Conditional_0_Template(rf, ctx) { if (rf &
|
|
|
23
24
|
i0.ɵɵelement(1, "mj-loading", 1);
|
|
24
25
|
i0.ɵɵelementEnd();
|
|
25
26
|
} }
|
|
26
|
-
function
|
|
27
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_53_Template(rf, ctx) { if (rf & 1) {
|
|
27
28
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
28
|
-
i0.ɵɵelementStart(0, "button",
|
|
29
|
-
i0.ɵɵlistener("click", function
|
|
29
|
+
i0.ɵɵelementStart(0, "button", 32);
|
|
30
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_For_53_Template_button_click_0_listener() { const metric_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnChartMetricChange(metric_r2.key)); });
|
|
30
31
|
i0.ɵɵtext(1);
|
|
31
32
|
i0.ɵɵelementEnd();
|
|
32
33
|
} if (rf & 2) {
|
|
@@ -36,20 +37,20 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_47_Template(rf, ctx) { i
|
|
|
36
37
|
i0.ɵɵadvance();
|
|
37
38
|
i0.ɵɵtextInterpolate1(" ", metric_r2.label, " ");
|
|
38
39
|
} }
|
|
39
|
-
function
|
|
40
|
-
i0.ɵɵelementStart(0, "div",
|
|
40
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelementStart(0, "div", 16);
|
|
41
42
|
i0.ɵɵtext(1, "No data for selected time range");
|
|
42
43
|
i0.ɵɵelementEnd();
|
|
43
44
|
} }
|
|
44
|
-
function
|
|
45
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_56_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
45
46
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
46
|
-
i0.ɵɵelementStart(0, "div",
|
|
47
|
-
i0.ɵɵlistener("click", function
|
|
48
|
-
i0.ɵɵelementStart(1, "div",
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
48
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_Conditional_56_For_2_Template_div_click_0_listener() { const bucket_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnChartBucketClick(bucket_r5)); });
|
|
49
|
+
i0.ɵɵelementStart(1, "div", 35);
|
|
49
50
|
i0.ɵɵtext(2);
|
|
50
51
|
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelement(3, "div",
|
|
52
|
-
i0.ɵɵelementStart(4, "div",
|
|
52
|
+
i0.ɵɵelement(3, "div", 36);
|
|
53
|
+
i0.ɵɵelementStart(4, "div", 37);
|
|
53
54
|
i0.ɵɵtext(5);
|
|
54
55
|
i0.ɵɵelementEnd()();
|
|
55
56
|
} if (rf & 2) {
|
|
@@ -63,27 +64,27 @@ function AnalyticsPromptRunsComponent_Conditional_1_Conditional_50_For_2_Templat
|
|
|
63
64
|
i0.ɵɵadvance(2);
|
|
64
65
|
i0.ɵɵtextInterpolate(bucket_r5.label);
|
|
65
66
|
} }
|
|
66
|
-
function
|
|
67
|
-
i0.ɵɵelementStart(0, "div",
|
|
68
|
-
i0.ɵɵrepeaterCreate(1,
|
|
67
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
69
|
+
i0.ɵɵrepeaterCreate(1, AnalyticsPromptRunsComponent_Conditional_1_Conditional_56_For_2_Template, 6, 5, "div", 33, _forTrack5);
|
|
69
70
|
i0.ɵɵelementEnd();
|
|
70
71
|
} if (rf & 2) {
|
|
71
72
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
72
73
|
i0.ɵɵadvance();
|
|
73
74
|
i0.ɵɵrepeater(ctx_r2.ChartBuckets);
|
|
74
75
|
} }
|
|
75
|
-
function
|
|
76
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_62_Template(rf, ctx) { if (rf & 1) {
|
|
76
77
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
77
|
-
i0.ɵɵelementStart(0, "div",
|
|
78
|
-
i0.ɵɵlistener("click", function
|
|
79
|
-
i0.ɵɵelementStart(1, "span",
|
|
78
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
79
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_For_62_Template_div_click_0_listener() { const item_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ApplyModelFilter(item_r7.id)); });
|
|
80
|
+
i0.ɵɵelementStart(1, "span", 39);
|
|
80
81
|
i0.ɵɵtext(2);
|
|
81
82
|
i0.ɵɵelementEnd();
|
|
82
|
-
i0.ɵɵelementStart(3, "span",
|
|
83
|
+
i0.ɵɵelementStart(3, "span", 40);
|
|
83
84
|
i0.ɵɵtext(4);
|
|
84
85
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵelementStart(5, "div",
|
|
86
|
-
i0.ɵɵelement(6, "div",
|
|
86
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
87
|
+
i0.ɵɵelement(6, "div", 42);
|
|
87
88
|
i0.ɵɵelementEnd()();
|
|
88
89
|
} if (rf & 2) {
|
|
89
90
|
const item_r7 = ctx.$implicit;
|
|
@@ -94,23 +95,23 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_56_Template(rf, ctx) { i
|
|
|
94
95
|
i0.ɵɵadvance(2);
|
|
95
96
|
i0.ɵɵstyleProp("width", item_r7.percentage, "%");
|
|
96
97
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
98
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_63_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
99
100
|
i0.ɵɵtext(1, "No data");
|
|
100
101
|
i0.ɵɵelementEnd();
|
|
101
102
|
} }
|
|
102
|
-
function
|
|
103
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_68_Template(rf, ctx) { if (rf & 1) {
|
|
103
104
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
104
|
-
i0.ɵɵelementStart(0, "div",
|
|
105
|
-
i0.ɵɵlistener("click", function
|
|
106
|
-
i0.ɵɵelementStart(1, "span",
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
106
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_For_68_Template_div_click_0_listener() { const item_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ApplyPromptFilter(item_r9.id)); });
|
|
107
|
+
i0.ɵɵelementStart(1, "span", 39);
|
|
107
108
|
i0.ɵɵtext(2);
|
|
108
109
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵelementStart(3, "span",
|
|
110
|
+
i0.ɵɵelementStart(3, "span", 40);
|
|
110
111
|
i0.ɵɵtext(4);
|
|
111
112
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(5, "div",
|
|
113
|
-
i0.ɵɵelement(6, "div",
|
|
113
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
114
|
+
i0.ɵɵelement(6, "div", 42);
|
|
114
115
|
i0.ɵɵelementEnd()();
|
|
115
116
|
} if (rf & 2) {
|
|
116
117
|
const item_r9 = ctx.$implicit;
|
|
@@ -121,20 +122,20 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_62_Template(rf, ctx) { i
|
|
|
121
122
|
i0.ɵɵadvance(2);
|
|
122
123
|
i0.ɵɵstyleProp("width", item_r9.percentage, "%");
|
|
123
124
|
} }
|
|
124
|
-
function
|
|
125
|
-
i0.ɵɵelementStart(0, "div",
|
|
125
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_69_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
126
127
|
i0.ɵɵtext(1, "No data");
|
|
127
128
|
i0.ɵɵelementEnd();
|
|
128
129
|
} }
|
|
129
|
-
function
|
|
130
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_74_Template(rf, ctx) { if (rf & 1) {
|
|
130
131
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
131
|
-
i0.ɵɵelementStart(0, "div",
|
|
132
|
-
i0.ɵɵlistener("click", function
|
|
133
|
-
i0.ɵɵelement(1, "span",
|
|
134
|
-
i0.ɵɵelementStart(2, "span",
|
|
132
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
133
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_For_74_Template_div_click_0_listener() { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ApplyStatusFilter(item_r11.name)); });
|
|
134
|
+
i0.ɵɵelement(1, "span", 43);
|
|
135
|
+
i0.ɵɵelementStart(2, "span", 39);
|
|
135
136
|
i0.ɵɵtext(3);
|
|
136
137
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵelementStart(4, "span",
|
|
138
|
+
i0.ɵɵelementStart(4, "span", 40);
|
|
138
139
|
i0.ɵɵtext(5);
|
|
139
140
|
i0.ɵɵpipe(6, "number");
|
|
140
141
|
i0.ɵɵelementEnd()();
|
|
@@ -147,23 +148,23 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_68_Template(rf, ctx) { i
|
|
|
147
148
|
i0.ɵɵadvance(2);
|
|
148
149
|
i0.ɵɵtextInterpolate2("", item_r11.count, " (", i0.ɵɵpipeBind2(6, 5, item_r11.percentage, "1.1-1"), "%)");
|
|
149
150
|
} }
|
|
150
|
-
function
|
|
151
|
-
i0.ɵɵelementStart(0, "div",
|
|
151
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_75_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
152
153
|
i0.ɵɵtext(1, "No data");
|
|
153
154
|
i0.ɵɵelementEnd();
|
|
154
155
|
} }
|
|
155
|
-
function
|
|
156
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_88_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
156
157
|
i0.ɵɵelement(0, "i");
|
|
157
158
|
} if (rf & 2) {
|
|
158
159
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
159
160
|
i0.ɵɵclassMap(ctx_r2.SortDirection === "asc" ? "fa-solid fa-caret-up" : "fa-solid fa-caret-down");
|
|
160
161
|
} }
|
|
161
|
-
function
|
|
162
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_88_Template(rf, ctx) { if (rf & 1) {
|
|
162
163
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
163
|
-
i0.ɵɵelementStart(0, "th",
|
|
164
|
-
i0.ɵɵlistener("click", function
|
|
164
|
+
i0.ɵɵelementStart(0, "th", 44);
|
|
165
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_For_88_Template_th_click_0_listener() { const col_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(col_r13.sortable ? ctx_r2.OnSortChange(col_r13.field) : null); });
|
|
165
166
|
i0.ɵɵtext(1);
|
|
166
|
-
i0.ɵɵconditionalCreate(2,
|
|
167
|
+
i0.ɵɵconditionalCreate(2, AnalyticsPromptRunsComponent_Conditional_1_For_88_Conditional_2_Template, 1, 2, "i", 45);
|
|
167
168
|
i0.ɵɵelementEnd();
|
|
168
169
|
} if (rf & 2) {
|
|
169
170
|
const col_r13 = ctx.$implicit;
|
|
@@ -174,34 +175,34 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_82_Template(rf, ctx) { i
|
|
|
174
175
|
i0.ɵɵadvance();
|
|
175
176
|
i0.ɵɵconditional(col_r13.sortable && ctx_r2.SortField === col_r13.field ? 2 : -1);
|
|
176
177
|
} }
|
|
177
|
-
function
|
|
178
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
178
|
+
function AnalyticsPromptRunsComponent_Conditional_1_For_91_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 46);
|
|
179
180
|
i0.ɵɵtext(2);
|
|
180
181
|
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(3, "td",
|
|
182
|
+
i0.ɵɵelementStart(3, "td", 47);
|
|
182
183
|
i0.ɵɵtext(4);
|
|
183
184
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(5, "td")(6, "span",
|
|
185
|
+
i0.ɵɵelementStart(5, "td")(6, "span", 48);
|
|
185
186
|
i0.ɵɵtext(7);
|
|
186
187
|
i0.ɵɵelementEnd()();
|
|
187
|
-
i0.ɵɵelementStart(8, "td")(9, "span",
|
|
188
|
+
i0.ɵɵelementStart(8, "td")(9, "span", 49);
|
|
188
189
|
i0.ɵɵtext(10);
|
|
189
190
|
i0.ɵɵelementEnd()();
|
|
190
|
-
i0.ɵɵelementStart(11, "td",
|
|
191
|
+
i0.ɵɵelementStart(11, "td", 50);
|
|
191
192
|
i0.ɵɵtext(12);
|
|
192
193
|
i0.ɵɵelementEnd();
|
|
193
|
-
i0.ɵɵelementStart(13, "td",
|
|
194
|
+
i0.ɵɵelementStart(13, "td", 51);
|
|
194
195
|
i0.ɵɵtext(14);
|
|
195
196
|
i0.ɵɵpipe(15, "number");
|
|
196
197
|
i0.ɵɵelementEnd();
|
|
197
|
-
i0.ɵɵelementStart(16, "td",
|
|
198
|
+
i0.ɵɵelementStart(16, "td", 50);
|
|
198
199
|
i0.ɵɵtext(17);
|
|
199
200
|
i0.ɵɵelementEnd()();
|
|
200
201
|
} if (rf & 2) {
|
|
201
202
|
const run_r14 = ctx.$implicit;
|
|
202
|
-
const ɵ$
|
|
203
|
+
const ɵ$index_207_r15 = ctx.$index;
|
|
203
204
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
204
|
-
i0.ɵɵclassProp("row-even", ɵ$
|
|
205
|
+
i0.ɵɵclassProp("row-even", ɵ$index_207_r15 % 2 === 0);
|
|
205
206
|
i0.ɵɵadvance(2);
|
|
206
207
|
i0.ɵɵtextInterpolate(ctx_r2.FormatTimestamp(run_r14.RunAt));
|
|
207
208
|
i0.ɵɵadvance(2);
|
|
@@ -215,27 +216,27 @@ function AnalyticsPromptRunsComponent_Conditional_1_For_85_Template(rf, ctx) { i
|
|
|
215
216
|
i0.ɵɵadvance(2);
|
|
216
217
|
i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(run_r14.ExecutionTimeMS));
|
|
217
218
|
i0.ɵɵadvance(2);
|
|
218
|
-
i0.ɵɵtextInterpolate(run_r14.TokensUsed != null ? i0.ɵɵpipeBind1(15, 11, run_r14
|
|
219
|
+
i0.ɵɵtextInterpolate(run_r14.TokensUsed != null ? i0.ɵɵpipeBind1(15, 11, ctx_r2.TrueTotalTokens(run_r14)) : "-");
|
|
219
220
|
i0.ɵɵadvance(3);
|
|
220
221
|
i0.ɵɵtextInterpolate(ctx_r2.FormatCurrency(run_r14.Cost, 4));
|
|
221
222
|
} }
|
|
222
|
-
function
|
|
223
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
223
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_92_Template(rf, ctx) { if (rf & 1) {
|
|
224
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 52);
|
|
224
225
|
i0.ɵɵtext(2, "No prompt runs found for the selected filters.");
|
|
225
226
|
i0.ɵɵelementEnd()();
|
|
226
227
|
} }
|
|
227
|
-
function
|
|
228
|
+
function AnalyticsPromptRunsComponent_Conditional_1_Conditional_93_Template(rf, ctx) { if (rf & 1) {
|
|
228
229
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
229
|
-
i0.ɵɵelementStart(0, "div",
|
|
230
|
-
i0.ɵɵlistener("click", function
|
|
231
|
-
i0.ɵɵelement(2, "i",
|
|
230
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "button", 53);
|
|
231
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_Conditional_93_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPageChange(ctx_r2.CurrentPage - 1)); });
|
|
232
|
+
i0.ɵɵelement(2, "i", 54);
|
|
232
233
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵelementStart(3, "span",
|
|
234
|
+
i0.ɵɵelementStart(3, "span", 55);
|
|
234
235
|
i0.ɵɵtext(4);
|
|
235
236
|
i0.ɵɵelementEnd();
|
|
236
|
-
i0.ɵɵelementStart(5, "button",
|
|
237
|
-
i0.ɵɵlistener("click", function
|
|
238
|
-
i0.ɵɵelement(6, "i",
|
|
237
|
+
i0.ɵɵelementStart(5, "button", 53);
|
|
238
|
+
i0.ɵɵlistener("click", function AnalyticsPromptRunsComponent_Conditional_1_Conditional_93_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPageChange(ctx_r2.CurrentPage + 1)); });
|
|
239
|
+
i0.ɵɵelement(6, "i", 56);
|
|
239
240
|
i0.ɵɵelementEnd()();
|
|
240
241
|
} if (rf & 2) {
|
|
241
242
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -293,96 +294,105 @@ function AnalyticsPromptRunsComponent_Conditional_1_Template(rf, ctx) { if (rf &
|
|
|
293
294
|
i0.ɵɵelementEnd();
|
|
294
295
|
i0.ɵɵelementStart(39, "div", 5);
|
|
295
296
|
i0.ɵɵtext(40);
|
|
297
|
+
i0.ɵɵelementEnd()();
|
|
298
|
+
i0.ɵɵelementStart(41, "div", 9)(42, "div", 4);
|
|
299
|
+
i0.ɵɵtext(43, "Cache Hit Rate");
|
|
300
|
+
i0.ɵɵelementEnd();
|
|
301
|
+
i0.ɵɵelementStart(44, "div", 5);
|
|
302
|
+
i0.ɵɵtext(45);
|
|
303
|
+
i0.ɵɵpipe(46, "number");
|
|
296
304
|
i0.ɵɵelementEnd()()();
|
|
297
|
-
i0.ɵɵelementStart(
|
|
298
|
-
i0.ɵɵtext(
|
|
305
|
+
i0.ɵɵelementStart(47, "div", 10)(48, "div", 11)(49, "h3", 12);
|
|
306
|
+
i0.ɵɵtext(50, "Runs Over Time");
|
|
299
307
|
i0.ɵɵelementEnd();
|
|
300
|
-
i0.ɵɵelementStart(
|
|
301
|
-
i0.ɵɵrepeaterCreate(
|
|
308
|
+
i0.ɵɵelementStart(51, "div", 13);
|
|
309
|
+
i0.ɵɵrepeaterCreate(52, AnalyticsPromptRunsComponent_Conditional_1_For_53_Template, 2, 3, "button", 14, _forTrack0);
|
|
302
310
|
i0.ɵɵelementEnd()();
|
|
303
|
-
i0.ɵɵelementStart(
|
|
304
|
-
i0.ɵɵconditionalCreate(
|
|
311
|
+
i0.ɵɵelementStart(54, "div", 15);
|
|
312
|
+
i0.ɵɵconditionalCreate(55, AnalyticsPromptRunsComponent_Conditional_1_Conditional_55_Template, 2, 0, "div", 16)(56, AnalyticsPromptRunsComponent_Conditional_1_Conditional_56_Template, 3, 0, "div", 17);
|
|
305
313
|
i0.ɵɵelementEnd()();
|
|
306
|
-
i0.ɵɵelementStart(
|
|
307
|
-
i0.ɵɵtext(
|
|
314
|
+
i0.ɵɵelementStart(57, "div", 18)(58, "div", 19)(59, "h4", 20);
|
|
315
|
+
i0.ɵɵtext(60, "By Model");
|
|
308
316
|
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵrepeaterCreate(
|
|
310
|
-
i0.ɵɵconditionalCreate(
|
|
317
|
+
i0.ɵɵrepeaterCreate(61, AnalyticsPromptRunsComponent_Conditional_1_For_62_Template, 7, 4, "div", 21, _forTrack1);
|
|
318
|
+
i0.ɵɵconditionalCreate(63, AnalyticsPromptRunsComponent_Conditional_1_Conditional_63_Template, 2, 0, "div", 22);
|
|
311
319
|
i0.ɵɵelementEnd();
|
|
312
|
-
i0.ɵɵelementStart(
|
|
313
|
-
i0.ɵɵtext(
|
|
320
|
+
i0.ɵɵelementStart(64, "div", 19)(65, "h4", 20);
|
|
321
|
+
i0.ɵɵtext(66, "By Prompt");
|
|
314
322
|
i0.ɵɵelementEnd();
|
|
315
|
-
i0.ɵɵrepeaterCreate(
|
|
316
|
-
i0.ɵɵconditionalCreate(
|
|
323
|
+
i0.ɵɵrepeaterCreate(67, AnalyticsPromptRunsComponent_Conditional_1_For_68_Template, 7, 4, "div", 21, _forTrack1);
|
|
324
|
+
i0.ɵɵconditionalCreate(69, AnalyticsPromptRunsComponent_Conditional_1_Conditional_69_Template, 2, 0, "div", 22);
|
|
317
325
|
i0.ɵɵelementEnd();
|
|
318
|
-
i0.ɵɵelementStart(
|
|
319
|
-
i0.ɵɵtext(
|
|
326
|
+
i0.ɵɵelementStart(70, "div", 19)(71, "h4", 20);
|
|
327
|
+
i0.ɵɵtext(72, "By Status");
|
|
320
328
|
i0.ɵɵelementEnd();
|
|
321
|
-
i0.ɵɵrepeaterCreate(
|
|
322
|
-
i0.ɵɵconditionalCreate(
|
|
329
|
+
i0.ɵɵrepeaterCreate(73, AnalyticsPromptRunsComponent_Conditional_1_For_74_Template, 7, 8, "div", 21, _forTrack2);
|
|
330
|
+
i0.ɵɵconditionalCreate(75, AnalyticsPromptRunsComponent_Conditional_1_Conditional_75_Template, 2, 0, "div", 22);
|
|
323
331
|
i0.ɵɵelementEnd()();
|
|
324
|
-
i0.ɵɵelementStart(
|
|
325
|
-
i0.ɵɵtext(
|
|
332
|
+
i0.ɵɵelementStart(76, "div", 23)(77, "div", 24)(78, "h3", 25);
|
|
333
|
+
i0.ɵɵtext(79, "Run Details");
|
|
326
334
|
i0.ɵɵelementEnd();
|
|
327
|
-
i0.ɵɵelementStart(
|
|
328
|
-
i0.ɵɵtext(
|
|
329
|
-
i0.ɵɵpipe(
|
|
335
|
+
i0.ɵɵelementStart(80, "span", 26);
|
|
336
|
+
i0.ɵɵtext(81);
|
|
337
|
+
i0.ɵɵpipe(82, "number");
|
|
330
338
|
i0.ɵɵelementEnd()();
|
|
331
|
-
i0.ɵɵelementStart(
|
|
332
|
-
i0.ɵɵrepeaterCreate(
|
|
339
|
+
i0.ɵɵelementStart(83, "div", 27)(84, "table", 28)(85, "thead")(86, "tr");
|
|
340
|
+
i0.ɵɵrepeaterCreate(87, AnalyticsPromptRunsComponent_Conditional_1_For_88_Template, 3, 6, "th", 29, _forTrack3);
|
|
333
341
|
i0.ɵɵelementEnd()();
|
|
334
|
-
i0.ɵɵelementStart(
|
|
335
|
-
i0.ɵɵrepeaterCreate(
|
|
336
|
-
i0.ɵɵconditionalCreate(
|
|
342
|
+
i0.ɵɵelementStart(89, "tbody");
|
|
343
|
+
i0.ɵɵrepeaterCreate(90, AnalyticsPromptRunsComponent_Conditional_1_For_91_Template, 18, 13, "tr", 30, _forTrack4);
|
|
344
|
+
i0.ɵɵconditionalCreate(92, AnalyticsPromptRunsComponent_Conditional_1_Conditional_92_Template, 3, 0, "tr");
|
|
337
345
|
i0.ɵɵelementEnd()()();
|
|
338
|
-
i0.ɵɵconditionalCreate(
|
|
346
|
+
i0.ɵɵconditionalCreate(93, AnalyticsPromptRunsComponent_Conditional_1_Conditional_93_Template, 7, 4, "div", 31);
|
|
339
347
|
i0.ɵɵelementEnd();
|
|
340
348
|
} if (rf & 2) {
|
|
341
349
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
342
350
|
i0.ɵɵadvance(5);
|
|
343
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6,
|
|
351
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 15, ctx_r2.Stats.TotalRuns));
|
|
344
352
|
i0.ɵɵadvance(6);
|
|
345
353
|
i0.ɵɵtextInterpolate(ctx_r2.FormatCurrency(ctx_r2.Stats.AvgCost, 4));
|
|
346
354
|
i0.ɵɵadvance(5);
|
|
347
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(17,
|
|
355
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(17, 17, ctx_r2.Stats.AvgTokens, "1.0-0"));
|
|
348
356
|
i0.ɵɵadvance(6);
|
|
349
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(23,
|
|
357
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(23, 20, ctx_r2.Stats.AvgLatencySeconds, "1.2-2"), "s");
|
|
350
358
|
i0.ɵɵadvance(6);
|
|
351
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(29,
|
|
359
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(29, 23, ctx_r2.Stats.SuccessRate, "1.1-1"), "%");
|
|
352
360
|
i0.ɵɵadvance(6);
|
|
353
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(35,
|
|
361
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(35, 26, ctx_r2.Stats.P95LatencySeconds, "1.2-2"), "s");
|
|
354
362
|
i0.ɵɵadvance(6);
|
|
355
363
|
i0.ɵɵtextInterpolate(ctx_r2.FormatCurrency(ctx_r2.Stats.TotalCost, 2));
|
|
356
|
-
i0.ɵɵadvance(
|
|
364
|
+
i0.ɵɵadvance(5);
|
|
365
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(46, 29, ctx_r2.Stats.CacheHitRate * 100, "1.1-1"), "%");
|
|
366
|
+
i0.ɵɵadvance(7);
|
|
357
367
|
i0.ɵɵrepeater(ctx_r2.ChartMetricOptions);
|
|
358
368
|
i0.ɵɵadvance(3);
|
|
359
|
-
i0.ɵɵconditional(ctx_r2.ChartBuckets.length === 0 ?
|
|
369
|
+
i0.ɵɵconditional(ctx_r2.ChartBuckets.length === 0 ? 55 : 56);
|
|
360
370
|
i0.ɵɵadvance(6);
|
|
361
371
|
i0.ɵɵrepeater(ctx_r2.ModelBreakdown);
|
|
362
372
|
i0.ɵɵadvance(2);
|
|
363
|
-
i0.ɵɵconditional(ctx_r2.ModelBreakdown.length === 0 ?
|
|
373
|
+
i0.ɵɵconditional(ctx_r2.ModelBreakdown.length === 0 ? 63 : -1);
|
|
364
374
|
i0.ɵɵadvance(4);
|
|
365
375
|
i0.ɵɵrepeater(ctx_r2.PromptBreakdown);
|
|
366
376
|
i0.ɵɵadvance(2);
|
|
367
|
-
i0.ɵɵconditional(ctx_r2.PromptBreakdown.length === 0 ?
|
|
377
|
+
i0.ɵɵconditional(ctx_r2.PromptBreakdown.length === 0 ? 69 : -1);
|
|
368
378
|
i0.ɵɵadvance(4);
|
|
369
379
|
i0.ɵɵrepeater(ctx_r2.StatusBreakdown);
|
|
370
380
|
i0.ɵɵadvance(2);
|
|
371
|
-
i0.ɵɵconditional(ctx_r2.StatusBreakdown.length === 0 ?
|
|
381
|
+
i0.ɵɵconditional(ctx_r2.StatusBreakdown.length === 0 ? 75 : -1);
|
|
372
382
|
i0.ɵɵadvance(6);
|
|
373
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(
|
|
383
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(82, 32, ctx_r2.FilteredRuns.length), " runs");
|
|
374
384
|
i0.ɵɵadvance(6);
|
|
375
385
|
i0.ɵɵrepeater(ctx_r2.TableColumns);
|
|
376
386
|
i0.ɵɵadvance(3);
|
|
377
387
|
i0.ɵɵrepeater(ctx_r2.PagedRuns);
|
|
378
388
|
i0.ɵɵadvance(2);
|
|
379
|
-
i0.ɵɵconditional(ctx_r2.PagedRuns.length === 0 ?
|
|
389
|
+
i0.ɵɵconditional(ctx_r2.PagedRuns.length === 0 ? 92 : -1);
|
|
380
390
|
i0.ɵɵadvance();
|
|
381
|
-
i0.ɵɵconditional(ctx_r2.TotalPages > 1 ?
|
|
391
|
+
i0.ɵɵconditional(ctx_r2.TotalPages > 1 ? 93 : -1);
|
|
382
392
|
} }
|
|
383
393
|
const FIELDS = [
|
|
384
394
|
'ID', 'RunAt', 'CompletedAt', 'Status', 'Success', 'Cost', 'TotalCost',
|
|
385
|
-
'TokensUsed', 'TokensPrompt', 'TokensCompletion', 'ExecutionTimeMS',
|
|
395
|
+
'TokensUsed', 'TokensPrompt', 'TokensCompletion', 'TokensCacheRead', 'TokensCacheWrite', 'ExecutionTimeMS',
|
|
386
396
|
'ModelID', 'Model', 'AgentID', 'Agent', 'PromptID', 'Prompt', 'ErrorMessage'
|
|
387
397
|
];
|
|
388
398
|
const PAGE_SIZE = 25;
|
|
@@ -427,6 +437,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
427
437
|
{ key: 'volume', label: 'By Volume' },
|
|
428
438
|
{ key: 'cost', label: 'By Cost' },
|
|
429
439
|
{ key: 'tokens', label: 'By Tokens' },
|
|
440
|
+
{ key: 'cacheHit', label: 'By Cache Hit %' },
|
|
430
441
|
];
|
|
431
442
|
TableColumns = [
|
|
432
443
|
{ field: 'RunAt', label: 'Timestamp', sortable: true },
|
|
@@ -526,7 +537,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
526
537
|
r.Model ?? '',
|
|
527
538
|
r.Status,
|
|
528
539
|
r.ExecutionTimeMS?.toString() ?? '',
|
|
529
|
-
r.
|
|
540
|
+
this.TrueTotalTokens(r).toString(),
|
|
530
541
|
r.Cost?.toString() ?? ''
|
|
531
542
|
]);
|
|
532
543
|
const csv = [headers, ...rows].map(r => r.join(',')).join('\n');
|
|
@@ -560,6 +571,9 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
560
571
|
if (this.ActiveChartMetric === 'cost') {
|
|
561
572
|
return '$' + value.toFixed(2);
|
|
562
573
|
}
|
|
574
|
+
if (this.ActiveChartMetric === 'cacheHit') {
|
|
575
|
+
return value.toFixed(0) + '%';
|
|
576
|
+
}
|
|
563
577
|
if (value >= 1000) {
|
|
564
578
|
return (value / 1000).toFixed(1) + 'k';
|
|
565
579
|
}
|
|
@@ -615,17 +629,29 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
615
629
|
}
|
|
616
630
|
return filtered;
|
|
617
631
|
}
|
|
632
|
+
/**
|
|
633
|
+
* Total tokens the model processed for a run, INCLUDING cached input. TokensUsed excludes the
|
|
634
|
+
* cache buckets by design, so a heavily-cached run looks tiny; this is the true throughput.
|
|
635
|
+
*/
|
|
636
|
+
TrueTotalTokens(run) {
|
|
637
|
+
return (run.TokensUsed ?? 0) + (run.TokensCacheRead ?? 0) + (run.TokensCacheWrite ?? 0);
|
|
638
|
+
}
|
|
618
639
|
computeStats(runs) {
|
|
619
640
|
const total = runs.length;
|
|
620
641
|
if (total === 0) {
|
|
621
|
-
return { TotalRuns: 0, AvgCost: 0, AvgTokens: 0, AvgLatencySeconds: 0, SuccessRate: 0, P95LatencySeconds: 0, TotalCost: 0 };
|
|
642
|
+
return { TotalRuns: 0, AvgCost: 0, AvgTokens: 0, AvgLatencySeconds: 0, SuccessRate: 0, P95LatencySeconds: 0, TotalCost: 0, CacheHitRate: 0 };
|
|
622
643
|
}
|
|
623
644
|
const totalCost = this.sumNullable(runs, r => r.Cost);
|
|
624
|
-
const totalTokens =
|
|
645
|
+
const totalTokens = runs.reduce((sum, r) => sum + this.TrueTotalTokens(r), 0);
|
|
625
646
|
const latencies = this.collectNonNull(runs, r => r.ExecutionTimeMS);
|
|
626
647
|
const avgLatencyMs = latencies.length > 0 ? latencies.reduce((a, b) => a + b, 0) / latencies.length : 0;
|
|
627
648
|
const successCount = runs.filter(r => r.Status === 'Completed').length;
|
|
628
649
|
const p95 = this.percentile(latencies, 95);
|
|
650
|
+
const cacheHit = cacheHitRate({
|
|
651
|
+
uncachedInputTokens: this.sumNullable(runs, r => r.TokensPrompt),
|
|
652
|
+
cacheReadTokens: this.sumNullable(runs, r => r.TokensCacheRead),
|
|
653
|
+
cacheWriteTokens: this.sumNullable(runs, r => r.TokensCacheWrite)
|
|
654
|
+
});
|
|
629
655
|
return {
|
|
630
656
|
TotalRuns: total,
|
|
631
657
|
AvgCost: totalCost / total,
|
|
@@ -634,6 +660,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
634
660
|
SuccessRate: (successCount / total) * 100,
|
|
635
661
|
P95LatencySeconds: p95 / 1000,
|
|
636
662
|
TotalCost: totalCost,
|
|
663
|
+
CacheHitRate: cacheHit,
|
|
637
664
|
};
|
|
638
665
|
}
|
|
639
666
|
computeChartBuckets(runs) {
|
|
@@ -651,6 +678,8 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
651
678
|
buckets.push({
|
|
652
679
|
label: this.formatBucketLabel(start),
|
|
653
680
|
total: 0,
|
|
681
|
+
cacheRead: 0,
|
|
682
|
+
inputForHit: 0,
|
|
654
683
|
start,
|
|
655
684
|
end,
|
|
656
685
|
});
|
|
@@ -660,6 +689,14 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
660
689
|
const idx = Math.min(Math.floor((runTime - cutoff.getTime()) / bucketMs), bucketCount - 1);
|
|
661
690
|
if (idx >= 0 && idx < bucketCount) {
|
|
662
691
|
buckets[idx].total += this.getChartMetricValue(run);
|
|
692
|
+
// Cache hit-rate is a ratio, not a sum — accumulate the components and divide below.
|
|
693
|
+
buckets[idx].cacheRead += run.TokensCacheRead ?? 0;
|
|
694
|
+
buckets[idx].inputForHit += (run.TokensPrompt ?? 0) + (run.TokensCacheRead ?? 0) + (run.TokensCacheWrite ?? 0);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
if (this.ActiveChartMetric === 'cacheHit') {
|
|
698
|
+
for (const b of buckets) {
|
|
699
|
+
b.total = b.inputForHit > 0 ? (b.cacheRead / b.inputForHit) * 100 : 0;
|
|
663
700
|
}
|
|
664
701
|
}
|
|
665
702
|
const max = Math.max(...buckets.map(b => b.total), 1);
|
|
@@ -674,7 +711,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
674
711
|
getChartMetricValue(run) {
|
|
675
712
|
switch (this.ActiveChartMetric) {
|
|
676
713
|
case 'cost': return run.Cost ?? 0;
|
|
677
|
-
case 'tokens': return run
|
|
714
|
+
case 'tokens': return this.TrueTotalTokens(run);
|
|
678
715
|
default: return 1; // volume = count
|
|
679
716
|
}
|
|
680
717
|
}
|
|
@@ -801,8 +838,8 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
801
838
|
this.CurrentPage = 1;
|
|
802
839
|
}
|
|
803
840
|
static ɵfac = /*@__PURE__*/ (() => { let ɵAnalyticsPromptRunsComponent_BaseFactory; return function AnalyticsPromptRunsComponent_Factory(__ngFactoryType__) { return (ɵAnalyticsPromptRunsComponent_BaseFactory || (ɵAnalyticsPromptRunsComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AnalyticsPromptRunsComponent)))(__ngFactoryType__ || AnalyticsPromptRunsComponent); }; })();
|
|
804
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsPromptRunsComponent, selectors: [["app-analytics-prompt-runs"]], inputs: { TimeRange: "TimeRange", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "loading-container"], ["text", "Loading prompt runs..."], [1, "stats-grid"], [1, "stat-card", "accent-brand"], [1, "stat-label"], [1, "stat-value"], [1, "stat-card"], [1, "stat-card", "accent-success"], [1, "stat-card", "accent-warning"], [1, "chart-panel"], [1, "chart-header"], [1, "chart-title"], [1, "chart-toggles"], [1, "toggle-chip", 3, "active"], [1, "chart-area"], [1, "chart-empty"], [1, "chart-bars"], [1, "breakdown-grid"], [1, "breakdown-card"], [1, "breakdown-title"], [1, "breakdown-row"], [1, "breakdown-empty"], [1, "table-panel"], [1, "table-header"], [1, "table-title"], [1, "table-count"], [1, "table-scroll"], [1, "runs-table"], [3, "sortable", "sorted"], [3, "row-even"], [1, "pagination"], [1, "toggle-chip", 3, "click"], [1, "chart-bar-wrapper", 3, "title"], [1, "chart-bar-wrapper", 3, "click", "title"], [1, "chart-bar-value"], [1, "chart-bar"], [1, "chart-bar-label"], [1, "breakdown-row", 3, "click"], [1, "breakdown-name"], [1, "breakdown-count"], [1, "breakdown-bar-track"], [1, "breakdown-bar-fill"], [1, "status-dot"], [3, "click"], [3, "class"], [1, "cell-timestamp"], [1, "cell-prompt"], [1, "model-tag"], [1, "status-pill"], [1, "cell-number"], ["colspan", "7", 1, "empty-row"], [1, "page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"]], template: function AnalyticsPromptRunsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
805
|
-
i0.ɵɵconditionalCreate(0, AnalyticsPromptRunsComponent_Conditional_0_Template, 2, 0, "div", 0)(1, AnalyticsPromptRunsComponent_Conditional_1_Template,
|
|
841
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsPromptRunsComponent, selectors: [["app-analytics-prompt-runs"]], inputs: { TimeRange: "TimeRange", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "loading-container"], ["text", "Loading prompt runs..."], [1, "stats-grid"], [1, "stat-card", "accent-brand"], [1, "stat-label"], [1, "stat-value"], [1, "stat-card"], [1, "stat-card", "accent-success"], [1, "stat-card", "accent-warning"], ["title", "Share of input tokens served from the provider's prompt cache", 1, "stat-card"], [1, "chart-panel"], [1, "chart-header"], [1, "chart-title"], [1, "chart-toggles"], [1, "toggle-chip", 3, "active"], [1, "chart-area"], [1, "chart-empty"], [1, "chart-bars"], [1, "breakdown-grid"], [1, "breakdown-card"], [1, "breakdown-title"], [1, "breakdown-row"], [1, "breakdown-empty"], [1, "table-panel"], [1, "table-header"], [1, "table-title"], [1, "table-count"], [1, "table-scroll"], [1, "runs-table"], [3, "sortable", "sorted"], [3, "row-even"], [1, "pagination"], [1, "toggle-chip", 3, "click"], [1, "chart-bar-wrapper", 3, "title"], [1, "chart-bar-wrapper", 3, "click", "title"], [1, "chart-bar-value"], [1, "chart-bar"], [1, "chart-bar-label"], [1, "breakdown-row", 3, "click"], [1, "breakdown-name"], [1, "breakdown-count"], [1, "breakdown-bar-track"], [1, "breakdown-bar-fill"], [1, "status-dot"], [3, "click"], [3, "class"], [1, "cell-timestamp"], [1, "cell-prompt"], [1, "model-tag"], [1, "status-pill"], [1, "cell-number"], ["title", "Total tokens processed, including cached input", 1, "cell-number"], ["colspan", "7", 1, "empty-row"], [1, "page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"]], template: function AnalyticsPromptRunsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
842
|
+
i0.ɵɵconditionalCreate(0, AnalyticsPromptRunsComponent_Conditional_0_Template, 2, 0, "div", 0)(1, AnalyticsPromptRunsComponent_Conditional_1_Template, 94, 34);
|
|
806
843
|
} if (rf & 2) {
|
|
807
844
|
i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
|
|
808
845
|
} }, dependencies: [i1.LoadingComponent, i2.DecimalPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n }\n\n .loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n \n\n\n .stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-top: 16px;\n }\n\n .stat-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 14px 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .stat-card.accent-brand[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n }\n\n .stat-card.accent-success[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-success);\n }\n\n .stat-card.accent-warning[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n \n\n\n .chart-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n }\n\n .chart-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n }\n\n .chart-title[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n }\n\n .chart-toggles[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n }\n\n .toggle-chip[_ngcontent-%COMP%] {\n padding: 4px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .toggle-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .toggle-chip.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .chart-area[_ngcontent-%COMP%] {\n height: 220px;\n display: flex;\n align-items: flex-end;\n }\n\n .chart-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: var(--mj-text-muted);\n font-size: 13px;\n }\n\n .chart-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n width: 100%;\n height: 100%;\n padding-bottom: 24px;\n }\n\n .chart-bar-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n position: relative;\n height: 100%;\n justify-content: flex-end;\n }\n\n .chart-bar-value[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n }\n\n .chart-bar[_ngcontent-%COMP%] {\n width: 80%;\n min-height: 2px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n border-radius: 4px 4px 0 0;\n transition: background 0.15s, height 0.3s;\n }\n\n .chart-bar-wrapper[_ngcontent-%COMP%]:hover .chart-bar[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 50%, var(--mj-bg-surface));\n }\n\n .chart-bar-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n text-align: center;\n position: absolute;\n bottom: 0;\n }\n\n \n\n\n .breakdown-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n margin-top: 16px;\n }\n\n .breakdown-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n }\n\n .breakdown-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px;\n }\n\n .breakdown-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 0;\n cursor: pointer;\n border-radius: 4px;\n transition: background 0.1s;\n }\n\n .breakdown-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .breakdown-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n }\n\n .breakdown-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n white-space: nowrap;\n }\n\n .breakdown-bar-track[_ngcontent-%COMP%] {\n width: 60px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .breakdown-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 3px;\n transition: width 0.3s;\n }\n\n .breakdown-empty[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n padding: 8px 0;\n }\n\n .status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .status-dot.dot-completed[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .status-dot.dot-failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .status-dot.dot-running[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n .status-dot.dot-pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .status-dot.dot-cancelled[_ngcontent-%COMP%] { background: var(--mj-text-muted); }\n\n \n\n\n .table-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n }\n\n .table-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .table-title[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n }\n\n .table-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .table-scroll[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n\n .runs-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n\n .runs-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n white-space: nowrap;\n user-select: none;\n }\n\n .runs-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .runs-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n }\n\n .runs-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .runs-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-left: 4px;\n font-size: 10px;\n }\n\n .runs-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 14px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n\n .runs-table[_ngcontent-%COMP%] tr.row-even[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n }\n\n .runs-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n\n .cell-timestamp[_ngcontent-%COMP%] {\n white-space: nowrap;\n color: var(--mj-text-secondary);\n font-size: 12px;\n }\n\n .cell-prompt[_ngcontent-%COMP%] {\n font-weight: 600;\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .cell-number[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n }\n\n .model-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n }\n\n .status-pill[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 12px;\n font-weight: 600;\n white-space: nowrap;\n }\n\n .pill-completed[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n }\n\n .pill-failed[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n }\n\n .pill-running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .pill-pending[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n }\n\n .pill-cancelled[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .empty-row[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-muted);\n padding: 24px 14px;\n }\n\n \n\n\n .pagination[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n }\n\n .page-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 13px;\n transition: background 0.15s, color 0.15s;\n }\n\n .page-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .page-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: default;\n }\n\n .page-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n \n\n\n @media (max-width: 1200px) {\n .breakdown-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 768px) {\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .breakdown-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .chart-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n }"] });
|
|
@@ -846,6 +883,10 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
846
883
|
<div class="stat-label">Total Cost</div>
|
|
847
884
|
<div class="stat-value">{{ FormatCurrency(Stats.TotalCost, 2) }}</div>
|
|
848
885
|
</div>
|
|
886
|
+
<div class="stat-card" title="Share of input tokens served from the provider's prompt cache">
|
|
887
|
+
<div class="stat-label">Cache Hit Rate</div>
|
|
888
|
+
<div class="stat-value">{{ Stats.CacheHitRate * 100 | number:'1.1-1' }}%</div>
|
|
889
|
+
</div>
|
|
849
890
|
</div>
|
|
850
891
|
|
|
851
892
|
<!-- Chart Panel -->
|
|
@@ -966,7 +1007,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
966
1007
|
<td><span class="model-tag">{{ run.Model ?? 'N/A' }}</span></td>
|
|
967
1008
|
<td><span class="status-pill" [class]="GetStatusClass(run.Status)">{{ run.Status }}</span></td>
|
|
968
1009
|
<td class="cell-number">{{ FormatDuration(run.ExecutionTimeMS) }}</td>
|
|
969
|
-
<td class="cell-number">{{ run.TokensUsed != null ? (run
|
|
1010
|
+
<td class="cell-number" title="Total tokens processed, including cached input">{{ run.TokensUsed != null ? (TrueTotalTokens(run) | number) : '-' }}</td>
|
|
970
1011
|
<td class="cell-number">{{ FormatCurrency(run.Cost, 4) }}</td>
|
|
971
1012
|
</tr>
|
|
972
1013
|
}
|
|
@@ -1008,7 +1049,7 @@ export class AnalyticsPromptRunsComponent extends BaseAngularComponent {
|
|
|
1008
1049
|
}], FiltersChange: [{
|
|
1009
1050
|
type: Output
|
|
1010
1051
|
}] }); })();
|
|
1011
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsPromptRunsComponent, { className: "AnalyticsPromptRunsComponent", filePath: "src/AI/components/analytics/prompt-runs/prompt-run-analysis.component.ts", lineNumber:
|
|
1052
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsPromptRunsComponent, { className: "AnalyticsPromptRunsComponent", filePath: "src/AI/components/analytics/prompt-runs/prompt-run-analysis.component.ts", lineNumber: 773 }); })();
|
|
1012
1053
|
export function LoadAnalyticsPromptRuns() {
|
|
1013
1054
|
// Prevents tree-shaking of the component
|
|
1014
1055
|
}
|