@memberjunction/ng-dashboards 5.3.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  2. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  3. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  4. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  5. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  6. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  7. package/dist/AI/components/models/model-management.component.js.map +1 -1
  8. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  10. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  11. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  12. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  14. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  15. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  16. package/dist/AI/index.js.map +1 -1
  17. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  18. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  19. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  20. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  21. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  22. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  23. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  24. package/dist/APIKeys/api-key-list.component.js +2 -2
  25. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  26. package/dist/APIKeys/api-keys-resource.component.js +2 -2
  27. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  28. package/dist/APIKeys/api-scopes-panel.component.js +2 -2
  29. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  30. package/dist/APIKeys/api-usage-panel.component.js +2 -2
  31. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  32. package/dist/APIKeys/index.js.map +1 -1
  33. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  34. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  35. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  36. package/dist/Actions/components/code-management.component.js.map +1 -1
  37. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  38. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  39. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  40. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  41. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  42. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  43. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  44. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  45. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  46. package/dist/Actions/components/explorer/index.js.map +1 -1
  47. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  48. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  49. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  50. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  51. package/dist/Actions/index.js.map +1 -1
  52. package/dist/Actions/services/action-explorer-state.service.js.map +1 -1
  53. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  54. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  55. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  56. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  57. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  58. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  59. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  60. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  61. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  62. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  63. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  64. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  65. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  66. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  67. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  68. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  69. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  70. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  71. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  73. package/dist/ComponentStudio/index.js.map +1 -1
  74. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  75. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  76. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  77. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  78. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  79. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  80. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  81. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  82. package/dist/Credentials/index.js.map +1 -1
  83. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  84. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  85. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  86. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  87. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +25 -3
  88. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  89. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +158 -34
  90. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  91. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  92. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +57 -23
  93. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  94. package/dist/DataExplorer/data-explorer-dashboard.component.js +600 -445
  95. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  96. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  97. package/dist/DataExplorer/index.js.map +1 -1
  98. package/dist/DataExplorer/models/explorer-state.interface.d.ts +25 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  100. package/dist/DataExplorer/models/explorer-state.interface.js +6 -1
  101. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  102. package/dist/DataExplorer/services/explorer-state.service.d.ts +21 -3
  103. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  104. package/dist/DataExplorer/services/explorer-state.service.js +70 -36
  105. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  106. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  107. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  108. package/dist/Home/home-application.js.map +1 -1
  109. package/dist/Home/home-dashboard.component.d.ts +20 -5
  110. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  111. package/dist/Home/home-dashboard.component.js +128 -79
  112. package/dist/Home/home-dashboard.component.js.map +1 -1
  113. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  114. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  115. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  116. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  117. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  118. package/dist/Lists/index.js.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  120. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  121. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  122. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  123. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  124. package/dist/MCP/index.js.map +1 -1
  125. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  126. package/dist/MCP/mcp-filter-panel.component.js.map +1 -1
  127. package/dist/MCP/mcp-resource.component.js.map +1 -1
  128. package/dist/MCP/mcp.module.js.map +1 -1
  129. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  130. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  131. package/dist/Scheduling/components/index.js.map +1 -1
  132. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  133. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  136. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  137. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  138. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  139. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  140. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  141. package/dist/SystemDiagnostics/index.js.map +1 -1
  142. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  143. package/dist/SystemDiagnostics/system-diagnostics.component.js +3 -3
  144. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  145. package/dist/Testing/components/index.js.map +1 -1
  146. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  147. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  148. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  149. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  150. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  151. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  152. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  153. package/dist/Testing/components/testing-review.component.js.map +1 -1
  154. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  155. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  156. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  157. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  158. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  159. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  160. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  161. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  162. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  163. package/dist/VersionHistory/components/index.js.map +1 -1
  164. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  165. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  166. package/dist/VersionHistory/index.js.map +1 -1
  167. package/dist/__tests__/dashboards.test.js.map +1 -1
  168. package/dist/module.js.map +1 -1
  169. package/dist/public-api.js.map +1 -1
  170. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  171. package/dist/shared/pipes/index.js.map +1 -1
  172. package/dist/shared/shared-pipes.module.js.map +1 -1
  173. package/package.json +38 -38
@@ -1 +1 @@
1
- {"version":3,"file":"testing-runs.component.js","sourceRoot":"","sources":["../../../src/Testing/components/testing-runs.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing-runs.component.js","sourceRoot":"","sources":["../../../src/Testing/components/testing-runs.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n ViewContainerRef,\n HostListener\n} from '@angular/core';\nimport { Observable, Subject, BehaviorSubject, combineLatest } from 'rxjs';\nimport { takeUntil, map } from 'rxjs/operators';\nimport { CompositeKey } from '@memberjunction/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { TestingDialogService } from '@memberjunction/ng-testing';\nimport { EvaluationPreferences, DEFAULT_EVALUATION_PREFERENCES } from '@memberjunction/ng-testing';\nimport {\n TestingInstrumentationService,\n TestRunWithFeedbackSummary,\n EvaluationSummaryMetrics\n} from '../services/testing-instrumentation.service';\n\ntype StatusFilter = 'all' | 'running' | 'passed' | 'failed' | 'error';\ntype TimeRange = 'today' | 'week' | 'month' | '90days';\n\ninterface RunsFilterState {\n status: StatusFilter;\n timeRange: TimeRange;\n searchText: string;\n}\n\ninterface FilteredStats {\n totalRuns: number;\n passRate: number;\n avgDuration: number;\n totalCost: number;\n}\n\n@Component({\n standalone: false,\n selector: 'app-testing-runs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <!-- Page Header -->\n <div class=\"runs-container\" (keydown.escape)=\"CloseDetailPanel()\">\n <div class=\"page-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-list-check\"></i>\n <h2>Test Runs</h2>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn btn-secondary\" (click)=\"Refresh()\" [disabled]=\"IsRefreshing\">\n <i class=\"fa-solid fa-sync-alt\" [class.spinning]=\"IsRefreshing\"></i>\n Refresh\n </button>\n <button class=\"btn btn-primary\" (click)=\"StartNewTest()\">\n <i class=\"fa-solid fa-play\"></i>\n Run Test\n </button>\n </div>\n </div>\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"filter-left\">\n <div class=\"filter-chips\">\n @for (chip of StatusChips; track chip.value) {\n <button\n class=\"chip\"\n [class.active]=\"filterState.status === chip.value\"\n [attr.data-status]=\"chip.value\"\n (click)=\"SetStatusFilter(chip.value)\"\n >\n @if (chip.icon) {\n <i [class]=\"chip.icon\"></i>\n }\n {{ chip.label }}\n </button>\n }\n </div>\n <span class=\"result-count\">{{ (FilteredRuns$ | async)?.length ?? 0 }} results</span>\n </div>\n <div class=\"filter-right\">\n <select\n class=\"time-select\"\n [value]=\"filterState.timeRange\"\n (change)=\"OnTimeRangeChange($event)\"\n >\n <option value=\"today\">Today</option>\n <option value=\"week\">This Week</option>\n <option value=\"month\">This Month</option>\n <option value=\"90days\">Last 90 Days</option>\n </select>\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search by test name...\"\n [value]=\"filterState.searchText\"\n (input)=\"OnSearchInput($event)\"\n />\n @if (filterState.searchText) {\n <button class=\"clear-search\" (click)=\"ClearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Summary Stats Row -->\n @if (FilteredStats$ | async; as stats) {\n <div class=\"stats-row\">\n <div class=\"stat-card\">\n <div class=\"stat-icon total\"><i class=\"fa-solid fa-hashtag\"></i></div>\n <div class=\"stat-body\">\n <div class=\"stat-value\">{{ stats.totalRuns }}</div>\n <div class=\"stat-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon pass\"><i class=\"fa-solid fa-check-circle\"></i></div>\n <div class=\"stat-body\">\n <div class=\"stat-value\">{{ FormatPercent(stats.passRate) }}</div>\n <div class=\"stat-label\">Pass Rate</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon duration\"><i class=\"fa-solid fa-clock\"></i></div>\n <div class=\"stat-body\">\n <div class=\"stat-value\">{{ FormatDuration(stats.avgDuration) }}</div>\n <div class=\"stat-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon cost\"><i class=\"fa-solid fa-dollar-sign\"></i></div>\n <div class=\"stat-body\">\n <div class=\"stat-value\">{{ FormatCostTotal(stats.totalCost) }}</div>\n <div class=\"stat-label\">Total Cost</div>\n </div>\n </div>\n </div>\n }\n\n <!-- Runs Table -->\n <div class=\"runs-table-wrapper\">\n <div class=\"table-header\">\n <div class=\"col col-name\">Test Name</div>\n <div class=\"col col-eval\">Evaluation</div>\n <div class=\"col col-score\">Score</div>\n <div class=\"col col-duration\">Duration</div>\n <div class=\"col col-cost\">Cost</div>\n <div class=\"col col-time\">Started</div>\n <div class=\"col col-actions\">Actions</div>\n </div>\n\n @if (instrumentationService.isLoading$ | async) {\n <div class=\"table-loading\">\n <mj-loading text=\"Loading test runs...\"></mj-loading>\n </div>\n } @else if ((FilteredRuns$ | async)?.length === 0) {\n <div class=\"table-empty\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No test runs found</p>\n <span class=\"empty-hint\">Try adjusting your filters or run a new test.</span>\n </div>\n } @else {\n @for (run of FilteredRuns$ | async; track TrackByRunId($index, run)) {\n <div\n class=\"table-row\"\n [class.is-running]=\"run.status === 'Running'\"\n [class.is-selected]=\"SelectedRun?.id === run.id\"\n (click)=\"SelectRun(run)\"\n >\n <div class=\"col col-name\">\n <span class=\"test-name-link\" (click)=\"NavigateToTest(run, $event)\">\n {{ run.testName }}\n </span>\n </div>\n <div class=\"col col-eval\">\n <app-evaluation-badge\n [executionStatus]=\"run.status\"\n [originalStatus]=\"run.status\"\n [autoScore]=\"run.score\"\n [passedChecks]=\"run.passedChecks\"\n [failedChecks]=\"run.failedChecks\"\n [totalChecks]=\"run.totalChecks\"\n [humanRating]=\"run.humanRating\"\n [humanIsCorrect]=\"run.humanIsCorrect\"\n [hasHumanFeedback]=\"run.hasHumanFeedback\"\n [preferences]=\"EvalPreferences\"\n mode=\"compact\"\n ></app-evaluation-badge>\n </div>\n <div class=\"col col-score\">\n <app-score-indicator [score]=\"run.score\" [showBar]=\"true\"></app-score-indicator>\n </div>\n <div class=\"col col-duration\">{{ FormatDuration(run.duration) }}</div>\n <div class=\"col col-cost\">\n <app-cost-display [cost]=\"run.cost\"></app-cost-display>\n </div>\n <div class=\"col col-time\">{{ FormatRelativeTime(run.runDateTime) }}</div>\n <div class=\"col col-actions\">\n <button class=\"icon-btn\" title=\"View details\" (click)=\"SelectRun(run); $event.stopPropagation()\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n <button class=\"icon-btn\" title=\"Re-run test\" (click)=\"RerunTest(run); $event.stopPropagation()\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n </button>\n </div>\n </div>\n }\n }\n </div>\n\n <!-- Detail Panel (slide-in) -->\n @if (SelectedRun) {\n <div class=\"detail-overlay\" (click)=\"CloseDetailPanel()\"></div>\n <div class=\"detail-panel\">\n <div class=\"detail-panel-header\">\n <div class=\"detail-title-section\">\n <h3>{{ SelectedRun.testName }}</h3>\n <app-test-status-badge [status]=\"SelectedRun.status\"></app-test-status-badge>\n </div>\n <button class=\"close-btn\" (click)=\"CloseDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <div class=\"detail-panel-body\">\n <!-- Metrics row -->\n <div class=\"detail-metrics\">\n <div class=\"detail-metric\">\n <span class=\"dm-label\">Score</span>\n <app-score-indicator [score]=\"SelectedRun.score\" [showBar]=\"true\"></app-score-indicator>\n </div>\n <div class=\"detail-metric\">\n <span class=\"dm-label\">Duration</span>\n <span class=\"dm-value\">{{ FormatDuration(SelectedRun.duration) }}</span>\n </div>\n <div class=\"detail-metric\">\n <span class=\"dm-label\">Cost</span>\n <app-cost-display [cost]=\"SelectedRun.cost\"></app-cost-display>\n </div>\n <div class=\"detail-metric\">\n <span class=\"dm-label\">Started</span>\n <span class=\"dm-value\">{{ FormatDateTime(SelectedRun.runDateTime) }}</span>\n </div>\n </div>\n\n <!-- Evaluation Badge (expanded) -->\n <div class=\"detail-section\">\n <h4><i class=\"fa-solid fa-clipboard-check\"></i> Evaluation</h4>\n <app-evaluation-badge\n [executionStatus]=\"SelectedRun.status\"\n [originalStatus]=\"SelectedRun.status\"\n [autoScore]=\"SelectedRun.score\"\n [passedChecks]=\"SelectedRun.passedChecks\"\n [failedChecks]=\"SelectedRun.failedChecks\"\n [totalChecks]=\"SelectedRun.totalChecks\"\n [humanRating]=\"SelectedRun.humanRating\"\n [humanIsCorrect]=\"SelectedRun.humanIsCorrect\"\n [hasHumanFeedback]=\"SelectedRun.hasHumanFeedback\"\n [preferences]=\"EvalPreferences\"\n mode=\"expanded\"\n ></app-evaluation-badge>\n </div>\n\n <!-- Execution Context -->\n @if (SelectedRun.targetType) {\n <div class=\"detail-section\">\n <h4><i class=\"fa-solid fa-server\"></i> Execution Context</h4>\n <mj-execution-context></mj-execution-context>\n </div>\n }\n\n <!-- Inline Feedback Form -->\n <div class=\"detail-section feedback-section\">\n <h4><i class=\"fa-solid fa-comment-dots\"></i> Human Feedback</h4>\n @if (SelectedRun.hasHumanFeedback) {\n <div class=\"existing-feedback\">\n <span class=\"feedback-label\">Rating:</span>\n <span class=\"feedback-value\">{{ SelectedRun.humanRating }}/10</span>\n <span class=\"feedback-label\">Correct:</span>\n <span class=\"feedback-value\">\n @if (SelectedRun.humanIsCorrect === true) {\n <i class=\"fa-solid fa-check\" style=\"color: #22c55e\"></i> Yes\n } @else if (SelectedRun.humanIsCorrect === false) {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444\"></i> No\n } @else {\n --\n }\n </span>\n @if (SelectedRun.humanComments) {\n <div class=\"feedback-comments\">{{ SelectedRun.humanComments }}</div>\n }\n </div>\n } @else {\n <div class=\"feedback-form\">\n <div class=\"rating-row\">\n <label>Rating</label>\n <div class=\"rating-buttons\">\n @for (n of RatingValues; track n) {\n <button\n class=\"rating-btn\"\n [class.selected]=\"feedbackRating === n\"\n (click)=\"feedbackRating = n\"\n >\n {{ n }}\n </button>\n }\n </div>\n </div>\n <div class=\"correctness-row\">\n <label>Is the result correct?</label>\n <div class=\"toggle-group\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"feedbackIsCorrect === true\"\n (click)=\"feedbackIsCorrect = true\"\n >\n <i class=\"fa-solid fa-check\"></i> Yes\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"feedbackIsCorrect === false\"\n (click)=\"feedbackIsCorrect = false\"\n >\n <i class=\"fa-solid fa-times\"></i> No\n </button>\n </div>\n </div>\n <div class=\"comments-row\">\n <label>Comments</label>\n <textarea\n rows=\"3\"\n placeholder=\"Optional feedback comments...\"\n [value]=\"feedbackComments\"\n (input)=\"OnFeedbackCommentInput($event)\"\n ></textarea>\n </div>\n <button\n class=\"btn btn-primary submit-feedback-btn\"\n (click)=\"SubmitFeedback()\"\n [disabled]=\"IsSubmittingFeedback\"\n >\n <i class=\"fa-solid fa-paper-plane\"></i>\n {{ IsSubmittingFeedback ? 'Submitting...' : 'Submit Feedback' }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n `,\n styles: [`\n /* ==========================================\n Testing Runs Component\n ========================================== */\n\n .runs-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: #f8fafc;\n position: relative;\n }\n\n /* Page Header */\n .page-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 22px;\n color: #6366f1;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: #1e293b;\n }\n\n .header-actions {\n display: flex;\n gap: 10px;\n }\n\n /* Buttons */\n .btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: none;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n background: #3b82f6;\n color: white;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #2563eb;\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);\n }\n\n .btn-secondary {\n background: white;\n color: #475569;\n border: 1px solid #e2e8f0;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f1f5f9;\n }\n\n .spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n /* Filter Bar */\n .filter-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n margin-bottom: 20px;\n padding: 14px 20px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n }\n\n .filter-left {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .filter-chips {\n display: flex;\n gap: 6px;\n }\n\n .chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n background: #f1f5f9;\n border: 2px solid transparent;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n color: #64748b;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .chip:hover {\n background: #e2e8f0;\n }\n\n .chip.active {\n background: #6366f1;\n color: white;\n border-color: #6366f1;\n }\n\n .chip.active[data-status=\"running\"] {\n background: #3b82f6;\n border-color: #3b82f6;\n }\n\n .chip.active[data-status=\"passed\"] {\n background: #22c55e;\n border-color: #22c55e;\n }\n\n .chip.active[data-status=\"failed\"] {\n background: #ef4444;\n border-color: #ef4444;\n }\n\n .chip.active[data-status=\"error\"] {\n background: #f59e0b;\n border-color: #f59e0b;\n }\n\n .result-count {\n font-size: 12px;\n color: #94a3b8;\n font-weight: 500;\n white-space: nowrap;\n }\n\n .filter-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .time-select {\n padding: 8px 12px;\n border: 2px solid #e2e8f0;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #475569;\n background: white;\n cursor: pointer;\n }\n\n .time-select:focus {\n outline: none;\n border-color: #6366f1;\n }\n\n .search-box {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: #f8fafc;\n border: 2px solid #e2e8f0;\n border-radius: 8px;\n min-width: 220px;\n transition: border-color 0.2s ease;\n }\n\n .search-box:focus-within {\n border-color: #6366f1;\n background: white;\n }\n\n .search-box i {\n color: #94a3b8;\n font-size: 13px;\n }\n\n .search-box input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: #334155;\n }\n\n .search-box input::placeholder {\n color: #94a3b8;\n }\n\n .clear-search {\n border: none;\n background: transparent;\n color: #94a3b8;\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search:hover {\n color: #64748b;\n background: #e2e8f0;\n }\n\n /* Stats Row */\n .stats-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 14px;\n margin-bottom: 20px;\n }\n\n .stat-card {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px 20px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n }\n\n .stat-icon {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n }\n\n .stat-icon.total { background: rgba(99, 102, 241, 0.1); color: #6366f1; }\n .stat-icon.pass { background: rgba(34, 197, 94, 0.1); color: #22c55e; }\n .stat-icon.duration { background: rgba(139, 92, 246, 0.1); color: #8b5cf6; }\n .stat-icon.cost { background: rgba(245, 158, 11, 0.1); color: #f59e0b; }\n\n .stat-body {\n flex: 1;\n }\n\n .stat-value {\n font-size: 22px;\n font-weight: 700;\n color: #1e293b;\n line-height: 1.1;\n }\n\n .stat-label {\n font-size: 11px;\n font-weight: 600;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-top: 2px;\n }\n\n /* Runs Table */\n .runs-table-wrapper {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n background: #f8fafc;\n border-bottom: 1px solid #e2e8f0;\n font-size: 11px;\n font-weight: 700;\n color: #64748b;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 2fr 140px 120px 100px 100px 120px 90px;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid #f1f5f9;\n cursor: pointer;\n transition: background 0.15s ease;\n align-items: center;\n }\n\n .table-row:last-child {\n border-bottom: none;\n }\n\n .table-row:hover {\n background: #f8fafc;\n }\n\n .table-row.is-selected {\n background: rgba(99, 102, 241, 0.06);\n border-left: 3px solid #6366f1;\n }\n\n .table-row.is-running {\n background: rgba(59, 130, 246, 0.04);\n }\n\n .table-row.is-running .test-name-link::after {\n content: '';\n display: inline-block;\n width: 8px;\n height: 8px;\n background: #3b82f6;\n border-radius: 50%;\n margin-left: 8px;\n animation: pulse-dot 1.5s infinite;\n }\n\n @keyframes pulse-dot {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.3; }\n }\n\n .col {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: #334155;\n overflow: hidden;\n }\n\n .test-name-link {\n font-weight: 600;\n color: #1e293b;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .test-name-link:hover {\n color: #6366f1;\n text-decoration: underline;\n }\n\n .col-actions {\n gap: 6px;\n justify-content: flex-end;\n }\n\n .icon-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n color: #64748b;\n cursor: pointer;\n border-radius: 8px;\n font-size: 13px;\n transition: all 0.2s ease;\n }\n\n .icon-btn:hover {\n background: #6366f1;\n border-color: #6366f1;\n color: white;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n }\n\n /* Table states */\n .table-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 40px;\n }\n\n .table-empty {\n padding: 80px 40px;\n text-align: center;\n }\n\n .table-empty i {\n font-size: 48px;\n color: #cbd5e1;\n margin-bottom: 16px;\n }\n\n .table-empty p {\n font-size: 16px;\n color: #64748b;\n margin: 0 0 8px 0;\n }\n\n .empty-hint {\n font-size: 13px;\n color: #94a3b8;\n }\n\n /* Detail Panel Overlay */\n .detail-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.2);\n z-index: 999;\n }\n\n /* Detail Panel */\n .detail-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 520px;\n max-width: 90vw;\n background: white;\n box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.25s ease-out;\n }\n\n @keyframes slideIn {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n }\n\n .detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 20px 24px;\n border-bottom: 1px solid #e2e8f0;\n background: #f8fafc;\n }\n\n .detail-title-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .detail-title-section h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: #1e293b;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n color: #64748b;\n cursor: pointer;\n font-size: 14px;\n flex-shrink: 0;\n margin-left: 12px;\n transition: all 0.15s ease;\n }\n\n .close-btn:hover {\n background: #f1f5f9;\n color: #1e293b;\n }\n\n .detail-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .detail-metrics {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 24px;\n }\n\n .detail-metric {\n padding: 12px;\n background: #f8fafc;\n border-radius: 8px;\n border-left: 3px solid #6366f1;\n }\n\n .dm-label {\n display: block;\n font-size: 10px;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n }\n\n .dm-value {\n font-size: 14px;\n font-weight: 600;\n color: #1e293b;\n }\n\n .detail-section {\n margin-bottom: 24px;\n }\n\n .detail-section h4 {\n font-size: 13px;\n font-weight: 700;\n color: #475569;\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .detail-section h4 i {\n color: #6366f1;\n font-size: 14px;\n }\n\n /* Feedback Section */\n .existing-feedback {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n padding: 14px;\n background: #f0fdf4;\n border-radius: 8px;\n font-size: 13px;\n }\n\n .feedback-label {\n font-weight: 600;\n color: #64748b;\n }\n\n .feedback-value {\n color: #1e293b;\n font-weight: 500;\n }\n\n .feedback-comments {\n width: 100%;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid #dcfce7;\n font-size: 13px;\n color: #475569;\n font-style: italic;\n }\n\n .feedback-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .feedback-form label {\n display: block;\n font-size: 12px;\n font-weight: 600;\n color: #64748b;\n margin-bottom: 6px;\n }\n\n .rating-buttons {\n display: flex;\n gap: 4px;\n }\n\n .rating-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid #e2e8f0;\n background: white;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #64748b;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .rating-btn:hover {\n border-color: #6366f1;\n color: #6366f1;\n }\n\n .rating-btn.selected {\n background: #6366f1;\n border-color: #6366f1;\n color: white;\n }\n\n .toggle-group {\n display: flex;\n gap: 8px;\n }\n\n .toggle-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 2px solid #e2e8f0;\n background: white;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #64748b;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn.active {\n border-color: #6366f1;\n background: rgba(99, 102, 241, 0.08);\n color: #6366f1;\n }\n\n .comments-row textarea {\n width: 100%;\n padding: 10px 12px;\n border: 2px solid #e2e8f0;\n border-radius: 8px;\n font-size: 13px;\n font-family: inherit;\n color: #334155;\n resize: vertical;\n box-sizing: border-box;\n }\n\n .comments-row textarea:focus {\n outline: none;\n border-color: #6366f1;\n }\n\n .comments-row textarea::placeholder {\n color: #94a3b8;\n }\n\n .submit-feedback-btn {\n align-self: flex-start;\n }\n\n /* Responsive */\n @media (max-width: 1400px) {\n .stats-row {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 1200px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-left, .filter-right {\n justify-content: center;\n }\n\n .table-header, .table-row {\n grid-template-columns: 2fr 120px 100px 100px 80px;\n }\n\n .col-eval, .col-time {\n display: none;\n }\n }\n\n @media (max-width: 768px) {\n .stats-row {\n grid-template-columns: 1fr;\n }\n\n .detail-panel {\n width: 100vw;\n max-width: 100vw;\n }\n }\n `]\n})\nexport class TestingRunsComponent implements OnInit, OnDestroy {\n @Input() initialState: Record<string, unknown> | null = null;\n @Output() stateChange = new EventEmitter<Record<string, unknown>>();\n\n private destroy$ = new Subject<void>();\n private filterTrigger$ = new BehaviorSubject<void>(undefined);\n\n // Filter state\n filterState: RunsFilterState = {\n status: 'all',\n timeRange: 'month',\n searchText: ''\n };\n\n // Feedback form state\n feedbackRating = 5;\n feedbackIsCorrect: boolean | null = null;\n feedbackComments = '';\n IsSubmittingFeedback = false;\n IsRefreshing = false;\n\n SelectedRun: TestRunWithFeedbackSummary | null = null;\n\n EvalPreferences: EvaluationPreferences = { ...DEFAULT_EVALUATION_PREFERENCES, showAuto: true };\n\n // Observables\n FilteredRuns$!: Observable<TestRunWithFeedbackSummary[]>;\n FilteredStats$!: Observable<FilteredStats>;\n\n // Constants\n readonly StatusChips: Array<{ value: StatusFilter; label: string; icon: string }> = [\n { value: 'all', label: 'All', icon: '' },\n { value: 'running', label: 'Running', icon: 'fa-solid fa-spinner fa-spin' },\n { value: 'passed', label: 'Passed', icon: 'fa-solid fa-check' },\n { value: 'failed', label: 'Failed', icon: 'fa-solid fa-times' },\n { value: 'error', label: 'Error', icon: 'fa-solid fa-exclamation-triangle' }\n ];\n\n readonly RatingValues: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\n constructor(\n public instrumentationService: TestingInstrumentationService,\n private testingDialogService: TestingDialogService,\n private cdr: ChangeDetectorRef,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n ngOnInit(): void {\n this.applyInitialState();\n this.updateServiceDateRange();\n this.setupObservables();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n @HostListener('document:keydown.escape')\n OnEscapeKey(): void {\n if (this.SelectedRun) {\n this.CloseDetailPanel();\n }\n }\n\n // ------- Public Methods -------\n\n SetStatusFilter(status: StatusFilter): void {\n this.filterState.status = status;\n this.filterTrigger$.next();\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n OnTimeRangeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n this.filterState.timeRange = select.value as TimeRange;\n this.updateServiceDateRange();\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n OnSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.filterState.searchText = input.value;\n this.filterTrigger$.next();\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n ClearSearch(): void {\n this.filterState.searchText = '';\n this.filterTrigger$.next();\n this.emitStateChange();\n this.cdr.markForCheck();\n }\n\n Refresh(): void {\n this.IsRefreshing = true;\n this.instrumentationService.refresh();\n setTimeout(() => {\n this.IsRefreshing = false;\n this.cdr.markForCheck();\n }, 1000);\n }\n\n StartNewTest(): void {\n this.testingDialogService.OpenTestRunDialog({ viewContainerRef: this.viewContainerRef });\n }\n\n SelectRun(run: TestRunWithFeedbackSummary): void {\n this.SelectedRun = run;\n this.resetFeedbackForm();\n this.cdr.markForCheck();\n }\n\n CloseDetailPanel(): void {\n this.SelectedRun = null;\n this.cdr.markForCheck();\n }\n\n NavigateToTest(run: TestRunWithFeedbackSummary, event: MouseEvent): void {\n event.stopPropagation();\n SharedService.Instance.OpenEntityRecord('MJ: Test Runs', CompositeKey.FromID(run.id));\n }\n\n RerunTest(run: TestRunWithFeedbackSummary): void {\n if (!run.testId) return;\n this.testingDialogService.OpenTestDialog(run.testId, this.viewContainerRef);\n }\n\n async SubmitFeedback(): Promise<void> {\n if (!this.SelectedRun) return;\n\n this.IsSubmittingFeedback = true;\n this.cdr.markForCheck();\n\n const success = await this.instrumentationService.submitFeedback(\n this.SelectedRun.id,\n this.feedbackRating,\n this.feedbackIsCorrect === true,\n this.feedbackComments\n );\n\n this.IsSubmittingFeedback = false;\n\n if (success) {\n // Update the selected run to reflect feedback was submitted\n this.SelectedRun = {\n ...this.SelectedRun,\n hasHumanFeedback: true,\n humanRating: this.feedbackRating,\n humanIsCorrect: this.feedbackIsCorrect,\n humanComments: this.feedbackComments\n };\n }\n\n this.cdr.markForCheck();\n }\n\n OnFeedbackCommentInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n this.feedbackComments = textarea.value;\n }\n\n TrackByRunId(_index: number, run: TestRunWithFeedbackSummary): string {\n return run.id;\n }\n\n // ------- Formatting Helpers -------\n\n FormatDuration(milliseconds: number): string {\n if (milliseconds < 1000) return `${Math.round(milliseconds)}ms`;\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n if (minutes > 0) return `${minutes}m ${seconds % 60}s`;\n return `${seconds}s`;\n }\n\n FormatRelativeTime(date: Date): string {\n const now = Date.now();\n const then = date instanceof Date ? date.getTime() : new Date(date).getTime();\n const diffMs = now - then;\n const diffMinutes = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n\n if (diffMinutes < 1) return 'Just now';\n if (diffMinutes < 60) return `${diffMinutes}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n\n return this.formatShortDate(date);\n }\n\n FormatDateTime(date: Date): string {\n const d = date instanceof Date ? date : new Date(date);\n return d.toLocaleString(undefined, {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n });\n }\n\n FormatPercent(value: number): string {\n return `${Math.round(value)}%`;\n }\n\n FormatCostTotal(cost: number): string {\n if (cost < 0.01) return '$0.00';\n if (cost < 1) return `$${cost.toFixed(2)}`;\n return `$${cost.toFixed(2)}`;\n }\n\n // ------- Private Methods -------\n\n private setupObservables(): void {\n const data$ = this.instrumentationService.testRunsWithFeedback$.pipe(\n takeUntil(this.destroy$)\n );\n\n this.FilteredRuns$ = combineLatest([data$, this.filterTrigger$]).pipe(\n map(([runs]) => this.applyClientFilters(runs)),\n takeUntil(this.destroy$)\n );\n\n this.FilteredStats$ = this.FilteredRuns$.pipe(\n map(runs => this.computeStats(runs)),\n takeUntil(this.destroy$)\n );\n }\n\n private applyClientFilters(runs: TestRunWithFeedbackSummary[]): TestRunWithFeedbackSummary[] {\n let filtered = runs;\n\n filtered = this.filterByStatus(filtered);\n filtered = this.filterBySearch(filtered);\n filtered = this.sortRunsWithRunningFirst(filtered);\n\n return filtered;\n }\n\n private filterByStatus(runs: TestRunWithFeedbackSummary[]): TestRunWithFeedbackSummary[] {\n const status = this.filterState.status;\n if (status === 'all') return runs;\n\n const statusMap: Record<string, string[]> = {\n running: ['Running'],\n passed: ['Passed'],\n failed: ['Failed'],\n error: ['Error', 'Timeout']\n };\n\n const validStatuses = statusMap[status] ?? [];\n return runs.filter(r => validStatuses.includes(r.status));\n }\n\n private filterBySearch(runs: TestRunWithFeedbackSummary[]): TestRunWithFeedbackSummary[] {\n const text = this.filterState.searchText.toLowerCase().trim();\n if (!text) return runs;\n return runs.filter(r => r.testName.toLowerCase().includes(text));\n }\n\n private sortRunsWithRunningFirst(runs: TestRunWithFeedbackSummary[]): TestRunWithFeedbackSummary[] {\n return [...runs].sort((a, b) => {\n // Running tests at the top\n if (a.status === 'Running' && b.status !== 'Running') return -1;\n if (a.status !== 'Running' && b.status === 'Running') return 1;\n // Then by StartedAt DESC\n return b.runDateTime.getTime() - a.runDateTime.getTime();\n });\n }\n\n private computeStats(runs: TestRunWithFeedbackSummary[]): FilteredStats {\n const total = runs.length;\n if (total === 0) {\n return { totalRuns: 0, passRate: 0, avgDuration: 0, totalCost: 0 };\n }\n\n const passed = runs.filter(r => r.status === 'Passed').length;\n const passRate = (passed / total) * 100;\n\n const completedRuns = runs.filter(r => r.duration > 0 && r.status !== 'Running');\n const avgDuration = completedRuns.length > 0\n ? completedRuns.reduce((sum, r) => sum + r.duration, 0) / completedRuns.length\n : 0;\n\n const totalCost = runs.reduce((sum, r) => sum + r.cost, 0);\n\n return { totalRuns: total, passRate, avgDuration, totalCost };\n }\n\n private updateServiceDateRange(): void {\n const now = new Date();\n let startDate: Date;\n\n switch (this.filterState.timeRange) {\n case 'today':\n startDate = new Date(now);\n startDate.setHours(0, 0, 0, 0);\n break;\n case 'week':\n startDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n break;\n case 'month':\n startDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n break;\n case '90days':\n startDate = new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000);\n break;\n default:\n startDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n break;\n }\n\n this.instrumentationService.setDateRange(startDate, now);\n }\n\n private applyInitialState(): void {\n if (!this.initialState) return;\n\n const state = this.initialState;\n if (state['status'] && typeof state['status'] === 'string') {\n this.filterState.status = state['status'] as StatusFilter;\n }\n if (state['timeRange'] && typeof state['timeRange'] === 'string') {\n this.filterState.timeRange = state['timeRange'] as TimeRange;\n }\n if (state['searchText'] && typeof state['searchText'] === 'string') {\n this.filterState.searchText = state['searchText'] as string;\n }\n }\n\n private emitStateChange(): void {\n this.stateChange.emit({\n status: this.filterState.status,\n timeRange: this.filterState.timeRange,\n searchText: this.filterState.searchText\n });\n }\n\n private resetFeedbackForm(): void {\n this.feedbackRating = 5;\n this.feedbackIsCorrect = null;\n this.feedbackComments = '';\n this.IsSubmittingFeedback = false;\n }\n\n private formatShortDate(date: Date): string {\n const d = date instanceof Date ? date : new Date(date);\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"oracle-breakdown-table.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/oracle-breakdown-table.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle-breakdown-table.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/oracle-breakdown-table.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\n\nexport interface OracleResult {\n name: string;\n status: 'Passed' | 'Failed' | 'Skipped' | 'Error';\n score: number;\n cost: number;\n duration: number; // milliseconds\n errorMessage?: string;\n details?: any;\n}\n\n@Component({\n standalone: false,\n selector: 'app-oracle-breakdown-table',\n template: `\n <div class=\"oracle-breakdown\">\n <div class=\"breakdown-header\">\n <h4>\n <i class=\"fa-solid fa-balance-scale\"></i>\n Oracle Results\n </h4>\n @if (results && results.length > 0) {\n <div class=\"aggregate-score\">\n <span class=\"label\">Aggregate:</span>\n <app-score-indicator [score]=\"getAggregateScore()\" [showBar]=\"false\"></app-score-indicator>\n </div>\n }\n </div>\n \n <div class=\"breakdown-content\">\n @if (results && results.length > 0) {\n <div class=\"oracle-table\">\n <div class=\"table-header\">\n <div class=\"header-cell\">Oracle</div>\n <div class=\"header-cell\">Status</div>\n <div class=\"header-cell\">Score</div>\n <div class=\"header-cell\">Cost</div>\n <div class=\"header-cell\">Duration</div>\n </div>\n \n @for (oracle of results; track oracle.name) {\n <div class=\"table-row\" [class.has-error]=\"oracle.errorMessage\">\n <div class=\"table-cell\">\n <div class=\"oracle-name\">\n @if (oracle.status === 'Passed') {\n <i class=\"fa-solid fa-check-circle oracle-icon\"></i>\n }\n @if (oracle.status === 'Failed') {\n <i class=\"fa-solid fa-times-circle oracle-icon\"></i>\n }\n @if (oracle.status === 'Error') {\n <i class=\"fa-solid fa-exclamation-triangle oracle-icon\"></i>\n }\n @if (oracle.status === 'Skipped') {\n <i class=\"fa-solid fa-forward oracle-icon\"></i>\n }\n <span>{{ oracle.name }}</span>\n </div>\n </div>\n <div class=\"table-cell\">\n <app-test-status-badge [status]=\"oracle.status\" [showIcon]=\"false\"></app-test-status-badge>\n </div>\n <div class=\"table-cell\">\n <app-score-indicator [score]=\"oracle.score\" [showBar]=\"true\"></app-score-indicator>\n </div>\n <div class=\"table-cell\">\n <app-cost-display [cost]=\"oracle.cost\" [showIcon]=\"true\" [decimals]=\"6\"></app-cost-display>\n </div>\n <div class=\"table-cell\">\n {{ formatDuration(oracle.duration) }}\n </div>\n </div>\n \n @if (oracle.errorMessage) {\n <div class=\"error-row\">\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ oracle.errorMessage }}\n </div>\n </div>\n }\n }\n </div>\n \n <div class=\"breakdown-summary\">\n <div class=\"summary-item\">\n <span class=\"summary-label\">Total Cost:</span>\n <app-cost-display [cost]=\"getTotalCost()\" [showIcon]=\"true\"></app-cost-display>\n </div>\n <div class=\"summary-item\">\n <span class=\"summary-label\">Total Duration:</span>\n <span class=\"summary-value\">{{ formatDuration(getTotalDuration()) }}</span>\n </div>\n <div class=\"summary-item\">\n <span class=\"summary-label\">Oracles Run:</span>\n <span class=\"summary-value\">{{ results.length }}</span>\n </div>\n </div>\n } @else {\n <div class=\"no-results\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No oracle results available</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .oracle-breakdown {\n background: white;\n border-radius: 8px;\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .breakdown-header {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .breakdown-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .breakdown-header h4 i {\n color: #2196f3;\n }\n\n .aggregate-score {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n }\n\n .aggregate-score .label {\n color: #666;\n font-weight: 500;\n }\n\n .breakdown-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n }\n\n .oracle-table {\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 2fr 120px 150px 120px 100px;\n gap: 12px;\n padding: 12px 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n font-size: 11px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 2fr 120px 150px 120px 100px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid #f0f0f0;\n align-items: center;\n transition: background 0.2s ease;\n }\n\n .table-row:hover {\n background: #f8f9fa;\n }\n\n .table-row:last-child {\n border-bottom: none;\n }\n\n .table-row.has-error {\n border-left: 3px solid #f44336;\n }\n\n .table-cell {\n font-size: 12px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .oracle-name {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n }\n\n .oracle-icon {\n font-size: 11px;\n }\n\n .oracle-icon.fa-check-circle {\n color: #4caf50;\n }\n\n .oracle-icon.fa-times-circle {\n color: #f44336;\n }\n\n .oracle-icon.fa-exclamation-triangle {\n color: #ff9800;\n }\n\n .oracle-icon.fa-forward {\n color: #9e9e9e;\n }\n\n .error-row {\n padding: 8px 16px;\n background: #fff3e0;\n border-bottom: 1px solid #f0f0f0;\n border-left: 3px solid #ff9800;\n }\n\n .error-message {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 11px;\n color: #e65100;\n font-family: monospace;\n line-height: 1.4;\n }\n\n .error-message i {\n flex-shrink: 0;\n margin-top: 2px;\n }\n\n .breakdown-summary {\n margin-top: 16px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 6px;\n display: flex;\n justify-content: space-around;\n gap: 16px;\n }\n\n .summary-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: center;\n }\n\n .summary-label {\n font-size: 10px;\n color: #666;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .summary-value {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #999;\n gap: 12px;\n }\n\n .no-results i {\n font-size: 36px;\n color: #ddd;\n }\n\n .no-results p {\n margin: 0;\n font-size: 13px;\n }\n\n @media (max-width: 768px) {\n .table-header,\n .table-row {\n grid-template-columns: 1fr;\n gap: 8px;\n }\n\n .table-cell {\n display: block;\n }\n\n .breakdown-summary {\n flex-direction: column;\n gap: 12px;\n }\n }\n `]\n})\nexport class OracleBreakdownTableComponent {\n @Input() results: OracleResult[] = [];\n\n formatDuration(milliseconds: number): string {\n if (milliseconds < 1000) {\n return `${milliseconds}ms`;\n }\n\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m ${seconds % 60}s`;\n } else if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n } else {\n return `${seconds}s`;\n }\n }\n\n getAggregateScore(): number {\n if (!this.results || this.results.length === 0) return 0;\n const total = this.results.reduce((sum, r) => sum + r.score, 0);\n return total / this.results.length;\n }\n\n getTotalCost(): number {\n if (!this.results || this.results.length === 0) return 0;\n return this.results.reduce((sum, r) => sum + r.cost, 0);\n }\n\n getTotalDuration(): number {\n if (!this.results || this.results.length === 0) return 0;\n return this.results.reduce((sum, r) => sum + r.duration, 0);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"suite-tree.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/suite-tree.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suite-tree.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/suite-tree.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { SuiteHierarchyNode } from '../../services/testing-instrumentation.service';\n\n@Component({\n standalone: false,\n selector: 'app-suite-tree',\n template: `\n <div class=\"suite-tree\">\n <div class=\"tree-header\">\n <h4>\n <i class=\"fa-solid fa-folder-tree\"></i>\n Test Suites\n </h4>\n <div class=\"tree-actions\">\n <button class=\"tree-action-btn\" (click)=\"expandAll()\" title=\"Expand All\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n <button class=\"tree-action-btn\" (click)=\"collapseAll()\" title=\"Collapse All\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"tree-content\">\n @if (suites && suites.length > 0) {\n @for (suite of suites; track suite.id) {\n <div>\n <app-suite-tree-node\n [node]=\"suite\"\n [level]=\"0\"\n [selectedId]=\"selectedSuiteId\"\n (nodeClick)=\"onNodeClick($event)\"\n (toggleExpand)=\"onToggleExpand($event)\"\n ></app-suite-tree-node>\n </div>\n }\n } @else {\n <div class=\"no-suites\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No test suites found</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .suite-tree {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .tree-header {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .tree-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .tree-header h4 i {\n color: #2196f3;\n }\n\n .tree-actions {\n display: flex;\n gap: 6px;\n }\n\n .tree-action-btn {\n background: white;\n border: 1px solid #ddd;\n padding: 6px 10px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 11px;\n color: #666;\n transition: all 0.2s ease;\n }\n\n .tree-action-btn:hover {\n background: #e9ecef;\n border-color: #ccc;\n color: #333;\n }\n\n .tree-action-btn i {\n font-size: 10px;\n }\n\n .tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n }\n\n .no-suites {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #999;\n gap: 12px;\n }\n\n .no-suites i {\n font-size: 36px;\n color: #ddd;\n }\n\n .no-suites p {\n margin: 0;\n font-size: 13px;\n }\n `]\n})\nexport class SuiteTreeComponent {\n @Input() suites: SuiteHierarchyNode[] = [];\n @Input() selectedSuiteId: string | null = null;\n @Output() suiteSelect = new EventEmitter<string>();\n\n onNodeClick(suiteId: string): void {\n this.suiteSelect.emit(suiteId);\n }\n\n onToggleExpand(node: SuiteHierarchyNode): void {\n node.expanded = !node.expanded;\n }\n\n expandAll(): void {\n this.setExpandedRecursive(this.suites, true);\n }\n\n collapseAll(): void {\n this.setExpandedRecursive(this.suites, false);\n }\n\n private setExpandedRecursive(nodes: SuiteHierarchyNode[], expanded: boolean): void {\n nodes.forEach(node => {\n node.expanded = expanded;\n if (node.children && node.children.length > 0) {\n this.setExpandedRecursive(node.children, expanded);\n }\n });\n }\n}\n\n@Component({\n standalone: false,\n selector: 'app-suite-tree-node',\n template: `\n <div class=\"tree-node\" [style.padding-left.px]=\"level * 16\">\n <div\n class=\"node-content\"\n [class.selected]=\"node.id === selectedId\"\n (click)=\"onClick()\"\n >\n @if (node.children && node.children.length > 0) {\n <button\n class=\"expand-btn\"\n (click)=\"onToggle($event)\"\n >\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!node.expanded\" [class.fa-chevron-down]=\"node.expanded\"></i>\n </button>\n }\n @if (!node.children || node.children.length === 0) {\n <span class=\"expand-placeholder\"></span>\n }\n \n <i class=\"fa-solid fa-folder suite-icon\"></i>\n \n <span class=\"suite-name\">{{ node.name }}</span>\n \n <div class=\"suite-metrics\">\n <span class=\"test-count\" title=\"Test Count\">\n <i class=\"fa-solid fa-flask\"></i>\n {{ node.testCount }}\n </span>\n <span class=\"pass-rate\" [class]=\"getPassRateClass(node.passRate)\" title=\"Pass Rate\">\n {{ node.passRate.toFixed(0) }}%\n </span>\n </div>\n </div>\n \n @if (node.expanded && node.children && node.children.length > 0) {\n @for (child of node.children; track child.id) {\n <div>\n <app-suite-tree-node\n [node]=\"child\"\n [level]=\"level + 1\"\n [selectedId]=\"selectedId\"\n (nodeClick)=\"nodeClick.emit($event)\"\n (toggleExpand)=\"toggleExpand.emit($event)\"\n ></app-suite-tree-node>\n </div>\n }\n }\n </div>\n `,\n styles: [`\n .tree-node {\n margin-bottom: 2px;\n }\n\n .node-content {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s ease;\n gap: 8px;\n }\n\n .node-content:hover {\n background: #f8f9fa;\n }\n\n .node-content.selected {\n background: rgba(33, 150, 243, 0.1);\n border-left: 3px solid #2196f3;\n }\n\n .expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 2px 6px;\n color: #666;\n font-size: 10px;\n transition: color 0.2s ease;\n min-width: 20px;\n }\n\n .expand-btn:hover {\n color: #333;\n }\n\n .expand-placeholder {\n width: 20px;\n }\n\n .suite-icon {\n font-size: 12px;\n color: #ff9800;\n }\n\n .suite-name {\n flex: 1;\n font-size: 12px;\n font-weight: 500;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .suite-metrics {\n display: flex;\n gap: 8px;\n align-items: center;\n font-size: 10px;\n }\n\n .test-count {\n display: flex;\n align-items: center;\n gap: 3px;\n color: #666;\n background: #f0f0f0;\n padding: 2px 6px;\n border-radius: 10px;\n }\n\n .test-count i {\n font-size: 9px;\n }\n\n .pass-rate {\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n min-width: 36px;\n text-align: center;\n }\n\n .pass-rate.excellent {\n background: rgba(76, 175, 80, 0.1);\n color: #4caf50;\n }\n\n .pass-rate.good {\n background: rgba(139, 195, 74, 0.1);\n color: #8bc34a;\n }\n\n .pass-rate.fair {\n background: rgba(255, 193, 7, 0.1);\n color: #ffc107;\n }\n\n .pass-rate.poor {\n background: rgba(244, 67, 54, 0.1);\n color: #f44336;\n }\n `]\n})\nexport class SuiteTreeNodeComponent {\n @Input() node!: SuiteHierarchyNode;\n @Input() level = 0;\n @Input() selectedId: string | null = null;\n @Output() nodeClick = new EventEmitter<string>();\n @Output() toggleExpand = new EventEmitter<SuiteHierarchyNode>();\n\n onClick(): void {\n this.nodeClick.emit(this.node.id);\n }\n\n onToggle(event: Event): void {\n event.stopPropagation();\n this.toggleExpand.emit(this.node);\n }\n\n getPassRateClass(passRate: number): string {\n if (passRate >= 90) return 'excellent';\n if (passRate >= 75) return 'good';\n if (passRate >= 50) return 'fair';\n return 'poor';\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"test-run-detail-panel.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/test-run-detail-panel.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-run-detail-panel.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/test-run-detail-panel.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { TestRunSummary } from '../../services/testing-instrumentation.service';\nimport { OracleResult } from './oracle-breakdown-table.component';\n\n@Component({\n standalone: false,\n selector: 'app-test-run-detail-panel',\n template: `\n @if (testRun) {\n <div class=\"test-run-detail-panel\">\n <div class=\"detail-header\">\n <div class=\"header-left\">\n <h3>{{ testRun.testName }}</h3>\n <div class=\"header-meta\">\n <span class=\"test-type\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ testRun.testType }}\n </span>\n <span class=\"run-time\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ testRun.runDateTime | date:'medium' }}\n </span>\n </div>\n </div>\n <div class=\"header-right\">\n <app-test-status-badge [status]=\"testRun.status\"></app-test-status-badge>\n @if (closeable) {\n <button class=\"close-btn\" (click)=\"onClose()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"detail-content\">\n <!-- Main Metrics -->\n <div class=\"metrics-section\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Score</div>\n <app-score-indicator [score]=\"testRun.score\" [showBar]=\"true\" [showIcon]=\"true\"></app-score-indicator>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Cost</div>\n <app-cost-display [cost]=\"testRun.cost\" [showIcon]=\"true\"></app-cost-display>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(testRun.duration) }}</div>\n </div>\n @if (testRun.targetType) {\n <div class=\"metric-card\">\n <div class=\"metric-label\">Target</div>\n <div class=\"metric-value target-link\" (click)=\"onViewTarget()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n {{ testRun.targetType }}\n </div>\n </div>\n }\n </div>\n <!-- Oracle Breakdown -->\n @if (oracleResults && oracleResults.length > 0) {\n <div class=\"oracle-section\">\n <app-oracle-breakdown-table [results]=\"oracleResults\"></app-oracle-breakdown-table>\n </div>\n }\n <!-- Result Details -->\n @if (resultDetails) {\n <div class=\"details-section\">\n <div class=\"section-header\">\n <h4>\n <i class=\"fa-solid fa-file-alt\"></i>\n Result Details\n </h4>\n <button class=\"toggle-btn\" (click)=\"toggleResultDetails()\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!showResultDetails\" [class.fa-chevron-up]=\"showResultDetails\"></i>\n </button>\n </div>\n @if (showResultDetails) {\n <div class=\"details-content\">\n <pre class=\"json-viewer\">{{ formatJSON(resultDetails) }}</pre>\n </div>\n }\n </div>\n }\n <!-- Feedback Section -->\n <div class=\"feedback-section\">\n <div class=\"section-header\">\n <h4>\n <i class=\"fa-solid fa-comment-dots\"></i>\n Human Feedback\n </h4>\n </div>\n <div class=\"feedback-form\">\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Rating (1-10)</label>\n <input\n type=\"number\"\n [(ngModel)]=\"feedbackRating\"\n min=\"1\"\n max=\"10\"\n class=\"rating-input\"\n />\n </div>\n <div class=\"form-group\">\n <label>Is Correct?</label>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"feedbackIsCorrect\" />\n <span>Yes, the automated result is correct</span>\n </label>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label>Comments</label>\n <textarea\n [(ngModel)]=\"feedbackComments\"\n rows=\"3\"\n class=\"comments-textarea\"\n placeholder=\"Enter your feedback comments...\"\n ></textarea>\n </div>\n <button class=\"submit-btn\" (click)=\"onSubmitFeedback()\" [disabled]=\"submittingFeedback\">\n <i class=\"fa-solid fa-paper-plane\"></i>\n {{ submittingFeedback ? 'Submitting...' : 'Submit Feedback' }}\n </button>\n </div>\n </div>\n </div>\n </div>\n }\n `,\n styles: [`\n .test-run-detail-panel {\n background: white;\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n\n .detail-header {\n padding: 20px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta span {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: white;\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content {\n padding: 20px;\n }\n\n .metrics-section {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card {\n background: #f8f9fa;\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid #2196f3;\n }\n\n .metric-label {\n font-size: 11px;\n color: #666;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value {\n font-size: 16px;\n font-weight: 600;\n color: #333;\n }\n\n .target-link {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #2196f3;\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link:hover {\n text-decoration: underline;\n }\n\n .oracle-section,\n .details-section,\n .feedback-section {\n margin-bottom: 24px;\n }\n\n .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .section-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header h4 i {\n color: #2196f3;\n }\n\n .toggle-btn {\n background: none;\n border: none;\n color: #666;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: background 0.2s ease;\n }\n\n .toggle-btn:hover {\n background: #f0f0f0;\n }\n\n .details-content {\n margin-top: 12px;\n }\n\n .json-viewer {\n background: #f8f9fa;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form {\n background: #f8f9fa;\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group label {\n font-size: 12px;\n font-weight: 600;\n color: #666;\n }\n\n .rating-input {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #333;\n cursor: pointer;\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea {\n padding: 10px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn {\n background: #2196f3;\n color: white;\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn:hover:not(:disabled) {\n background: #1976d2;\n }\n\n .submit-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .metrics-section {\n grid-template-columns: 1fr;\n }\n }\n `]\n})\nexport class TestRunDetailPanelComponent {\n @Input() testRun!: TestRunSummary;\n @Input() oracleResults: OracleResult[] = [];\n @Input() resultDetails: any = null;\n @Input() closeable = true;\n\n @Output() close = new EventEmitter<void>();\n @Output() viewTarget = new EventEmitter<{ type: string; id: string }>();\n @Output() submitFeedback = new EventEmitter<{\n rating: number;\n isCorrect: boolean;\n comments: string;\n }>();\n\n showResultDetails = false;\n feedbackRating = 5;\n feedbackIsCorrect = true;\n feedbackComments = '';\n submittingFeedback = false;\n\n formatDuration(milliseconds: number): string {\n if (milliseconds < 1000) {\n return `${milliseconds}ms`;\n }\n\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n }\n\n formatJSON(obj: any): string {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (error) {\n return String(obj);\n }\n }\n\n toggleResultDetails(): void {\n this.showResultDetails = !this.showResultDetails;\n }\n\n onClose(): void {\n this.close.emit();\n }\n\n onViewTarget(): void {\n if (this.testRun.targetType && this.testRun.targetLogID) {\n this.viewTarget.emit({\n type: this.testRun.targetType,\n id: this.testRun.targetLogID\n });\n }\n }\n\n async onSubmitFeedback(): Promise<void> {\n this.submittingFeedback = true;\n this.submitFeedback.emit({\n rating: this.feedbackRating,\n isCorrect: this.feedbackIsCorrect,\n comments: this.feedbackComments\n });\n\n // Reset after submission\n setTimeout(() => {\n this.submittingFeedback = false;\n this.feedbackRating = 5;\n this.feedbackIsCorrect = true;\n this.feedbackComments = '';\n }, 1000);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"testing-instrumentation.service.js","sourceRoot":"","sources":["../../../src/Testing/services/testing-instrumentation.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing-instrumentation.service.js","sourceRoot":"","sources":["../../../src/Testing/services/testing-instrumentation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAc,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;;AA0KrE,MAAM,OAAO,6BAA6B;IACvB,WAAW,GAAG,IAAI,eAAe,CAA6B;QAC7E,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,eAAe;QACvE,GAAG,EAAE,IAAI,IAAI,EAAE;KAChB,CAAC,CAAC;IAEc,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IACzD,gBAAgB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IAC5D,gBAAgB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;IAClD,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAClD,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAE3C,qBAAqB;IACZ,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IAC7C,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IAEtD,gBAAe,CAAC;IAEhB,oBAAoB;IACX,KAAK,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAC5E,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACtC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,SAAS,GAAG,aAAa,CAAC;QACjC,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,gBAAgB;KACtB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAC1C,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACtF,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAChD,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EACxC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,UAAU,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAC3C,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,gBAAgB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACvF,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EACjD,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,cAAc,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACrF,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAC/C,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEF;;OAEG;IACM,qBAAqB,GAAG,aAAa,CAAC;QAC7C,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,gBAAgB;KACtB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,EACtD,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACtC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEF;;OAEG;IACM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,EAClD,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEM,oBAAoB;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,YAAY,CAAC,KAAW,EAAE,GAAS;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,OAAsB;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,iBAAiB,CAAC,MAAqB;QACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAEzB,6DAA6D;QAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEpE,qGAAqG;QACrG,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;YACzC;gBACE,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;gBAC5F,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC;gBACxE,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAA0B,CAAC;QAE3D,iBAAiB;QACjB,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEtC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAEjE,MAAM,iBAAiB,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5F,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAElF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QACzF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;YAC9C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxG,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7G,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;YACrC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM;YAC9B,CAAC,CAAC,CAAC,CAAC;QAEN,2CAA2C;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAE1E,+CAA+C;QAC/C,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE9C,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAgB;YACzD,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,iBAAiB,aAAa,CAAC,WAAW,EAAE,sBAAsB,WAAW,CAAC,WAAW,EAAE,GAAG;YAC3G,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;YACxB,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,IAAI,EAAE,CAAC;QACtD,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;YAC9C,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG;YACtF,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,aAAa,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtF,OAAO;YACL,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,eAAe;YACf,kBAAkB;YAClB,aAAa;YACb,WAAW,EAAE,UAAU,CAAC,MAAM;YAC9B,YAAY,EAAE,WAAW,CAAC,MAAM;YAChC,aAAa;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,UAAoB;QACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAAsB;YAC3D,UAAU,EAAE,wBAAwB;YACpC,WAAW,EAAE,kBAAkB,MAAM,IAAI;YACzC,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEzF,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE/C,IAAI,MAAM,GAAG,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;QAE7F,IAAI,WAAW,EAAE,CAAC;YAChB,qCAAqC;YACrC,MAAM,IAAI,qFAAqF,WAAW,IAAI,CAAC;QACjH,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,mEAAmE,UAAU,IAAI,CAAC;QAC9F,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAgB;YAC7C,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC;YACvH,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAEtC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;gBACjC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjF,CAAC,CAAC,IAAI,CAAC;YAET,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;gBACxB,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,cAAc;gBACpC,SAAS,EAAE,EAAE,EAAE,8BAA8B;gBAC7C,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;gBAC/B,MAAM,EAAE,GAAG,CAAC,MAA+D;gBAC3E,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;gBACrB,QAAQ,EAAE,WAAW,IAAI,SAAS;oBAChC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;oBAC7C,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC;gBACtB,WAAW,EAAE,SAAS;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAEzB,mEAAmE;QACnE,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEpE,kFAAkF;QAClF,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAA+E;YACpH,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;YAC5F,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;YACtD,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9C,kBAAkB;QAClB,MAAM,KAAK,GAAyB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,CAAC;QAIJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEzD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,wFAAwF;YACxF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,cAAc;YAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;gBACtE,CAAC,CAAC,CAAC,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;gBAChE,CAAC,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;QAEtD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAElD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAE9C,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAIzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAW;YACxC,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;YAC5F,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC;YAClE,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAErC,yBAAyB;QACzB,MAAM,MAAM,GAAoB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACxD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAEnF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACpC,IAAI,CAAC,CAAC,CAAC,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAClF,OAAO,OAAO,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;YACtE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAEnE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM;gBAC5E,CAAC,CAAC,CAAC,CAAC;YAEN,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE3E,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;YAC3F,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC9C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC9B,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;oBACxG,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC7G,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;gBACrC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM;gBAC9B,CAAC,CAAC,CAAC,CAAC;YAEN,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,UAAU,CAAC,MAAM;gBAC5B,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,YAAY;gBACZ,SAAS;gBACT,eAAe;aAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAIzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAe;YAC5C,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;YAC5F,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC;YAC1E,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAEtC,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsD,CAAC;QAElF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACtD,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,QAAQ;YACR,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1F,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;aAC/C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,uBAAuB;QACvB,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACzD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;aACzC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,gBAAgB;QAChB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI;iBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;iBACzD,GAAG,CAAC,CAAC,CAAC,EAAE;gBACP,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxG,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7G,OAAO,OAAO,GAAG,SAAS,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEL,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;gBACtC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;gBAC7D,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,0DAA0D;QAC1D,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;QACvE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACvC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,QAAQ;YACR,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,SAAS,EAAE,OAAO,CAAC,KAAK;SACzB,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAE7C,uBAAuB;QACvB,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6C,CAAC;QAChF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,QAAQ;YACR,QAAQ,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,UAAU,EAAE,OAAO,CAAC,KAAK;SAC1B,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE3C,OAAO;YACL,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,UAAU;YACV,WAAW,EAAE,EAAE,EAAE,wBAAwB;YACzC,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAMzB,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;YACzD;gBACE,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;gBAC5F,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC;gBACtD,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD;gBACE,UAAU,EAAE,wBAAwB;gBACpC,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,GAAG;gBACpD,MAAM,EAAE,CAAC,WAAW,CAAC;gBACrB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAA4B,CAAC;QAC7D,MAAM,SAAS,GAAG,cAAc,CAAC,OAAyB,CAAC;QAE3D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5F,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,GAAG,CAAC,EAAE;oBACjB,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;oBAC/B,cAAc,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;oBAC9B,eAAe,EAAE,GAAG,CAAC,MAAM;oBAC3B,WAAW;oBACX,MAAM,EAAE,aAAa;iBACtB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;oBACrE,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,GAAG,CAAC,EAAE;wBACjB,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;wBAC/B,cAAc,EAAE,GAAG,CAAC,KAAK;wBACzB,eAAe,EAAE,GAAG,CAAC,MAAM;wBAC3B,WAAW;wBACX,MAAM,EAAE,mBAAmB;qBAC5B,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;oBAC3E,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,GAAG,CAAC,EAAE;wBACjB,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;wBAC/B,cAAc,EAAE,GAAG,CAAC,KAAK;wBACzB,eAAe,EAAE,GAAG,CAAC,MAAM;wBAC3B,WAAW;wBACX,MAAM,EAAE,kBAAkB;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAIzB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmB;YACxD,UAAU,EAAE,wBAAwB;YACpC,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG;YAC5F,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC/B,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;QAEvC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,aAAa,EAAE,CAAC;gBAChB,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE,CAAC;gBACZ,aAAa,EAAE,CAAC;gBAChB,gBAAgB,EAAE,CAAC;gBACnB,YAAY,EAAE,CAAC;aAChB,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC;QAEzF,kEAAkE;QAClE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;QAE3E,MAAM,aAAa,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC;QAC3D,MAAM,gBAAgB,GAAG,CAAC,cAAc,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC;QAEhE,8FAA8F;QAC9F,MAAM,YAAY,GAAG,aAAa,CAAC;QAEnC,OAAO;YACL,aAAa;YACb,aAAa,EAAE,aAAa,EAAE,2CAA2C;YACzE,SAAS;YACT,aAAa;YACb,gBAAgB;YAChB,YAAY;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAE,QAAgB;QAC1F,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAA0B,wBAAwB,CAAC,CAAC;YACxG,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,gCAAgC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAIzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAa;YAC1C,UAAU,EAAE,qBAAqB;YACjC,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC;YAC/F,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAEvC,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEnD,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,IAAI,GAAG,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;YAC7E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAqB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACrF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1E,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEjG,OAAO;gBACL,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,YAAY,EAAE;gBACzD,SAAS;gBACT,YAAY;gBACZ,OAAO;gBACP,UAAU;gBACV,QAAQ,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/D,YAAY,EAAE,CAAC,EAAE,yCAAyC;gBAC1D,SAAS;gBACT,eAAe,EAAE,CAAC,EAAE,yCAAyC;gBAC7D,WAAW,EAAE,CAAC,EAAE,wBAAwB;gBACxC,SAAS,EAAE,CAAC,CAAC,wBAAwB;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,iBAAiB,CAAC,KAAW,EAAE,GAAS;QAC9C,MAAM,OAAO,GAAW,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhC,OAAO,OAAO,GAAG,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,KAAW,EAAE,GAAS;QAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAE9C,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;QAClC,CAAC;aAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;QACvC,CAAC;aAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB;QACpC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE/C,IAAI,MAAM,GAAG,iBAAiB,KAAK,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;QAE7F,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,qFAAqF,WAAW,IAAI,CAAC;QACjH,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,mEAAmE,UAAU,IAAI,CAAC;QAC9F,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAmBzB,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;YACzD;gBACE,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC;gBACtK,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD;gBACE,UAAU,EAAE,wBAAwB;gBACpC,WAAW,EAAE,iBAAiB,KAAK,CAAC,WAAW,EAAE,GAAG;gBACpD,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;gBAC9D,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,CAAwB,CAAC;QACvE,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QAE5E,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC7D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;gBACjC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjF,CAAC,CAAC,IAAI,CAAC;YAET,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEzC,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;gBACxB,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,cAAc;gBACpC,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS;gBAC/B,MAAM,EAAE,GAAG,CAAC,MAA2E;gBACvF,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;gBACrB,QAAQ,EAAE,WAAW,IAAI,SAAS;oBAChC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;oBAC7C,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC;gBACtB,WAAW,EAAE,SAAS;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;gBAClC,SAAS;gBACT,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,iBAAiB;gBACjB,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;gBACrC,cAAc,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;gBAC3C,aAAa,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI;gBACzC,gBAAgB,EAAE,CAAC,CAAC,QAAQ;gBAC5B,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAI;aACjC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,IAAkC;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO;gBACL,SAAS,EAAE,CAAC;gBACZ,kBAAkB,EAAE,CAAC;gBACrB,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,CAAC;gBAClB,kBAAkB,EAAE,CAAC;gBACrB,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,CAAC;gBACjB,gBAAgB,EAAE,CAAC;gBACnB,kBAAkB,EAAE,CAAC;gBACrB,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC;aACjB,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC/C,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAC/C,CAAC;QACF,MAAM,eAAe,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,yBAAyB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM;YAClF,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5F,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;YACnE,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3F,oBAAoB;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,CAC9D,CAAC;QACF,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxB,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;YAC1C,MAAM,mBAAmB,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC;YAEtD,IAAI,kBAAkB,KAAK,mBAAmB,EAAE,CAAC;gBAC/C,cAAc,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,CAAC,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG;YAC/C,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,SAAS;YACT,kBAAkB,EAAE,aAAa,CAAC,MAAM;YACxC,cAAc,EAAE,UAAU,CAAC,MAAM;YACjC,eAAe;YACf,kBAAkB,EAAE,QAAQ,CAAC,MAAM;YACnC,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,cAAc;YACd,gBAAgB;YAChB,kBAAkB,EAAE,SAAS,CAAC,MAAM;YACpC,YAAY;YACZ,YAAY;YACZ,aAAa;SACd,CAAC;IACJ,CAAC;uHA17BU,6BAA6B;gEAA7B,6BAA6B,WAA7B,6BAA6B,mBAF5B,MAAM;;iFAEP,6BAA6B;cAHzC,UAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, from, combineLatest } from 'rxjs';\nimport { map, switchMap, shareReplay, tap } from 'rxjs/operators';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport { MJTestRunFeedbackEntity } from '@memberjunction/core-entities';\nimport { TestEngineBase } from '@memberjunction/testing-engine-base';\n\nexport interface TestingDashboardKPIs {\n totalTestsActive: number;\n passRateThisMonth: number;\n totalCostThisMonth: number;\n averageDuration: number;\n testsPendingReview: number;\n totalTestRuns: number;\n failedTests: number;\n skippedTests: number;\n passRateTrend: number; // Percentage change from previous period\n}\n\nexport interface TestRunSummary {\n id: string;\n testId: string;\n testName: string;\n suiteName: string;\n testType: string;\n status: 'Passed' | 'Failed' | 'Skipped' | 'Error' | 'Running' | 'Timeout';\n score: number; // 0-1.0000\n duration: number; // milliseconds\n cost: number; // USD\n runDateTime: Date;\n targetType: string;\n targetLogID: string;\n}\n\nexport interface SuiteHierarchyNode {\n id: string;\n name: string;\n parentID: string | null;\n level: number;\n children: SuiteHierarchyNode[];\n testCount: number;\n passRate: number;\n totalCost: number;\n averageScore: number;\n expanded?: boolean;\n}\n\nexport interface VersionMetrics {\n version: string; // GitCommit + AgentVersion combination\n gitCommit: string;\n agentVersion: string;\n runDate: Date;\n totalTests: number;\n passRate: number;\n averageScore: number;\n totalCost: number;\n averageDuration: number;\n newFailures: number;\n newPasses: number;\n}\n\nexport interface TestTrendData {\n timestamp: Date;\n totalRuns: number;\n passed: number;\n failed: number;\n skipped: number;\n errors: number;\n averageScore: number;\n totalCost: number;\n averageDuration: number;\n}\n\nexport interface FeedbackPending {\n testRunID: string;\n testName: string;\n automatedScore: number;\n automatedStatus: string;\n runDateTime: Date;\n reason: 'no-feedback' | 'high-score-failed' | 'low-score-passed';\n}\n\nexport interface TestAnalytics {\n topFailingTests: Array<{ testName: string; failureCount: number; failureRate: number }>;\n mostExpensiveTests: Array<{ testName: string; totalCost: number; avgCost: number }>;\n slowestTests: Array<{ testName: string; avgDuration: number; maxDuration: number }>;\n costByType: Array<{ testType: string; totalCost: number; testCount: number }>;\n costBySuite: Array<{ suiteName: string; totalCost: number; testCount: number }>;\n passingRateByType: Array<{ testType: string; passRate: number; totalTests: number }>;\n}\n\nexport interface FeedbackStats {\n totalFeedback: number;\n reviewedCount: number;\n avgRating: number;\n agreementRate: number;\n disagreementRate: number;\n accuracyRate: number;\n}\n\n/**\n * Extended test run summary with human feedback data included\n */\nexport interface TestRunWithFeedbackSummary extends TestRunSummary {\n // Human feedback\n humanRating: number | null;\n humanIsCorrect: boolean | null;\n humanComments: string | null;\n hasHumanFeedback: boolean;\n feedbackId: string | null;\n // Checks (from automated evaluation)\n passedChecks: number | null;\n failedChecks: number | null;\n totalChecks: number | null;\n}\n\n/**\n * Aggregated evaluation metrics\n */\nexport interface EvaluationSummaryMetrics {\n totalRuns: number;\n // Execution\n execCompletedCount: number;\n execErrorCount: number;\n execSuccessRate: number;\n // Human\n humanReviewedCount: number;\n humanPendingCount: number;\n humanAvgRating: number;\n humanCorrectRate: number;\n // Auto\n autoEvaluatedCount: number;\n autoAvgScore: number;\n autoPassRate: number;\n // Agreement\n agreementRate: number;\n}\n\n// Simple result types for optimized queries (only fields needed for display)\ninterface TestRunSimple {\n ID: string;\n TestID: string;\n Test: string;\n Status: string;\n Score: number;\n CostUSD: number;\n StartedAt: Date;\n CompletedAt: Date | null;\n TargetType: string;\n TargetLogID: string;\n}\n\ninterface TestSuiteRunSimple {\n ID: string;\n TestSuiteID: string;\n TotalTests: number;\n PassedTests: number;\n TotalCostUSD: number;\n StartedAt: Date;\n GitCommit: string;\n AgentVersion: string;\n}\n\ninterface TestRunFeedbackSimple {\n ID: string;\n TestRunID: string;\n Rating: number;\n IsCorrect: boolean;\n Comments: string;\n CreatedAt: Date;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestingInstrumentationService {\n private readonly _dateRange$ = new BehaviorSubject<{ start: Date; end: Date }>({\n start: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), // Last 30 days\n end: new Date()\n });\n\n private readonly _suiteFilter$ = new BehaviorSubject<string | null>(null);\n private readonly _testTypeFilter$ = new BehaviorSubject<string | null>(null);\n private readonly _refreshTrigger$ = new BehaviorSubject<number>(0);\n private readonly _isLoading$ = new BehaviorSubject<boolean>(false);\n private readonly metadata = new Metadata();\n\n // Expose observables\n readonly isLoading$ = this._isLoading$.asObservable();\n readonly dateRange$ = this._dateRange$.asObservable();\n\n constructor() {}\n\n // Main data streams\n readonly kpis$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadKPIs())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly testRuns$ = combineLatest([\n this._refreshTrigger$,\n this._dateRange$,\n this._suiteFilter$,\n this._testTypeFilter$\n ]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadTestRuns())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly suiteHierarchy$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadSuiteHierarchy())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly trends$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadTrends())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly analytics$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadAnalytics())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly pendingFeedback$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadPendingFeedback())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n readonly feedbackStats$ = combineLatest([this._refreshTrigger$, this._dateRange$]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadFeedbackStats())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n /**\n * Test runs with feedback data joined - for evaluation display\n */\n readonly testRunsWithFeedback$ = combineLatest([\n this._refreshTrigger$,\n this._dateRange$,\n this._suiteFilter$,\n this._testTypeFilter$\n ]).pipe(\n tap(() => this._isLoading$.next(true)),\n switchMap(() => from(this.loadTestRunsWithFeedback())),\n tap(() => this.checkLoadingComplete()),\n shareReplay(1)\n );\n\n /**\n * Aggregated evaluation metrics from test runs with feedback\n */\n readonly evaluationMetrics$ = this.testRunsWithFeedback$.pipe(\n map(runs => this.calculateEvaluationMetrics(runs)),\n shareReplay(1)\n );\n\n private checkLoadingComplete(): void {\n setTimeout(() => {\n this._isLoading$.next(false);\n }, 100);\n }\n\n setDateRange(start: Date, end: Date): void {\n this._dateRange$.next({ start, end });\n }\n\n setSuiteFilter(suiteId: string | null): void {\n this._suiteFilter$.next(suiteId);\n }\n\n setTestTypeFilter(typeId: string | null): void {\n this._testTypeFilter$.next(typeId);\n }\n\n refresh(): void {\n this._refreshTrigger$.next(this._refreshTrigger$.value + 1);\n }\n\n private async loadKPIs(): Promise<TestingDashboardKPIs> {\n const { start, end } = this._dateRange$.value;\n const rv = new RunView();\n\n // Get Tests from TestEngineBase cache instead of querying DB\n const engine = TestEngineBase.Instance;\n const activeTests = engine.Tests.filter(t => t.Status === 'Active');\n\n // Only load runs via RunView (not cached in engine) - use simple result type with only needed fields\n const [testRunsResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`,\n Fields: ['ID', 'Status', 'Score', 'CostUSD', 'StartedAt', 'CompletedAt'],\n ResultType: 'simple',\n CacheLocal: true\n }\n ]);\n\n const testRuns = testRunsResult.Results as TestRunSimple[];\n\n // Calculate KPIs\n const totalTestsActive = activeTests.length;\n const totalTestRuns = testRuns.length;\n\n const passedRuns = testRuns.filter(r => r.Status === 'Passed');\n const failedRuns = testRuns.filter(r => r.Status === 'Failed');\n const skippedRuns = testRuns.filter(r => r.Status === 'Skipped');\n\n const passRateThisMonth = totalTestRuns > 0 ? (passedRuns.length / totalTestRuns) * 100 : 0;\n\n const totalCostThisMonth = testRuns.reduce((sum, r) => sum + (r.CostUSD || 0), 0);\n\n const completedRuns = testRuns.filter(r => r.CompletedAt != null && r.StartedAt != null);\n const averageDuration = completedRuns.length > 0\n ? completedRuns.reduce((sum, r) => {\n const startTime = r.StartedAt instanceof Date ? r.StartedAt.getTime() : new Date(r.StartedAt).getTime();\n const endTime = r.CompletedAt instanceof Date ? r.CompletedAt.getTime() : new Date(r.CompletedAt!).getTime();\n return sum + (endTime - startTime);\n }, 0) / completedRuns.length\n : 0;\n\n // Count tests pending review (no feedback)\n const testRunIDs = testRuns.map(r => r.ID);\n const testsPendingReview = await this.countTestsPendingReview(testRunIDs);\n\n // Calculate trend (compare to previous period)\n const periodDuration = end.getTime() - start.getTime();\n const previousStart = new Date(start.getTime() - periodDuration);\n const previousEnd = new Date(start.getTime());\n\n const previousRunsResult = await rv.RunView<TestRunSimple>({\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${previousStart.toISOString()}' AND StartedAt < '${previousEnd.toISOString()}'`,\n Fields: ['ID', 'Status'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const previousRuns = previousRunsResult.Results || [];\n const previousPassRate = previousRuns.length > 0\n ? (previousRuns.filter(r => r.Status === 'Passed').length / previousRuns.length) * 100\n : 0;\n\n const passRateTrend = previousPassRate > 0 ? passRateThisMonth - previousPassRate : 0;\n\n return {\n totalTestsActive,\n passRateThisMonth,\n totalCostThisMonth,\n averageDuration,\n testsPendingReview,\n totalTestRuns,\n failedTests: failedRuns.length,\n skippedTests: skippedRuns.length,\n passRateTrend\n };\n }\n\n private async countTestsPendingReview(testRunIDs: string[]): Promise<number> {\n if (testRunIDs.length === 0) return 0;\n\n const rv = new RunView();\n const idList = testRunIDs.join(\"','\");\n\n const feedbackResult = await rv.RunView<{TestRunID: string}>({\n EntityName: 'MJ: Test Run Feedbacks',\n ExtraFilter: `TestRunID IN ('${idList}')`,\n Fields: ['TestRunID'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const feedbackTestRunIDs = new Set((feedbackResult.Results || []).map(f => f.TestRunID));\n\n return testRunIDs.filter(id => !feedbackTestRunIDs.has(id)).length;\n }\n\n private async loadTestRuns(): Promise<TestRunSummary[]> {\n const { start, end } = this._dateRange$.value;\n const suiteFilter = this._suiteFilter$.value;\n const typeFilter = this._testTypeFilter$.value;\n\n let filter = `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`;\n\n if (suiteFilter) {\n // Need to join through TestSuiteTest\n filter += ` AND TestID IN (SELECT TestID FROM [__mj].[vwTestSuiteTests] WHERE TestSuiteID = '${suiteFilter}')`;\n }\n\n if (typeFilter) {\n filter += ` AND TestID IN (SELECT ID FROM [__mj].[vwTests] WHERE TypeID = '${typeFilter}')`;\n }\n\n const rv = new RunView();\n const result = await rv.RunView<TestRunSimple>({\n EntityName: 'MJ: Test Runs',\n ExtraFilter: filter,\n OrderBy: 'StartedAt DESC',\n MaxRows: 1000,\n Fields: ['ID', 'TestID', 'Test', 'Status', 'Score', 'CostUSD', 'StartedAt', 'CompletedAt', 'TargetType', 'TargetLogID'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const testRuns = result.Results || [];\n\n return testRuns.map(run => {\n const startedAt = run.StartedAt instanceof Date ? run.StartedAt : new Date(run.StartedAt);\n const completedAt = run.CompletedAt\n ? (run.CompletedAt instanceof Date ? run.CompletedAt : new Date(run.CompletedAt))\n : null;\n\n return {\n id: run.ID,\n testId: run.TestID || '',\n testName: run.Test || 'Unknown Test',\n suiteName: '', // Will be populated from join\n testType: run.Test || 'Unknown',\n status: run.Status as 'Passed' | 'Failed' | 'Skipped' | 'Error' | 'Running',\n score: run.Score || 0,\n duration: completedAt && startedAt\n ? completedAt.getTime() - startedAt.getTime()\n : (startedAt ? Date.now() - startedAt.getTime() : 0),\n cost: run.CostUSD || 0,\n runDateTime: startedAt,\n targetType: run.TargetType || '',\n targetLogID: run.TargetLogID || ''\n };\n });\n }\n\n private async loadSuiteHierarchy(): Promise<SuiteHierarchyNode[]> {\n const { start, end } = this._dateRange$.value;\n const rv = new RunView();\n\n // Get Test Suites from TestEngineBase cache instead of querying DB\n const engine = TestEngineBase.Instance;\n const suites = engine.TestSuites.filter(s => s.Status === 'Active');\n\n // Only load test runs via RunView (not cached in engine) - use simple result type\n const testRunsResult = await rv.RunView<{ID: string; TestID: string; Status: string; Score: number; CostUSD: number}>({\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`,\n Fields: ['ID', 'TestID', 'Status', 'Score', 'CostUSD'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const testRuns = testRunsResult.Results || [];\n\n // Build hierarchy\n const nodes: SuiteHierarchyNode[] = suites.map(suite => ({\n id: suite.ID,\n name: suite.Name,\n parentID: suite.ParentID || null,\n level: 0,\n children: [],\n testCount: 0,\n passRate: 0,\n totalCost: 0,\n averageScore: 0,\n expanded: false\n }));\n\n // Calculate metrics for each suite (simplified - would need TestSuiteTest join for accuracy)\n type SimpleTestRun = {ID: string; TestID: string; Status: string; Score: number; CostUSD: number};\n const suiteTestRuns = new Map<string, SimpleTestRun[]>();\n\n testRuns.forEach(run => {\n // This is simplified - would need to query TestSuiteTest to get actual suite membership\n const suiteID = run.TestID; // Placeholder\n if (!suiteTestRuns.has(suiteID)) {\n suiteTestRuns.set(suiteID, []);\n }\n suiteTestRuns.get(suiteID)!.push(run);\n });\n\n nodes.forEach(node => {\n const runs = suiteTestRuns.get(node.id) || [];\n node.testCount = runs.length;\n node.passRate = runs.length > 0\n ? (runs.filter(r => r.Status === 'Passed').length / runs.length) * 100\n : 0;\n node.totalCost = runs.reduce((sum, r) => sum + (r.CostUSD || 0), 0);\n node.averageScore = runs.length > 0\n ? runs.reduce((sum, r) => sum + (r.Score || 0), 0) / runs.length\n : 0;\n });\n\n // Build tree structure\n const rootNodes: SuiteHierarchyNode[] = [];\n const nodeMap = new Map<string, SuiteHierarchyNode>();\n\n nodes.forEach(node => nodeMap.set(node.id, node));\n\n nodes.forEach(node => {\n if (node.parentID) {\n const parent = nodeMap.get(node.parentID);\n if (parent) {\n parent.children.push(node);\n node.level = parent.level + 1;\n } else {\n rootNodes.push(node);\n }\n } else {\n rootNodes.push(node);\n }\n });\n\n return rootNodes;\n }\n\n private async loadTrends(): Promise<TestTrendData[]> {\n const { start, end } = this._dateRange$.value;\n\n // Create time buckets\n const buckets = this.createTimeBuckets(start, end);\n const rv = new RunView();\n\n // Load all test runs for the period - use simple result type with only needed fields\n type TrendRun = {Status: string; Score: number; CostUSD: number; StartedAt: string | Date; CompletedAt: string | Date | null};\n const result = await rv.RunView<TrendRun>({\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`,\n OrderBy: 'StartedAt',\n Fields: ['Status', 'Score', 'CostUSD', 'StartedAt', 'CompletedAt'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const allRuns = result.Results || [];\n\n // Aggregate into buckets\n const trends: TestTrendData[] = buckets.map(bucketStart => {\n const bucketEnd = new Date(bucketStart.getTime() + this.getBucketSize(start, end));\n\n const bucketRuns = allRuns.filter(r => {\n if (!r.StartedAt) return false;\n const runTime = r.StartedAt instanceof Date ? r.StartedAt : new Date(r.StartedAt);\n return runTime >= bucketStart && runTime < bucketEnd;\n });\n\n const passed = bucketRuns.filter(r => r.Status === 'Passed').length;\n const failed = bucketRuns.filter(r => r.Status === 'Failed').length;\n const skipped = bucketRuns.filter(r => r.Status === 'Skipped').length;\n const errors = bucketRuns.filter(r => r.Status === 'Error').length;\n\n const averageScore = bucketRuns.length > 0\n ? bucketRuns.reduce((sum, r) => sum + (r.Score || 0), 0) / bucketRuns.length\n : 0;\n\n const totalCost = bucketRuns.reduce((sum, r) => sum + (r.CostUSD || 0), 0);\n\n const completedRuns = bucketRuns.filter(r => r.CompletedAt != null && r.StartedAt != null);\n const averageDuration = completedRuns.length > 0\n ? completedRuns.reduce((sum, r) => {\n const startTime = r.StartedAt instanceof Date ? r.StartedAt.getTime() : new Date(r.StartedAt).getTime();\n const endTime = r.CompletedAt instanceof Date ? r.CompletedAt.getTime() : new Date(r.CompletedAt!).getTime();\n return sum + (endTime - startTime);\n }, 0) / completedRuns.length\n : 0;\n\n return {\n timestamp: bucketStart,\n totalRuns: bucketRuns.length,\n passed,\n failed,\n skipped,\n errors,\n averageScore,\n totalCost,\n averageDuration\n };\n });\n\n return trends;\n }\n\n private async loadAnalytics(): Promise<TestAnalytics> {\n const { start, end } = this._dateRange$.value;\n const rv = new RunView();\n\n // Use simple result type with only needed fields\n type AnalyticsRun = {Test: string; Status: string; Score: number; CostUSD: number; StartedAt: string | Date; CompletedAt: string | Date | null};\n const result = await rv.RunView<AnalyticsRun>({\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`,\n Fields: ['Test', 'Status', 'Score', 'CostUSD', 'StartedAt', 'CompletedAt'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const testRuns = result.Results || [];\n\n // Group by test name\n const testMetrics = new Map<string, { runs: AnalyticsRun[], failures: number }>();\n\n testRuns.forEach(run => {\n const testName = run.Test || 'Unknown';\n if (!testMetrics.has(testName)) {\n testMetrics.set(testName, { runs: [], failures: 0 });\n }\n const metrics = testMetrics.get(testName)!;\n metrics.runs.push(run);\n if (run.Status === 'Failed' || run.Status === 'Error') {\n metrics.failures++;\n }\n });\n\n // Top failing tests\n const topFailingTests = Array.from(testMetrics.entries())\n .map(([testName, metrics]) => ({\n testName,\n failureCount: metrics.failures,\n failureRate: metrics.runs.length > 0 ? (metrics.failures / metrics.runs.length) * 100 : 0\n }))\n .sort((a, b) => b.failureCount - a.failureCount)\n .slice(0, 10);\n\n // Most expensive tests\n const mostExpensiveTests = Array.from(testMetrics.entries())\n .map(([testName, metrics]) => {\n const totalCost = metrics.runs.reduce((sum, r) => sum + (r.CostUSD || 0), 0);\n const avgCost = metrics.runs.length > 0 ? totalCost / metrics.runs.length : 0;\n return { testName, totalCost, avgCost };\n })\n .sort((a, b) => b.totalCost - a.totalCost)\n .slice(0, 10);\n\n // Slowest tests\n const slowestTests = Array.from(testMetrics.entries())\n .map(([testName, metrics]) => {\n const durations = metrics.runs\n .filter(r => r.CompletedAt != null && r.StartedAt != null)\n .map(r => {\n const startTime = r.StartedAt instanceof Date ? r.StartedAt.getTime() : new Date(r.StartedAt).getTime();\n const endTime = r.CompletedAt instanceof Date ? r.CompletedAt.getTime() : new Date(r.CompletedAt!).getTime();\n return endTime - startTime;\n });\n\n const avgDuration = durations.length > 0\n ? durations.reduce((sum, d) => sum + d, 0) / durations.length\n : 0;\n const maxDuration = durations.length > 0 ? Math.max(...durations) : 0;\n\n return { testName, avgDuration, maxDuration };\n })\n .sort((a, b) => b.avgDuration - a.avgDuration)\n .slice(0, 10);\n\n // Cost by type (simplified - would need actual type data)\n const typeMetrics = new Map<string, { cost: number, count: number }>();\n testRuns.forEach(run => {\n const type = run.Test || 'Unknown';\n if (!typeMetrics.has(type)) {\n typeMetrics.set(type, { cost: 0, count: 0 });\n }\n const metrics = typeMetrics.get(type)!;\n metrics.cost += run.CostUSD || 0;\n metrics.count++;\n });\n\n const costByType = Array.from(typeMetrics.entries())\n .map(([testType, metrics]) => ({\n testType,\n totalCost: metrics.cost,\n testCount: metrics.count\n }))\n .sort((a, b) => b.totalCost - a.totalCost);\n\n // Passing rate by type\n const typePassingMetrics = new Map<string, { total: number, passed: number }>();\n testRuns.forEach(run => {\n const type = run.Test || 'Unknown';\n if (!typePassingMetrics.has(type)) {\n typePassingMetrics.set(type, { total: 0, passed: 0 });\n }\n const metrics = typePassingMetrics.get(type)!;\n metrics.total++;\n if (run.Status === 'Passed') {\n metrics.passed++;\n }\n });\n\n const passingRateByType = Array.from(typePassingMetrics.entries())\n .map(([testType, metrics]) => ({\n testType,\n passRate: metrics.total > 0 ? (metrics.passed / metrics.total) * 100 : 0,\n totalTests: metrics.total\n }))\n .sort((a, b) => a.passRate - b.passRate);\n\n return {\n topFailingTests,\n mostExpensiveTests,\n slowestTests,\n costByType,\n costBySuite: [], // Would need suite data\n passingRateByType\n };\n }\n\n private async loadPendingFeedback(): Promise<FeedbackPending[]> {\n const { start, end } = this._dateRange$.value;\n const rv = new RunView();\n\n // Use simple result types with only needed fields\n type FeedbackTestRun = {ID: string; Test: string; Score: number; Status: string; StartedAt: string | Date};\n type FeedbackItem = {TestRunID: string};\n\n const [testRunsResult, feedbackResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Test Runs',\n ExtraFilter: `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`,\n Fields: ['ID', 'Test', 'Score', 'Status', 'StartedAt'],\n ResultType: 'simple',\n CacheLocal: true\n },\n {\n EntityName: 'MJ: Test Run Feedbacks',\n ExtraFilter: `CreatedAt >= '${start.toISOString()}'`,\n Fields: ['TestRunID'],\n ResultType: 'simple',\n CacheLocal: true\n }\n ]);\n\n const testRuns = testRunsResult.Results as FeedbackTestRun[];\n const feedbacks = feedbackResult.Results as FeedbackItem[];\n\n const feedbackTestRunIDs = new Set(feedbacks.map(f => f.TestRunID));\n\n const pending: FeedbackPending[] = [];\n\n testRuns.forEach(run => {\n const hasFeedback = feedbackTestRunIDs.has(run.ID);\n const runDateTime = run.StartedAt instanceof Date ? run.StartedAt : new Date(run.StartedAt);\n\n if (!hasFeedback) {\n pending.push({\n testRunID: run.ID,\n testName: run.Test || 'Unknown',\n automatedScore: run.Score || 0,\n automatedStatus: run.Status,\n runDateTime,\n reason: 'no-feedback'\n });\n } else {\n // Check for discrepancies\n if (run.Status === 'Failed' && run.Score != null && run.Score >= 0.8) {\n pending.push({\n testRunID: run.ID,\n testName: run.Test || 'Unknown',\n automatedScore: run.Score,\n automatedStatus: run.Status,\n runDateTime,\n reason: 'high-score-failed'\n });\n } else if (run.Status === 'Passed' && run.Score != null && run.Score < 0.5) {\n pending.push({\n testRunID: run.ID,\n testName: run.Test || 'Unknown',\n automatedScore: run.Score,\n automatedStatus: run.Status,\n runDateTime,\n reason: 'low-score-passed'\n });\n }\n }\n });\n\n return pending.sort((a, b) => b.runDateTime.getTime() - a.runDateTime.getTime());\n }\n\n private async loadFeedbackStats(): Promise<FeedbackStats> {\n const { start, end } = this._dateRange$.value;\n const rv = new RunView();\n\n // Load all feedback for the period - use simple result type with only needed fields\n type FeedbackStatItem = {Rating: number; IsCorrect: boolean};\n const feedbackResult = await rv.RunView<FeedbackStatItem>({\n EntityName: 'MJ: Test Run Feedbacks',\n ExtraFilter: `CreatedAt >= '${start.toISOString()}' AND CreatedAt <= '${end.toISOString()}'`,\n Fields: ['Rating', 'IsCorrect'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const feedbacks = feedbackResult.Results || [];\n const totalFeedback = feedbacks.length;\n\n if (totalFeedback === 0) {\n return {\n totalFeedback: 0,\n reviewedCount: 0,\n avgRating: 0,\n agreementRate: 0,\n disagreementRate: 0,\n accuracyRate: 0\n };\n }\n\n // Calculate average rating\n const avgRating = feedbacks.reduce((sum, f) => sum + (f.Rating || 0), 0) / totalFeedback;\n\n // Calculate agreement/disagreement rates based on IsCorrect field\n const correctCount = feedbacks.filter(f => f.IsCorrect === true).length;\n const incorrectCount = feedbacks.filter(f => f.IsCorrect === false).length;\n\n const agreementRate = (correctCount / totalFeedback) * 100;\n const disagreementRate = (incorrectCount / totalFeedback) * 100;\n\n // Accuracy rate is the same as agreement rate (% of times human agreed with automated result)\n const accuracyRate = agreementRate;\n\n return {\n totalFeedback,\n reviewedCount: totalFeedback, // All feedbacks in this query are reviewed\n avgRating,\n agreementRate,\n disagreementRate,\n accuracyRate\n };\n }\n\n async submitFeedback(testRunID: string, rating: number, isCorrect: boolean, comments: string): Promise<boolean> {\n try {\n const feedback = await this.metadata.GetEntityObject<MJTestRunFeedbackEntity>('MJ: Test Run Feedbacks');\n feedback.TestRunID = testRunID;\n feedback.Rating = rating;\n feedback.IsCorrect = isCorrect;\n feedback.Comments = comments;\n\n const result = await feedback.Save();\n if (result) {\n this.refresh(); // Refresh data after submission\n return true;\n }\n return false;\n } catch (error) {\n console.error('Error submitting feedback:', error);\n return false;\n }\n }\n\n async getVersionMetrics(): Promise<VersionMetrics[]> {\n const rv = new RunView();\n\n // Use simple result type with only needed fields\n type VersionRun = {TotalTests: number; PassedTests: number; TotalCostUSD: number; StartedAt: string | Date; GitCommit: string; AgentVersion: string};\n const result = await rv.RunView<VersionRun>({\n EntityName: 'MJ: Test Suite Runs',\n ExtraFilter: '',\n OrderBy: 'StartedAt DESC',\n MaxRows: 100,\n Fields: ['TotalTests', 'PassedTests', 'TotalCostUSD', 'StartedAt', 'GitCommit', 'AgentVersion'],\n ResultType: 'simple',\n CacheLocal: true\n });\n\n const suiteRuns = result.Results || [];\n\n // Group by version combination\n const versionMap = new Map<string, VersionRun[]>();\n\n suiteRuns.forEach(run => {\n const key = `${run.GitCommit || 'unknown'}_${run.AgentVersion || 'unknown'}`;\n if (!versionMap.has(key)) {\n versionMap.set(key, []);\n }\n versionMap.get(key)!.push(run);\n });\n\n const metrics: VersionMetrics[] = Array.from(versionMap.entries()).map(([key, runs]) => {\n const [gitCommit, agentVersion] = key.split('_');\n const latest = runs[0];\n\n const totalTests = runs.reduce((sum, r) => sum + (r.TotalTests || 0), 0);\n const totalPassed = runs.reduce((sum, r) => sum + (r.PassedTests || 0), 0);\n const totalCost = runs.reduce((sum, r) => sum + (r.TotalCostUSD || 0), 0);\n\n const runDate = latest.StartedAt instanceof Date ? latest.StartedAt : new Date(latest.StartedAt);\n\n return {\n version: `${gitCommit.substring(0, 7)} / ${agentVersion}`,\n gitCommit,\n agentVersion,\n runDate,\n totalTests,\n passRate: totalTests > 0 ? (totalPassed / totalTests) * 100 : 0,\n averageScore: 0, // Would need to calculate from test runs\n totalCost,\n averageDuration: 0, // Would need to calculate from test runs\n newFailures: 0, // Would need comparison\n newPasses: 0 // Would need comparison\n };\n });\n\n return metrics.sort((a, b) => b.runDate.getTime() - a.runDate.getTime());\n }\n\n private createTimeBuckets(start: Date, end: Date): Date[] {\n const buckets: Date[] = [];\n const bucketSize = this.getBucketSize(start, end);\n const current = new Date(start);\n\n while (current < end) {\n buckets.push(new Date(current));\n current.setTime(current.getTime() + bucketSize);\n }\n\n return buckets;\n }\n\n private getBucketSize(start: Date, end: Date): number {\n const duration = end.getTime() - start.getTime();\n const days = duration / (1000 * 60 * 60 * 24);\n\n if (days <= 1) {\n return 60 * 60 * 1000; // 1 hour\n } else if (days <= 7) {\n return 4 * 60 * 60 * 1000; // 4 hours\n } else if (days <= 30) {\n return 24 * 60 * 60 * 1000; // 1 day\n } else {\n return 7 * 24 * 60 * 60 * 1000; // 1 week\n }\n }\n\n /**\n * Load test runs with feedback data joined for evaluation display\n */\n private async loadTestRunsWithFeedback(): Promise<TestRunWithFeedbackSummary[]> {\n const { start, end } = this._dateRange$.value;\n const suiteFilter = this._suiteFilter$.value;\n const typeFilter = this._testTypeFilter$.value;\n\n let filter = `StartedAt >= '${start.toISOString()}' AND StartedAt <= '${end.toISOString()}'`;\n\n if (suiteFilter) {\n filter += ` AND TestID IN (SELECT TestID FROM [__mj].[vwTestSuiteTests] WHERE TestSuiteID = '${suiteFilter}')`;\n }\n\n if (typeFilter) {\n filter += ` AND TestID IN (SELECT ID FROM [__mj].[vwTests] WHERE TypeID = '${typeFilter}')`;\n }\n\n const rv = new RunView();\n\n // Load test runs with additional fields for evaluation\n type MJTestRunExtended = {\n ID: string;\n TestID: string;\n Test: string;\n Status: string;\n Score: number;\n CostUSD: number;\n StartedAt: Date;\n CompletedAt: Date | null;\n TargetType: string;\n TargetLogID: string;\n PassedChecks: number | null;\n FailedChecks: number | null;\n TotalChecks: number | null;\n };\n\n const [testRunsResult, feedbackResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Test Runs',\n ExtraFilter: filter,\n OrderBy: 'StartedAt DESC',\n MaxRows: 1000,\n Fields: ['ID', 'TestID', 'Test', 'Status', 'Score', 'CostUSD', 'StartedAt', 'CompletedAt', 'TargetType', 'TargetLogID', 'PassedChecks', 'FailedChecks', 'TotalChecks'],\n ResultType: 'simple',\n CacheLocal: true\n },\n {\n EntityName: 'MJ: Test Run Feedbacks',\n ExtraFilter: `CreatedAt >= '${start.toISOString()}'`,\n Fields: ['ID', 'TestRunID', 'Rating', 'IsCorrect', 'Comments'],\n ResultType: 'simple',\n CacheLocal: true\n }\n ]);\n\n const testRuns = (testRunsResult.Results || []) as MJTestRunExtended[];\n const feedbacks = (feedbackResult.Results || []) as TestRunFeedbackSimple[];\n\n // Create feedback lookup map\n const feedbackMap = new Map<string, TestRunFeedbackSimple>();\n feedbacks.forEach(f => {\n feedbackMap.set(f.TestRunID, f);\n });\n\n // Map test runs with feedback\n return testRuns.map(run => {\n const startedAt = run.StartedAt instanceof Date ? run.StartedAt : new Date(run.StartedAt);\n const completedAt = run.CompletedAt\n ? (run.CompletedAt instanceof Date ? run.CompletedAt : new Date(run.CompletedAt))\n : null;\n\n const feedback = feedbackMap.get(run.ID);\n\n return {\n id: run.ID,\n testId: run.TestID || '',\n testName: run.Test || 'Unknown Test',\n suiteName: '',\n testType: run.Test || 'Unknown',\n status: run.Status as 'Passed' | 'Failed' | 'Skipped' | 'Error' | 'Running' | 'Timeout',\n score: run.Score || 0,\n duration: completedAt && startedAt\n ? completedAt.getTime() - startedAt.getTime()\n : (startedAt ? Date.now() - startedAt.getTime() : 0),\n cost: run.CostUSD || 0,\n runDateTime: startedAt,\n targetType: run.TargetType || '',\n targetLogID: run.TargetLogID || '',\n // Checks\n passedChecks: run.PassedChecks,\n failedChecks: run.FailedChecks,\n totalChecks: run.TotalChecks,\n // Human feedback\n humanRating: feedback?.Rating ?? null,\n humanIsCorrect: feedback?.IsCorrect ?? null,\n humanComments: feedback?.Comments ?? null,\n hasHumanFeedback: !!feedback,\n feedbackId: feedback?.ID ?? null\n };\n });\n }\n\n /**\n * Calculate aggregated evaluation metrics from test runs with feedback\n */\n private calculateEvaluationMetrics(runs: TestRunWithFeedbackSummary[]): EvaluationSummaryMetrics {\n const totalRuns = runs.length;\n\n if (totalRuns === 0) {\n return {\n totalRuns: 0,\n execCompletedCount: 0,\n execErrorCount: 0,\n execSuccessRate: 0,\n humanReviewedCount: 0,\n humanPendingCount: 0,\n humanAvgRating: 0,\n humanCorrectRate: 0,\n autoEvaluatedCount: 0,\n autoAvgScore: 0,\n autoPassRate: 0,\n agreementRate: 0\n };\n }\n\n // Execution metrics\n const execCompleted = runs.filter(r =>\n r.status === 'Passed' || r.status === 'Failed'\n );\n const execErrors = runs.filter(r =>\n r.status === 'Error' || r.status === 'Timeout'\n );\n const execSuccessRate = totalRuns > 0 ? (execCompleted.length / totalRuns) * 100 : 0;\n\n // Human feedback metrics\n const reviewed = runs.filter(r => r.hasHumanFeedback);\n const pending = runs.filter(r => !r.hasHumanFeedback);\n const withRating = reviewed.filter(r => r.humanRating != null);\n const humanAvgRating = withRating.length > 0\n ? withRating.reduce((sum, r) => sum + (r.humanRating || 0), 0) / withRating.length\n : 0;\n const correct = reviewed.filter(r => r.humanIsCorrect === true);\n const humanCorrectRate = reviewed.length > 0 ? (correct.length / reviewed.length) * 100 : 0;\n\n // Auto score metrics\n const evaluated = runs.filter(r => r.score > 0);\n const autoAvgScore = evaluated.length > 0\n ? evaluated.reduce((sum, r) => sum + r.score, 0) / evaluated.length\n : 0;\n const autoPass = evaluated.filter(r => r.score >= 0.8);\n const autoPassRate = evaluated.length > 0 ? (autoPass.length / evaluated.length) * 100 : 0;\n\n // Agreement metrics\n const bothEvaluated = runs.filter(r =>\n r.hasHumanFeedback && r.score > 0 && r.humanIsCorrect != null\n );\n let agreementCount = 0;\n\n bothEvaluated.forEach(r => {\n const autoConsideredPass = r.score >= 0.5;\n const humanConsideredPass = r.humanIsCorrect === true;\n\n if (autoConsideredPass === humanConsideredPass) {\n agreementCount++;\n }\n });\n\n const agreementRate = bothEvaluated.length > 0\n ? (agreementCount / bothEvaluated.length) * 100\n : 0;\n\n return {\n totalRuns,\n execCompletedCount: execCompleted.length,\n execErrorCount: execErrors.length,\n execSuccessRate,\n humanReviewedCount: reviewed.length,\n humanPendingCount: pending.length,\n humanAvgRating,\n humanCorrectRate,\n autoEvaluatedCount: evaluated.length,\n autoAvgScore,\n autoPassRate,\n agreementRate\n };\n }\n}\n"]}