var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Component, ChangeDetectionStrategy } from '@angular/core';
import { Subject } from 'rxjs';
import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
import { RegisterClass } from '@memberjunction/global';
import { SharedService } from '@memberjunction/ng-shared';
import { TestRunFormComponent } from '../../generated/Entities/TestRun/testrun.form.component';
import * as i0 from "@angular/core";
import * as i1 from "@memberjunction/ng-shared";
import * as i2 from "@angular/router";
import * as i3 from "@angular/common";
import * as i4 from "@progress/kendo-angular-buttons";
function TestRunFormComponentExtended_a_3_Template(rf, ctx) { if (rf & 1) {
    const _r1 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "a", 37);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_a_3_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTest()); });
    i0.ɵɵelement(1, "i", 8);
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1(" ", ctx_r1.test.Name, " ");
} }
function TestRunFormComponentExtended_i_4_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "i", 38);
} }
function TestRunFormComponentExtended_span_18_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 39);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.test.Type);
} }
function TestRunFormComponentExtended_div_63_Template(rf, ctx) { if (rf & 1) {
    const _r3 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 22)(1, "span", 19);
    i0.ɵɵtext(2, "Part of Suite:");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "a", 37);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_63_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTestSuiteRun()); });
    i0.ɵɵtext(4);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate2(" ", ctx_r1.testSuiteRun.ID, " (Seq: ", ctx_r1.record.Sequence, ") ");
} }
function TestRunFormComponentExtended_span_78_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 40);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.aiAgentRuns.length + ctx_r1.aiPromptRuns.length);
} }
function TestRunFormComponentExtended_span_83_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 40);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.feedbacks.length);
} }
function TestRunFormComponentExtended_div_85_div_11_div_4_div_8_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 62);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const check_r5 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1("Weight: ", check_r5.weight, "");
} }
function TestRunFormComponentExtended_div_85_div_11_div_4_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 55)(1, "div", 56);
    i0.ɵɵelement(2, "i", 57);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 58)(4, "div", 59);
    i0.ɵɵtext(5);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "div", 60);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(8, TestRunFormComponentExtended_div_85_div_11_div_4_div_8_Template, 2, 1, "div", 61);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const check_r5 = ctx.$implicit;
    i0.ɵɵclassProp("passed", check_r5.passed)("failed", !check_r5.passed);
    i0.ɵɵadvance(2);
    i0.ɵɵclassProp("fa-check-circle", check_r5.passed)("fa-times-circle", !check_r5.passed);
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate(check_r5.name);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate(check_r5.message);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", check_r5.weight);
} }
function TestRunFormComponentExtended_div_85_div_11_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 52)(1, "h3");
    i0.ɵɵtext(2, "Check Results");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 53);
    i0.ɵɵtemplate(4, TestRunFormComponentExtended_div_85_div_11_div_4_Template, 9, 11, "div", 54);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(4);
    i0.ɵɵproperty("ngForOf", ctx_r1.getCheckResults());
} }
function TestRunFormComponentExtended_div_85_Template(rf, ctx) { if (rf & 1) {
    const _r4 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 41)(1, "div", 42)(2, "div", 43);
    i0.ɵɵelement(3, "i", 12);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(4, "div", 44)(5, "h2");
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(7, "div", 45);
    i0.ɵɵtext(8);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(9, "div", 46);
    i0.ɵɵtext(10);
    i0.ɵɵelementEnd()()();
    i0.ɵɵtemplate(11, TestRunFormComponentExtended_div_85_div_11_Template, 5, 1, "div", 47);
    i0.ɵɵelementStart(12, "div", 48)(13, "h3");
    i0.ɵɵtext(14, "Data Comparison");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(15, "div", 49)(16, "button", 50);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_85_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setComparisonView("input")); });
    i0.ɵɵtext(17, " Input ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(18, "button", 50);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_85_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setComparisonView("expected")); });
    i0.ɵɵtext(19, " Expected ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(20, "button", 50);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_85_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setComparisonView("actual")); });
    i0.ɵɵtext(21, " Actual ");
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(22, "div", 51)(23, "pre");
    i0.ɵɵtext(24);
    i0.ɵɵpipe(25, "json");
    i0.ɵɵelementEnd()()()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵclassProp("passed", ctx_r1.record.Status === "Passed")("failed", ctx_r1.record.Status === "Failed");
    i0.ɵɵadvance(2);
    i0.ɵɵproperty("ngClass", ctx_r1.getStatusIcon());
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate1("TEST ", ctx_r1.record.Status.toUpperCase(), "");
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1("Score: ", ctx_r1.formatScore(ctx_r1.record.Score), " / 1.0000");
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate2("", ctx_r1.record.PassedChecks, " of ", ctx_r1.record.TotalChecks, " checks passed");
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.getCheckResults().length > 0);
    i0.ɵɵadvance(5);
    i0.ɵɵclassProp("active", ctx_r1.comparisonView === "input");
    i0.ɵɵadvance(2);
    i0.ɵɵclassProp("active", ctx_r1.comparisonView === "expected");
    i0.ɵɵadvance(2);
    i0.ɵɵclassProp("active", ctx_r1.comparisonView === "actual");
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(25, 17, ctx_r1.getComparisonData()));
} }
function TestRunFormComponentExtended_div_86_a_11_Template(rf, ctx) { if (rf & 1) {
    const _r6 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "a", 37);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_86_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTest()); });
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r1.test.Name);
} }
function TestRunFormComponentExtended_div_86_div_64_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 70)(1, "h4");
    i0.ɵɵtext(2, "Error Message");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "pre");
    i0.ɵɵtext(4);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
} }
function TestRunFormComponentExtended_div_86_div_65_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 71)(1, "h4");
    i0.ɵɵtext(2, "Full Result Details (JSON)");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "pre");
    i0.ɵɵtext(4);
    i0.ɵɵpipe(5, "json");
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, ctx_r1.parsedData.resultDetails));
} }
function TestRunFormComponentExtended_div_86_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 63)(1, "div", 64)(2, "div", 65)(3, "div", 66);
    i0.ɵɵtext(4, "Test Run ID");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "div", 67);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(7, "div", 65)(8, "div", 66);
    i0.ɵɵtext(9, "Test");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(10, "div", 67);
    i0.ɵɵtemplate(11, TestRunFormComponentExtended_div_86_a_11_Template, 2, 1, "a", 3);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(12, "div", 65)(13, "div", 66);
    i0.ɵɵtext(14, "Status");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(15, "div", 67);
    i0.ɵɵtext(16);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(17, "div", 65)(18, "div", 66);
    i0.ɵɵtext(19, "Target Type");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(20, "div", 67);
    i0.ɵɵtext(21);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(22, "div", 65)(23, "div", 66);
    i0.ɵɵtext(24, "Started At");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(25, "div", 67);
    i0.ɵɵtext(26);
    i0.ɵɵpipe(27, "date");
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(28, "div", 65)(29, "div", 66);
    i0.ɵɵtext(30, "Completed At");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(31, "div", 67);
    i0.ɵɵtext(32);
    i0.ɵɵpipe(33, "date");
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(34, "div", 65)(35, "div", 66);
    i0.ɵɵtext(36, "Duration");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(37, "div", 67);
    i0.ɵɵtext(38);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(39, "div", 65)(40, "div", 66);
    i0.ɵɵtext(41, "Score");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(42, "div", 67);
    i0.ɵɵtext(43);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(44, "div", 65)(45, "div", 66);
    i0.ɵɵtext(46, "Cost");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(47, "div", 67);
    i0.ɵɵtext(48);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(49, "div", 65)(50, "div", 66);
    i0.ɵɵtext(51, "Passed Checks");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(52, "div", 67);
    i0.ɵɵtext(53);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(54, "div", 65)(55, "div", 66);
    i0.ɵɵtext(56, "Failed Checks");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(57, "div", 67);
    i0.ɵɵtext(58);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(59, "div", 65)(60, "div", 66);
    i0.ɵɵtext(61, "Total Checks");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(62, "div", 67);
    i0.ɵɵtext(63);
    i0.ɵɵelementEnd()()();
    i0.ɵɵtemplate(64, TestRunFormComponentExtended_div_86_div_64_Template, 5, 1, "div", 68)(65, TestRunFormComponentExtended_div_86_div_65_Template, 6, 3, "div", 69);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r1.record.ID);
    i0.ɵɵadvance(5);
    i0.ɵɵproperty("ngIf", ctx_r1.test);
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.record.Status);
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.record.TargetType || "N/A");
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(27, 14, ctx_r1.record.StartedAt, "medium"));
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(33, 17, ctx_r1.record.CompletedAt, "medium"));
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r1.calculateDuration());
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.formatScore(ctx_r1.record.Score));
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.formatCost(ctx_r1.record.CostUSD));
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.record.PassedChecks);
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.record.FailedChecks);
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(ctx_r1.record.TotalChecks);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.record.ErrorMessage);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.record.ResultDetails);
} }
function TestRunFormComponentExtended_div_87_div_1_div_4_span_9_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span");
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r8 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1("$", run_r8.TotalCost, "");
} }
function TestRunFormComponentExtended_div_87_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
    const _r7 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 78);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_87_div_1_div_4_Template_div_click_0_listener() { const run_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openAIAgentRun(run_r8.ID)); });
    i0.ɵɵelementStart(1, "div", 79);
    i0.ɵɵelement(2, "i", 29);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
    i0.ɵɵtext(5);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "div", 82)(7, "span");
    i0.ɵɵtext(8);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(9, TestRunFormComponentExtended_div_87_div_1_div_4_span_9_Template, 2, 1, "span", 83);
    i0.ɵɵelementEnd()();
    i0.ɵɵelement(10, "i", 84);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r8 = ctx.$implicit;
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(run_r8.Agent);
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate(run_r8.Status);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", run_r8.TotalCost);
} }
function TestRunFormComponentExtended_div_87_div_1_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 75)(1, "h3");
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 76);
    i0.ɵɵtemplate(4, TestRunFormComponentExtended_div_87_div_1_div_4_Template, 11, 3, "div", 77);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1("AI Agent Runs (", ctx_r1.aiAgentRuns.length, ")");
    i0.ɵɵadvance(2);
    i0.ɵɵproperty("ngForOf", ctx_r1.aiAgentRuns);
} }
function TestRunFormComponentExtended_div_87_div_2_div_4_span_7_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span");
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r10 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1("$", run_r10.TotalCost, "");
} }
function TestRunFormComponentExtended_div_87_div_2_div_4_Template(rf, ctx) { if (rf & 1) {
    const _r9 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 78);
    i0.ɵɵlistener("click", function TestRunFormComponentExtended_div_87_div_2_div_4_Template_div_click_0_listener() { const run_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openAIPromptRun(run_r10.ID)); });
    i0.ɵɵelementStart(1, "div", 85);
    i0.ɵɵelement(2, "i", 86);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 80)(4, "div", 81);
    i0.ɵɵtext(5);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "div", 82);
    i0.ɵɵtemplate(7, TestRunFormComponentExtended_div_87_div_2_div_4_span_7_Template, 2, 1, "span", 83);
    i0.ɵɵelementEnd()();
    i0.ɵɵelement(8, "i", 84);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const run_r10 = ctx.$implicit;
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate(run_r10.Prompt || run_r10.Model);
    i0.ɵɵadvance(2);
    i0.ɵɵproperty("ngIf", run_r10.TotalCost);
} }
function TestRunFormComponentExtended_div_87_div_2_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 75)(1, "h3");
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "div", 76);
    i0.ɵɵtemplate(4, TestRunFormComponentExtended_div_87_div_2_div_4_Template, 9, 2, "div", 77);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1("AI Prompt Runs (", ctx_r1.aiPromptRuns.length, ")");
    i0.ɵɵadvance(2);
    i0.ɵɵproperty("ngForOf", ctx_r1.aiPromptRuns);
} }
function TestRunFormComponentExtended_div_87_div_3_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 87);
    i0.ɵɵelement(1, "i", 88);
    i0.ɵɵelementStart(2, "p");
    i0.ɵɵtext(3, "No AI runs associated with this test execution");
    i0.ɵɵelementEnd()();
} }
function TestRunFormComponentExtended_div_87_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 72);
    i0.ɵɵtemplate(1, TestRunFormComponentExtended_div_87_div_1_Template, 5, 2, "div", 73)(2, TestRunFormComponentExtended_div_87_div_2_Template, 5, 2, "div", 73)(3, TestRunFormComponentExtended_div_87_div_3_Template, 4, 0, "div", 74);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.aiAgentRuns.length > 0);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.aiPromptRuns.length > 0);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.aiRunsLoaded && ctx_r1.aiAgentRuns.length === 0 && ctx_r1.aiPromptRuns.length === 0);
} }
function TestRunFormComponentExtended_div_88_div_1_div_1_div_10_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 101);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const feedback_r11 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" Automated Result: ", feedback_r11.IsCorrect ? "Correct" : "Incorrect", " ");
} }
function TestRunFormComponentExtended_div_88_div_1_div_1_div_11_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 102);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const feedback_r11 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" ", feedback_r11.CorrectionSummary, " ");
} }
function TestRunFormComponentExtended_div_88_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 93)(1, "div", 94)(2, "div", 95);
    i0.ɵɵelement(3, "i", 96);
    i0.ɵɵtext(4);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "div", 97);
    i0.ɵɵtext(6);
    i0.ɵɵpipe(7, "date");
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(8, "div", 98);
    i0.ɵɵtext(9);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(10, TestRunFormComponentExtended_div_88_div_1_div_1_div_10_Template, 2, 1, "div", 99)(11, TestRunFormComponentExtended_div_88_div_1_div_1_div_11_Template, 2, 1, "div", 100);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const feedback_r11 = ctx.$implicit;
    i0.ɵɵadvance(4);
    i0.ɵɵtextInterpolate1(" ", feedback_r11.ReviewerUserID, " ");
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(7, 5, feedback_r11.__mj_CreatedAt, "medium"), " ");
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate1(" Rating: ", feedback_r11.Rating, "/10 ");
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", feedback_r11.IsCorrect !== null);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", feedback_r11.CorrectionSummary);
} }
function TestRunFormComponentExtended_div_88_div_1_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 91);
    i0.ɵɵtemplate(1, TestRunFormComponentExtended_div_88_div_1_div_1_Template, 12, 8, "div", 92);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngForOf", ctx_r1.feedbacks);
} }
function TestRunFormComponentExtended_div_88_div_2_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 87);
    i0.ɵɵelement(1, "i", 88);
    i0.ɵɵelementStart(2, "p");
    i0.ɵɵtext(3, "No feedback submitted for this test run");
    i0.ɵɵelementEnd()();
} }
function TestRunFormComponentExtended_div_88_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 89);
    i0.ɵɵtemplate(1, TestRunFormComponentExtended_div_88_div_1_Template, 2, 1, "div", 90)(2, TestRunFormComponentExtended_div_88_div_2_Template, 4, 0, "div", 74);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.feedbacks.length > 0);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngIf", ctx_r1.feedbackLoaded && ctx_r1.feedbacks.length === 0);
} }
let TestRunFormComponentExtended = class TestRunFormComponentExtended extends TestRunFormComponent {
    constructor(elementRef, sharedService, router, route, cdr) {
        super(elementRef, sharedService, router, route, cdr);
        this.router = router;
        this.cdr = cdr;
        this.destroy$ = new Subject();
        // UI state
        this.activeTab = 'overview';
        this.loading = false;
        this.error = null;
        this.aiRunsLoaded = false;
        this.feedbackLoaded = false;
        // Related entities
        this.test = null;
        this.testSuiteRun = null;
        this.aiAgentRuns = [];
        this.aiPromptRuns = [];
        this.feedbacks = [];
        // Parsed JSON data
        this.parsedData = {};
        // Active comparison view
        this.comparisonView = 'input';
    }
    async ngOnInit() {
        await super.ngOnInit();
        if (this.record && this.record.ID) {
            await this.loadRelatedData();
            this.parseJsonFields();
        }
    }
    ngOnDestroy() {
        this.destroy$.next();
        this.destroy$.complete();
    }
    async loadRelatedData() {
        this.loading = true;
        try {
            // Load test
            if (this.record.TestID) {
                const md = new Metadata();
                const test = await md.GetEntityObject('MJ: Tests');
                if (test && await test.Load(this.record.TestID)) {
                    this.test = test;
                }
            }
            // Load test suite run if part of a suite
            if (this.record.TestSuiteRunID) {
                const md = new Metadata();
                const suiteRun = await md.GetEntityObject('MJ: Test Suite Runs');
                if (suiteRun && await suiteRun.Load(this.record.TestSuiteRunID)) {
                    this.testSuiteRun = suiteRun;
                }
            }
            this.cdr.markForCheck();
        }
        catch (error) {
            console.error('Error loading related data:', error);
            this.error = 'Failed to load related data';
        }
        finally {
            this.loading = false;
            this.cdr.markForCheck();
        }
    }
    async loadAIRuns() {
        if (this.aiRunsLoaded)
            return;
        try {
            const rv = new RunView();
            const [agentRuns, promptRuns] = await rv.RunViews([
                {
                    EntityName: 'MJ: AI Agent Runs',
                    ExtraFilter: `TestRunID='${this.record.ID}'`,
                    OrderBy: 'StartedAt',
                    ResultType: 'entity_object'
                },
                {
                    EntityName: 'MJ: AI Prompt Runs',
                    ExtraFilter: `TestRunID='${this.record.ID}'`,
                    OrderBy: 'StartedAt',
                    ResultType: 'entity_object'
                }
            ]);
            if (agentRuns.Success) {
                this.aiAgentRuns = agentRuns.Results || [];
            }
            if (promptRuns.Success) {
                this.aiPromptRuns = promptRuns.Results || [];
            }
            this.aiRunsLoaded = true;
            this.cdr.markForCheck();
        }
        catch (error) {
            console.error('Error loading AI runs:', error);
        }
    }
    async loadFeedback() {
        if (this.feedbackLoaded)
            return;
        try {
            const rv = new RunView();
            const result = await rv.RunView({
                EntityName: 'MJ: Test Run Feedbacks',
                ExtraFilter: `TestRunID='${this.record.ID}'`,
                OrderBy: '__mj_CreatedAt DESC',
                ResultType: 'entity_object'
            });
            if (result.Success) {
                this.feedbacks = result.Results || [];
            }
            this.feedbackLoaded = true;
            this.cdr.markForCheck();
        }
        catch (error) {
            console.error('Error loading feedback:', error);
        }
    }
    parseJsonFields() {
        try {
            if (this.record.InputData) {
                this.parsedData.input = JSON.parse(this.record.InputData);
            }
            if (this.record.ExpectedOutputData) {
                this.parsedData.expected = JSON.parse(this.record.ExpectedOutputData);
            }
            if (this.record.ActualOutputData) {
                this.parsedData.actual = JSON.parse(this.record.ActualOutputData);
            }
            if (this.record.ResultDetails) {
                this.parsedData.resultDetails = JSON.parse(this.record.ResultDetails);
            }
        }
        catch (error) {
            console.error('Error parsing JSON fields:', error);
        }
    }
    changeTab(tab) {
        this.activeTab = tab;
        // Lazy load tabs
        if (tab === 'ai-runs' && !this.aiRunsLoaded) {
            this.loadAIRuns();
        }
        if (tab === 'feedback' && !this.feedbackLoaded) {
            this.loadFeedback();
        }
        this.cdr.markForCheck();
    }
    setComparisonView(view) {
        this.comparisonView = view;
        this.cdr.markForCheck();
    }
    getStatusColor() {
        switch (this.record.Status) {
            case 'Passed': return '#4caf50';
            case 'Failed': return '#f44336';
            case 'Error': return '#ff9800';
            case 'Running': return '#2196f3';
            case 'Pending': return '#ffc107';
            case 'Skipped': return '#9e9e9e';
            default: return '#999';
        }
    }
    getStatusIcon() {
        switch (this.record.Status) {
            case 'Passed': return 'fa-check-circle';
            case 'Failed': return 'fa-times-circle';
            case 'Error': return 'fa-exclamation-circle';
            case 'Running': return 'fa-spinner fa-spin';
            case 'Pending': return 'fa-clock';
            case 'Skipped': return 'fa-forward';
            default: return 'fa-question-circle';
        }
    }
    calculateDuration() {
        if (!this.record.DurationSeconds)
            return 'N/A';
        const seconds = this.record.DurationSeconds;
        if (seconds < 60)
            return `${seconds.toFixed(1)}s`;
        if (seconds < 3600) {
            const mins = Math.floor(seconds / 60);
            const secs = Math.floor(seconds % 60);
            return `${mins}m ${secs}s`;
        }
        const hours = Math.floor(seconds / 3600);
        const mins = Math.floor((seconds % 3600) / 60);
        return `${hours}h ${mins}m`;
    }
    formatScore(score) {
        if (score === null || score === undefined)
            return 'N/A';
        return score.toFixed(4);
    }
    formatCost(cost) {
        if (cost === null || cost === undefined)
            return 'N/A';
        return `$${cost.toFixed(6)}`;
    }
    openTest() {
        if (this.test) {
            SharedService.Instance.OpenEntityRecord('MJ: Tests', CompositeKey.FromID(this.test.ID));
        }
    }
    openTestSuiteRun() {
        if (this.testSuiteRun) {
            SharedService.Instance.OpenEntityRecord('MJ: Test Suite Runs', CompositeKey.FromID(this.testSuiteRun.ID));
        }
    }
    openAIAgentRun(runId) {
        SharedService.Instance.OpenEntityRecord('MJ: AI Agent Runs', CompositeKey.FromID(runId));
    }
    openAIPromptRun(runId) {
        SharedService.Instance.OpenEntityRecord('MJ: AI Prompt Runs', CompositeKey.FromID(runId));
    }
    async reRunTest() {
        // TODO: Implement test re-run functionality
        console.log('Re-run test:', this.record.TestID);
    }
    async refresh() {
        await this.loadRelatedData();
        this.cdr.markForCheck();
    }
    getComparisonData() {
        switch (this.comparisonView) {
            case 'input': return this.parsedData.input;
            case 'expected': return this.parsedData.expected;
            case 'actual': return this.parsedData.actual;
            default: return null;
        }
    }
    getCheckResults() {
        if (!this.parsedData.resultDetails?.checkResults)
            return [];
        return this.parsedData.resultDetails.checkResults;
    }
    getPassRate() {
        const total = this.record.TotalChecks || 0;
        const passed = this.record.PassedChecks || 0;
        if (total === 0)
            return 0;
        return (passed / total) * 100;
    }
    static { this.ɵfac = function TestRunFormComponentExtended_Factory(t) { return new (t || TestRunFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
    static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestRunFormComponentExtended, selectors: [["mj-test-run-form"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 89, vars: 39, consts: [[1, "test-run-form"], [1, "test-run-header"], [1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["class", "fas fa-chevron-right", 4, "ngIf"], [1, "header-content"], [1, "header-left"], [1, "test-run-icon"], [1, "fas", "fa-flask"], [1, "test-run-info"], [1, "test-run-meta"], [1, "status-badge"], [1, "fas", 3, "ngClass"], ["class", "test-type", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "icon", "refresh", 3, "click"], ["kendoButton", "", "icon", "sync", 3, "click"], [1, "metrics-bar"], [1, "metric-card"], [1, "metric-label"], [1, "metric-value"], [1, "secondary-metrics"], [1, "metric-item"], ["class", "metric-item", 4, "ngIf"], [1, "tabs-container"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-list"], [1, "fas", "fa-robot"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-comments"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "details-tab", 4, "ngIf"], ["class", "ai-runs-tab", 4, "ngIf"], ["class", "feedback-tab", 4, "ngIf"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-chevron-right"], [1, "test-type"], [1, "tab-badge"], [1, "overview-tab"], [1, "result-hero"], [1, "result-icon"], [1, "result-text"], [1, "result-score"], [1, "result-checks"], ["class", "check-results", 4, "ngIf"], [1, "comparison-section"], [1, "comparison-tabs"], [1, "comparison-tab", 3, "click"], [1, "comparison-content"], [1, "check-results"], [1, "check-list"], ["class", "check-item", 3, "passed", "failed", 4, "ngFor", "ngForOf"], [1, "check-item"], [1, "check-icon"], [1, "fas"], [1, "check-content"], [1, "check-name"], [1, "check-details"], ["class", "check-weight", 4, "ngIf"], [1, "check-weight"], [1, "details-tab"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], ["class", "error-message", 4, "ngIf"], ["class", "result-details-json", 4, "ngIf"], [1, "error-message"], [1, "result-details-json"], [1, "ai-runs-tab"], ["class", "ai-runs-section", 4, "ngIf"], ["class", "no-data", 4, "ngIf"], [1, "ai-runs-section"], [1, "ai-run-list"], ["class", "ai-run-card", 3, "click", 4, "ngFor", "ngForOf"], [1, "ai-run-card", 3, "click"], [1, "ai-run-icon"], [1, "ai-run-content"], [1, "ai-run-name"], [1, "ai-run-meta"], [4, "ngIf"], [1, "fas", "fa-external-link-alt"], [1, "ai-run-icon", "prompt"], [1, "fas", "fa-comment-dots"], [1, "no-data"], [1, "fas", "fa-inbox"], [1, "feedback-tab"], ["class", "feedback-list", 4, "ngIf"], [1, "feedback-list"], ["class", "feedback-item", 4, "ngFor", "ngForOf"], [1, "feedback-item"], [1, "feedback-header"], [1, "feedback-user"], [1, "fas", "fa-user"], [1, "feedback-date"], [1, "feedback-rating"], ["class", "feedback-correct", 4, "ngIf"], ["class", "feedback-comments", 4, "ngIf"], [1, "feedback-correct"], [1, "feedback-comments"]], template: function TestRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
            i0.ɵɵtemplate(3, TestRunFormComponentExtended_a_3_Template, 3, 1, "a", 3)(4, TestRunFormComponentExtended_i_4_Template, 1, 0, "i", 4);
            i0.ɵɵelementStart(5, "span");
            i0.ɵɵtext(6);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(7, "div", 5)(8, "div", 6)(9, "div", 7);
            i0.ɵɵelement(10, "i", 8);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(11, "div", 9)(12, "h1");
            i0.ɵɵtext(13, "Test Run");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(14, "div", 10)(15, "span", 11);
            i0.ɵɵelement(16, "i", 12);
            i0.ɵɵtext(17);
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(18, TestRunFormComponentExtended_span_18_Template, 2, 1, "span", 13);
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(19, "div", 14)(20, "button", 15);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_20_listener() { return ctx.reRunTest(); });
            i0.ɵɵtext(21, " Re-run Test ");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(22, "button", 16);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_22_listener() { return ctx.refresh(); });
            i0.ɵɵtext(23, " Refresh ");
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(24, "div", 17)(25, "div", 18)(26, "div", 19);
            i0.ɵɵtext(27, "Started");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(28, "div", 20);
            i0.ɵɵtext(29);
            i0.ɵɵpipe(30, "date");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(31, "div", 18)(32, "div", 19);
            i0.ɵɵtext(33, "Completed");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(34, "div", 20);
            i0.ɵɵtext(35);
            i0.ɵɵpipe(36, "date");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(37, "div", 18)(38, "div", 19);
            i0.ɵɵtext(39, "Duration");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(40, "div", 20);
            i0.ɵɵtext(41);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(42, "div", 18)(43, "div", 19);
            i0.ɵɵtext(44, "Score");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(45, "div", 20);
            i0.ɵɵtext(46);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(47, "div", 18)(48, "div", 19);
            i0.ɵɵtext(49, "Cost");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(50, "div", 20);
            i0.ɵɵtext(51);
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(52, "div", 21)(53, "div", 22)(54, "span", 19);
            i0.ɵɵtext(55, "Checks:");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(56, "span", 20);
            i0.ɵɵtext(57);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(58, "div", 22)(59, "span", 19);
            i0.ɵɵtext(60, "Run By:");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(61, "span", 20);
            i0.ɵɵtext(62);
            i0.ɵɵelementEnd()();
            i0.ɵɵtemplate(63, TestRunFormComponentExtended_div_63_Template, 5, 2, "div", 23);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(64, "div", 24)(65, "div", 25)(66, "button", 26);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_66_listener() { return ctx.changeTab("overview"); });
            i0.ɵɵelement(67, "i", 27);
            i0.ɵɵelementStart(68, "span");
            i0.ɵɵtext(69, "Overview");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(70, "button", 26);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_70_listener() { return ctx.changeTab("details"); });
            i0.ɵɵelement(71, "i", 28);
            i0.ɵɵelementStart(72, "span");
            i0.ɵɵtext(73, "Details");
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(74, "button", 26);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_74_listener() { return ctx.changeTab("ai-runs"); });
            i0.ɵɵelement(75, "i", 29);
            i0.ɵɵelementStart(76, "span");
            i0.ɵɵtext(77, "AI Runs");
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(78, TestRunFormComponentExtended_span_78_Template, 2, 1, "span", 30);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(79, "button", 26);
            i0.ɵɵlistener("click", function TestRunFormComponentExtended_Template_button_click_79_listener() { return ctx.changeTab("feedback"); });
            i0.ɵɵelement(80, "i", 31);
            i0.ɵɵelementStart(81, "span");
            i0.ɵɵtext(82, "Feedback");
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(83, TestRunFormComponentExtended_span_83_Template, 2, 1, "span", 30);
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(84, "div", 32);
            i0.ɵɵtemplate(85, TestRunFormComponentExtended_div_85_Template, 26, 19, "div", 33)(86, TestRunFormComponentExtended_div_86_Template, 66, 20, "div", 34)(87, TestRunFormComponentExtended_div_87_Template, 4, 3, "div", 35)(88, TestRunFormComponentExtended_div_88_Template, 3, 2, "div", 36);
            i0.ɵɵelementEnd()();
        } if (rf & 2) {
            i0.ɵɵadvance(3);
            i0.ɵɵproperty("ngIf", ctx.test);
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.test);
            i0.ɵɵadvance(2);
            i0.ɵɵtextInterpolate1("Run #", ctx.record.ID.substring(0, 8), "");
            i0.ɵɵadvance(3);
            i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
            i0.ɵɵadvance(6);
            i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngClass", ctx.getStatusIcon());
            i0.ɵɵadvance();
            i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.test);
            i0.ɵɵadvance(11);
            i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(30, 33, ctx.record.StartedAt, "short"));
            i0.ɵɵadvance(6);
            i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(36, 36, ctx.record.CompletedAt, "short"));
            i0.ɵɵadvance(6);
            i0.ɵɵtextInterpolate(ctx.calculateDuration());
            i0.ɵɵadvance(5);
            i0.ɵɵtextInterpolate(ctx.formatScore(ctx.record.Score));
            i0.ɵɵadvance(5);
            i0.ɵɵtextInterpolate(ctx.formatCost(ctx.record.CostUSD));
            i0.ɵɵadvance(6);
            i0.ɵɵtextInterpolate2("", ctx.record.PassedChecks, "/", ctx.record.TotalChecks, "");
            i0.ɵɵadvance(5);
            i0.ɵɵtextInterpolate(ctx.record.RunByUser);
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.testSuiteRun);
            i0.ɵɵadvance(3);
            i0.ɵɵclassProp("active", ctx.activeTab === "overview");
            i0.ɵɵadvance(4);
            i0.ɵɵclassProp("active", ctx.activeTab === "details");
            i0.ɵɵadvance(4);
            i0.ɵɵclassProp("active", ctx.activeTab === "ai-runs");
            i0.ɵɵadvance(4);
            i0.ɵɵproperty("ngIf", ctx.aiRunsLoaded);
            i0.ɵɵadvance();
            i0.ɵɵclassProp("active", ctx.activeTab === "feedback");
            i0.ɵɵadvance(4);
            i0.ɵɵproperty("ngIf", ctx.feedbackLoaded);
            i0.ɵɵadvance(2);
            i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.activeTab === "details");
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.activeTab === "ai-runs");
            i0.ɵɵadvance();
            i0.ɵɵproperty("ngIf", ctx.activeTab === "feedback");
        } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.ButtonComponent, i3.JsonPipe, i3.DatePipe], styles: [".test-run-form[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  background: #f8f9fa;\n}\n\n\n\n.test-run-header[_ngcontent-%COMP%] {\n  background: white;\n  border-bottom: 1px solid #e0e0e0;\n  padding: 20px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 13px;\n  color: #666;\n  margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] {\n  color: #2196f3;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  gap: 6px;\n}\n\n.breadcrumb[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover {\n  text-decoration: underline;\n}\n\n.header-content[_ngcontent-%COMP%] {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  margin-bottom: 20px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 16px;\n}\n\n.test-run-icon[_ngcontent-%COMP%] {\n  width: 56px;\n  height: 56px;\n  border-radius: 12px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: white;\n  font-size: 24px;\n}\n\n.test-run-info[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%] {\n  margin: 0 0 8px 0;\n  font-size: 24px;\n  font-weight: 600;\n  color: #333;\n}\n\n.test-run-meta[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 4px 12px;\n  border-radius: 12px;\n  color: white;\n  font-size: 12px;\n  font-weight: 600;\n}\n\n.test-type[_ngcontent-%COMP%] {\n  font-size: 14px;\n  color: #666;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 8px;\n}\n\n.metrics-bar[_ngcontent-%COMP%] {\n  display: grid;\n  grid-template-columns: repeat(5, 1fr);\n  gap: 16px;\n  margin-bottom: 16px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n  background: #f5f7fa;\n  border-radius: 8px;\n  padding: 12px;\n  text-align: center;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n  font-size: 11px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #999;\n  margin-bottom: 4px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n  font-size: 16px;\n  font-weight: 600;\n  color: #333;\n}\n\n.secondary-metrics[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 24px;\n  padding-top: 12px;\n  border-top: 1px solid #e0e0e0;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 8px;\n  font-size: 14px;\n}\n\n.metric-item[_ngcontent-%COMP%]   .metric-label[_ngcontent-%COMP%] {\n  color: #666;\n  text-transform: none;\n  letter-spacing: normal;\n}\n\n.metric-item[_ngcontent-%COMP%]   .metric-value[_ngcontent-%COMP%] {\n  color: #333;\n  font-weight: 500;\n  font-size: 14px;\n}\n\n.metric-item[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] {\n  color: #2196f3;\n  text-decoration: none;\n}\n\n.metric-item[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover {\n  text-decoration: underline;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n  background: white;\n  border-bottom: 1px solid #e0e0e0;\n}\n\n.tabs[_ngcontent-%COMP%] {\n  display: flex;\n  padding: 0 20px;\n  overflow-x: auto;\n}\n\n.tab[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 16px 20px;\n  border: none;\n  background: transparent;\n  border-bottom: 3px solid transparent;\n  color: #666;\n  font-size: 14px;\n  font-weight: 500;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n  color: #2196f3;\n  background: rgba(33, 150, 243, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n  color: #2196f3;\n  border-bottom-color: #2196f3;\n}\n\n.tab[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 16px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n  background: #e0e0e0;\n  color: #666;\n  padding: 2px 8px;\n  border-radius: 10px;\n  font-size: 11px;\n  font-weight: 600;\n}\n\n.tab.active[_ngcontent-%COMP%]   .tab-badge[_ngcontent-%COMP%] {\n  background: #e3f2fd;\n  color: #2196f3;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n  flex: 1;\n  overflow-y: auto;\n  padding: 20px;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.result-hero[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 32px;\n  text-align: center;\n  border: 3px solid #e0e0e0;\n}\n\n.result-hero.passed[_ngcontent-%COMP%] {\n  background: #e8f5e9;\n  border-color: #4caf50;\n}\n\n.result-hero.failed[_ngcontent-%COMP%] {\n  background: #ffebee;\n  border-color: #f44336;\n}\n\n.result-icon[_ngcontent-%COMP%] {\n  font-size: 64px;\n  margin-bottom: 16px;\n}\n\n.result-hero.passed[_ngcontent-%COMP%]   .result-icon[_ngcontent-%COMP%] {\n  color: #4caf50;\n}\n\n.result-hero.failed[_ngcontent-%COMP%]   .result-icon[_ngcontent-%COMP%] {\n  color: #f44336;\n}\n\n.result-text[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%] {\n  margin: 0 0 12px 0;\n  font-size: 32px;\n  font-weight: 700;\n  color: #333;\n}\n\n.result-score[_ngcontent-%COMP%] {\n  font-size: 20px;\n  font-weight: 600;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.result-checks[_ngcontent-%COMP%] {\n  font-size: 16px;\n  color: #999;\n}\n\n.check-results[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.check-results[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.check-list[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.check-item[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 12px;\n  padding: 12px;\n  border-radius: 8px;\n  border: 2px solid #e0e0e0;\n}\n\n.check-item.passed[_ngcontent-%COMP%] {\n  background: #f1f8f4;\n  border-color: #c8e6c9;\n}\n\n.check-item.failed[_ngcontent-%COMP%] {\n  background: #fef5f5;\n  border-color: #ffcdd2;\n}\n\n.check-icon[_ngcontent-%COMP%] {\n  font-size: 20px;\n  flex-shrink: 0;\n}\n\n.check-item.passed[_ngcontent-%COMP%]   .check-icon[_ngcontent-%COMP%] {\n  color: #4caf50;\n}\n\n.check-item.failed[_ngcontent-%COMP%]   .check-icon[_ngcontent-%COMP%] {\n  color: #f44336;\n}\n\n.check-content[_ngcontent-%COMP%] {\n  flex: 1;\n}\n\n.check-name[_ngcontent-%COMP%] {\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 4px;\n}\n\n.check-details[_ngcontent-%COMP%] {\n  font-size: 13px;\n  color: #666;\n  line-height: 1.4;\n}\n\n.check-weight[_ngcontent-%COMP%] {\n  font-size: 12px;\n  color: #999;\n  margin-top: 4px;\n}\n\n.comparison-section[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.comparison-section[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.comparison-tabs[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 16px;\n  border-bottom: 2px solid #e0e0e0;\n}\n\n.comparison-tab[_ngcontent-%COMP%] {\n  padding: 10px 20px;\n  border: none;\n  background: transparent;\n  color: #666;\n  font-size: 14px;\n  font-weight: 500;\n  cursor: pointer;\n  border-bottom: 3px solid transparent;\n  margin-bottom: -2px;\n  transition: all 0.2s ease;\n}\n\n.comparison-tab[_ngcontent-%COMP%]:hover {\n  color: #2196f3;\n}\n\n.comparison-tab.active[_ngcontent-%COMP%] {\n  color: #2196f3;\n  border-bottom-color: #2196f3;\n}\n\n.comparison-content[_ngcontent-%COMP%] {\n  background: #1e1e1e;\n  border-radius: 8px;\n  padding: 16px;\n  max-height: 400px;\n  overflow-y: auto;\n}\n\n.comparison-content[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%] {\n  margin: 0;\n  font-family: 'Courier New', monospace;\n  font-size: 13px;\n  line-height: 1.5;\n  color: #e0e0e0;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n\n\n\n.details-tab[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.details-grid[_ngcontent-%COMP%] {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: 16px;\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n  font-size: 12px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n  font-size: 14px;\n  color: #333;\n  word-wrap: break-word;\n}\n\n.detail-value[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] {\n  color: #2196f3;\n  text-decoration: none;\n}\n\n.detail-value[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover {\n  text-decoration: underline;\n}\n\n.error-message[_ngcontent-%COMP%], .result-details-json[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.error-message[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%], .result-details-json[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%] {\n  margin: 0 0 12px 0;\n  font-size: 16px;\n  font-weight: 600;\n  color: #333;\n}\n\n.error-message[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%], .result-details-json[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%] {\n  margin: 0;\n  font-family: 'Courier New', monospace;\n  font-size: 13px;\n  line-height: 1.5;\n  color: #333;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n  background: #f5f7fa;\n  padding: 16px;\n  border-radius: 8px;\n}\n\n\n\n.ai-runs-tab[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.ai-runs-section[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.ai-runs-section[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.ai-run-list[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.ai-run-card[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 16px;\n  background: #f8f9fa;\n  border: 2px solid transparent;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.ai-run-card[_ngcontent-%COMP%]:hover {\n  background: #e3f2fd;\n  border-color: #90caf9;\n}\n\n.ai-run-icon[_ngcontent-%COMP%] {\n  width: 40px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: #2196f3;\n  color: white;\n  border-radius: 8px;\n  font-size: 18px;\n  flex-shrink: 0;\n}\n\n.ai-run-icon.prompt[_ngcontent-%COMP%] {\n  background: #9c27b0;\n}\n\n.ai-run-content[_ngcontent-%COMP%] {\n  flex: 1;\n}\n\n.ai-run-name[_ngcontent-%COMP%] {\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 4px;\n}\n\n.ai-run-meta[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 12px;\n  font-size: 12px;\n  color: #666;\n}\n\n.ai-run-card[_ngcontent-%COMP%]    > i[_ngcontent-%COMP%] {\n  color: #999;\n  font-size: 14px;\n}\n\n\n\n.feedback-tab[_ngcontent-%COMP%] {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.feedback-list[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 16px;\n}\n\n.feedback-item[_ngcontent-%COMP%] {\n  padding: 16px;\n  background: #f8f9fa;\n  border-radius: 8px;\n  border: 1px solid #e0e0e0;\n}\n\n.feedback-header[_ngcontent-%COMP%] {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 12px;\n}\n\n.feedback-user[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n}\n\n.feedback-date[_ngcontent-%COMP%] {\n  font-size: 12px;\n  color: #999;\n}\n\n.feedback-rating[_ngcontent-%COMP%] {\n  font-size: 14px;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.feedback-correct[_ngcontent-%COMP%] {\n  font-size: 14px;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.feedback-comments[_ngcontent-%COMP%] {\n  font-size: 14px;\n  line-height: 1.5;\n  color: #333;\n  padding: 12px;\n  background: white;\n  border-radius: 6px;\n  border-left: 3px solid #2196f3;\n}\n\n\n\n.no-data[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 60px 20px;\n  color: #999;\n  text-align: center;\n}\n\n.no-data[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 48px;\n  margin-bottom: 16px;\n  opacity: 0.3;\n}\n\n.no-data[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] {\n  margin: 0;\n  font-size: 14px;\n}\n\n\n\n@media (max-width: 1200px) {\n  .metrics-bar[_ngcontent-%COMP%] {\n    grid-template-columns: repeat(3, 1fr);\n  }\n}\n\n@media (max-width: 768px) {\n  .metrics-bar[_ngcontent-%COMP%] {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .details-grid[_ngcontent-%COMP%] {\n    grid-template-columns: 1fr;\n  }\n\n  .header-content[_ngcontent-%COMP%] {\n    flex-direction: column;\n    gap: 16px;\n  }\n\n  .tabs[_ngcontent-%COMP%] {\n    overflow-x: auto;\n  }\n}"], changeDetection: 0 }); }
};
TestRunFormComponentExtended = __decorate([
    RegisterClass(BaseFormComponent, 'MJ: Test Runs')
], TestRunFormComponentExtended);
export { TestRunFormComponentExtended };
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestRunFormComponentExtended, [{
        type: Component,
        args: [{ selector: 'mj-test-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-run-form\">\n  <!-- Header Section -->\n  <div class=\"test-run-header\">\n    <div class=\"breadcrumb\">\n      <a href=\"javascript:void(0)\" (click)=\"openTest()\" *ngIf=\"test\">\n        <i class=\"fas fa-flask\"></i> {{ test.Name }}\n      </a>\n      <i class=\"fas fa-chevron-right\" *ngIf=\"test\"></i>\n      <span>Run #{{ record.ID.substring(0, 8) }}</span>\n    </div>\n\n    <div class=\"header-content\">\n      <div class=\"header-left\">\n        <div class=\"test-run-icon\" [style.background-color]=\"getStatusColor()\">\n          <i class=\"fas fa-flask\"></i>\n        </div>\n        <div class=\"test-run-info\">\n          <h1>Test Run</h1>\n          <div class=\"test-run-meta\">\n            <span class=\"status-badge\" [style.background-color]=\"getStatusColor()\">\n              <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n              {{ record.Status }}\n            </span>\n            <span class=\"test-type\" *ngIf=\"test\">{{ test.Type }}</span>\n          </div>\n        </div>\n      </div>\n      <div class=\"header-actions\">\n        <button kendoButton (click)=\"reRunTest()\" icon=\"refresh\">\n          Re-run Test\n        </button>\n        <button kendoButton (click)=\"refresh()\" icon=\"sync\">\n          Refresh\n        </button>\n      </div>\n    </div>\n\n    <!-- Metrics Bar -->\n    <div class=\"metrics-bar\">\n      <div class=\"metric-card\">\n        <div class=\"metric-label\">Started</div>\n        <div class=\"metric-value\">{{ record.StartedAt | date:'short' }}</div>\n      </div>\n      <div class=\"metric-card\">\n        <div class=\"metric-label\">Completed</div>\n        <div class=\"metric-value\">{{ record.CompletedAt | date:'short' }}</div>\n      </div>\n      <div class=\"metric-card\">\n        <div class=\"metric-label\">Duration</div>\n        <div class=\"metric-value\">{{ calculateDuration() }}</div>\n      </div>\n      <div class=\"metric-card\">\n        <div class=\"metric-label\">Score</div>\n        <div class=\"metric-value\">{{ formatScore(record.Score) }}</div>\n      </div>\n      <div class=\"metric-card\">\n        <div class=\"metric-label\">Cost</div>\n        <div class=\"metric-value\">{{ formatCost(record.CostUSD) }}</div>\n      </div>\n    </div>\n\n    <!-- Secondary Metrics -->\n    <div class=\"secondary-metrics\">\n      <div class=\"metric-item\">\n        <span class=\"metric-label\">Checks:</span>\n        <span class=\"metric-value\">{{ record.PassedChecks }}/{{ record.TotalChecks }}</span>\n      </div>\n      <div class=\"metric-item\">\n        <span class=\"metric-label\">Run By:</span>\n        <span class=\"metric-value\">{{ record.RunByUser }}</span>\n      </div>\n      <div class=\"metric-item\" *ngIf=\"testSuiteRun\">\n        <span class=\"metric-label\">Part of Suite:</span>\n        <a href=\"javascript:void(0)\" (click)=\"openTestSuiteRun()\">\n          {{ testSuiteRun.ID }} (Seq: {{ record.Sequence }})\n        </a>\n      </div>\n    </div>\n  </div>\n\n  <!-- Tabs -->\n  <div class=\"tabs-container\">\n    <div class=\"tabs\">\n      <button class=\"tab\" [class.active]=\"activeTab === 'overview'\" (click)=\"changeTab('overview')\">\n        <i class=\"fas fa-th-large\"></i>\n        <span>Overview</span>\n      </button>\n      <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n        <i class=\"fas fa-list\"></i>\n        <span>Details</span>\n      </button>\n      <button class=\"tab\" [class.active]=\"activeTab === 'ai-runs'\" (click)=\"changeTab('ai-runs')\">\n        <i class=\"fas fa-robot\"></i>\n        <span>AI Runs</span>\n        <span class=\"tab-badge\" *ngIf=\"aiRunsLoaded\">{{ aiAgentRuns.length + aiPromptRuns.length }}</span>\n      </button>\n      <button class=\"tab\" [class.active]=\"activeTab === 'feedback'\" (click)=\"changeTab('feedback')\">\n        <i class=\"fas fa-comments\"></i>\n        <span>Feedback</span>\n        <span class=\"tab-badge\" *ngIf=\"feedbackLoaded\">{{ feedbacks.length }}</span>\n      </button>\n    </div>\n  </div>\n\n  <!-- Tab Content -->\n  <div class=\"tab-content\">\n    <!-- Overview Tab -->\n    <div class=\"overview-tab\" *ngIf=\"activeTab === 'overview'\">\n      <!-- Result Hero -->\n      <div class=\"result-hero\" [class.passed]=\"record.Status === 'Passed'\" [class.failed]=\"record.Status === 'Failed'\">\n        <div class=\"result-icon\">\n          <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n        </div>\n        <div class=\"result-text\">\n          <h2>TEST {{ record.Status.toUpperCase() }}</h2>\n          <div class=\"result-score\">Score: {{ formatScore(record.Score) }} / 1.0000</div>\n          <div class=\"result-checks\">{{ record.PassedChecks }} of {{ record.TotalChecks }} checks passed</div>\n        </div>\n      </div>\n\n      <!-- Check Results -->\n      <div class=\"check-results\" *ngIf=\"getCheckResults().length > 0\">\n        <h3>Check Results</h3>\n        <div class=\"check-list\">\n          <div class=\"check-item\" *ngFor=\"let check of getCheckResults()\" [class.passed]=\"check.passed\" [class.failed]=\"!check.passed\">\n            <div class=\"check-icon\">\n              <i class=\"fas\" [class.fa-check-circle]=\"check.passed\" [class.fa-times-circle]=\"!check.passed\"></i>\n            </div>\n            <div class=\"check-content\">\n              <div class=\"check-name\">{{ check.name }}</div>\n              <div class=\"check-details\">{{ check.message }}</div>\n              <div class=\"check-weight\" *ngIf=\"check.weight\">Weight: {{ check.weight }}</div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Input / Expected / Actual Comparison -->\n      <div class=\"comparison-section\">\n        <h3>Data Comparison</h3>\n        <div class=\"comparison-tabs\">\n          <button class=\"comparison-tab\" [class.active]=\"comparisonView === 'input'\" (click)=\"setComparisonView('input')\">\n            Input\n          </button>\n          <button class=\"comparison-tab\" [class.active]=\"comparisonView === 'expected'\" (click)=\"setComparisonView('expected')\">\n            Expected\n          </button>\n          <button class=\"comparison-tab\" [class.active]=\"comparisonView === 'actual'\" (click)=\"setComparisonView('actual')\">\n            Actual\n          </button>\n        </div>\n        <div class=\"comparison-content\">\n          <pre>{{ getComparisonData() | json }}</pre>\n        </div>\n      </div>\n    </div>\n\n    <!-- Details Tab -->\n    <div class=\"details-tab\" *ngIf=\"activeTab === 'details'\">\n      <div class=\"details-grid\">\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Test Run ID</div>\n          <div class=\"detail-value\">{{ record.ID }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Test</div>\n          <div class=\"detail-value\">\n            <a href=\"javascript:void(0)\" (click)=\"openTest()\" *ngIf=\"test\">{{ test.Name }}</a>\n          </div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Status</div>\n          <div class=\"detail-value\">{{ record.Status }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Target Type</div>\n          <div class=\"detail-value\">{{ record.TargetType || 'N/A' }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Started At</div>\n          <div class=\"detail-value\">{{ record.StartedAt | date:'medium' }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Completed At</div>\n          <div class=\"detail-value\">{{ record.CompletedAt | date:'medium' }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Duration</div>\n          <div class=\"detail-value\">{{ calculateDuration() }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Score</div>\n          <div class=\"detail-value\">{{ formatScore(record.Score) }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Cost</div>\n          <div class=\"detail-value\">{{ formatCost(record.CostUSD) }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Passed Checks</div>\n          <div class=\"detail-value\">{{ record.PassedChecks }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Failed Checks</div>\n          <div class=\"detail-value\">{{ record.FailedChecks }}</div>\n        </div>\n        <div class=\"detail-item\">\n          <div class=\"detail-label\">Total Checks</div>\n          <div class=\"detail-value\">{{ record.TotalChecks }}</div>\n        </div>\n      </div>\n\n      <div class=\"error-message\" *ngIf=\"record.ErrorMessage\">\n        <h4>Error Message</h4>\n        <pre>{{ record.ErrorMessage }}</pre>\n      </div>\n\n      <div class=\"result-details-json\" *ngIf=\"record.ResultDetails\">\n        <h4>Full Result Details (JSON)</h4>\n        <pre>{{ parsedData.resultDetails | json }}</pre>\n      </div>\n    </div>\n\n    <!-- AI Runs Tab -->\n    <div class=\"ai-runs-tab\" *ngIf=\"activeTab === 'ai-runs'\">\n      <div class=\"ai-runs-section\" *ngIf=\"aiAgentRuns.length > 0\">\n        <h3>AI Agent Runs ({{ aiAgentRuns.length }})</h3>\n        <div class=\"ai-run-list\">\n          <div class=\"ai-run-card\" *ngFor=\"let run of aiAgentRuns\" (click)=\"openAIAgentRun(run.ID)\">\n            <div class=\"ai-run-icon\">\n              <i class=\"fas fa-robot\"></i>\n            </div>\n            <div class=\"ai-run-content\">\n              <div class=\"ai-run-name\">{{ run.Agent }}</div>\n              <div class=\"ai-run-meta\">\n                <span>{{ run.Status }}</span>\n                <span *ngIf=\"run.TotalCost\">${{ run.TotalCost }}</span>\n              </div>\n            </div>\n            <i class=\"fas fa-external-link-alt\"></i>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"ai-runs-section\" *ngIf=\"aiPromptRuns.length > 0\">\n        <h3>AI Prompt Runs ({{ aiPromptRuns.length }})</h3>\n        <div class=\"ai-run-list\">\n          <div class=\"ai-run-card\" *ngFor=\"let run of aiPromptRuns\" (click)=\"openAIPromptRun(run.ID)\">\n            <div class=\"ai-run-icon prompt\">\n              <i class=\"fas fa-comment-dots\"></i>\n            </div>\n            <div class=\"ai-run-content\">\n              <div class=\"ai-run-name\">{{ run.Prompt || run.Model }}</div>\n              <div class=\"ai-run-meta\">\n                <span *ngIf=\"run.TotalCost\">${{ run.TotalCost }}</span>\n              </div>\n            </div>\n            <i class=\"fas fa-external-link-alt\"></i>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"no-data\" *ngIf=\"aiRunsLoaded && aiAgentRuns.length === 0 && aiPromptRuns.length === 0\">\n        <i class=\"fas fa-inbox\"></i>\n        <p>No AI runs associated with this test execution</p>\n      </div>\n    </div>\n\n    <!-- Feedback Tab -->\n    <div class=\"feedback-tab\" *ngIf=\"activeTab === 'feedback'\">\n      <div class=\"feedback-list\" *ngIf=\"feedbacks.length > 0\">\n        <div class=\"feedback-item\" *ngFor=\"let feedback of feedbacks\">\n          <div class=\"feedback-header\">\n            <div class=\"feedback-user\">\n              <i class=\"fas fa-user\"></i>\n              {{ feedback.ReviewerUserID }}\n            </div>\n            <div class=\"feedback-date\">\n              {{ feedback.__mj_CreatedAt | date:'medium' }}\n            </div>\n          </div>\n          <div class=\"feedback-rating\">\n            Rating: {{ feedback.Rating }}/10\n          </div>\n          <div class=\"feedback-correct\" *ngIf=\"feedback.IsCorrect !== null\">\n            Automated Result: {{ feedback.IsCorrect ? 'Correct' : 'Incorrect' }}\n          </div>\n          <div class=\"feedback-comments\" *ngIf=\"feedback.CorrectionSummary\">\n            {{ feedback.CorrectionSummary }}\n          </div>\n        </div>\n      </div>\n\n      <div class=\"no-data\" *ngIf=\"feedbackLoaded && feedbacks.length === 0\">\n        <i class=\"fas fa-inbox\"></i>\n        <p>No feedback submitted for this test run</p>\n      </div>\n    </div>\n  </div>\n</div>\n", styles: [".test-run-form {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  background: #f8f9fa;\n}\n\n/* Header */\n.test-run-header {\n  background: white;\n  border-bottom: 1px solid #e0e0e0;\n  padding: 20px;\n}\n\n.breadcrumb {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 13px;\n  color: #666;\n  margin-bottom: 16px;\n}\n\n.breadcrumb a {\n  color: #2196f3;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  gap: 6px;\n}\n\n.breadcrumb a:hover {\n  text-decoration: underline;\n}\n\n.header-content {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  margin-bottom: 20px;\n}\n\n.header-left {\n  display: flex;\n  gap: 16px;\n}\n\n.test-run-icon {\n  width: 56px;\n  height: 56px;\n  border-radius: 12px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: white;\n  font-size: 24px;\n}\n\n.test-run-info h1 {\n  margin: 0 0 8px 0;\n  font-size: 24px;\n  font-weight: 600;\n  color: #333;\n}\n\n.test-run-meta {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n\n.status-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 4px 12px;\n  border-radius: 12px;\n  color: white;\n  font-size: 12px;\n  font-weight: 600;\n}\n\n.test-type {\n  font-size: 14px;\n  color: #666;\n}\n\n.header-actions {\n  display: flex;\n  gap: 8px;\n}\n\n.metrics-bar {\n  display: grid;\n  grid-template-columns: repeat(5, 1fr);\n  gap: 16px;\n  margin-bottom: 16px;\n}\n\n.metric-card {\n  background: #f5f7fa;\n  border-radius: 8px;\n  padding: 12px;\n  text-align: center;\n}\n\n.metric-label {\n  font-size: 11px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #999;\n  margin-bottom: 4px;\n}\n\n.metric-value {\n  font-size: 16px;\n  font-weight: 600;\n  color: #333;\n}\n\n.secondary-metrics {\n  display: flex;\n  gap: 24px;\n  padding-top: 12px;\n  border-top: 1px solid #e0e0e0;\n}\n\n.metric-item {\n  display: flex;\n  gap: 8px;\n  font-size: 14px;\n}\n\n.metric-item .metric-label {\n  color: #666;\n  text-transform: none;\n  letter-spacing: normal;\n}\n\n.metric-item .metric-value {\n  color: #333;\n  font-weight: 500;\n  font-size: 14px;\n}\n\n.metric-item a {\n  color: #2196f3;\n  text-decoration: none;\n}\n\n.metric-item a:hover {\n  text-decoration: underline;\n}\n\n/* Tabs */\n.tabs-container {\n  background: white;\n  border-bottom: 1px solid #e0e0e0;\n}\n\n.tabs {\n  display: flex;\n  padding: 0 20px;\n  overflow-x: auto;\n}\n\n.tab {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 16px 20px;\n  border: none;\n  background: transparent;\n  border-bottom: 3px solid transparent;\n  color: #666;\n  font-size: 14px;\n  font-weight: 500;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.tab:hover {\n  color: #2196f3;\n  background: rgba(33, 150, 243, 0.05);\n}\n\n.tab.active {\n  color: #2196f3;\n  border-bottom-color: #2196f3;\n}\n\n.tab i {\n  font-size: 16px;\n}\n\n.tab-badge {\n  background: #e0e0e0;\n  color: #666;\n  padding: 2px 8px;\n  border-radius: 10px;\n  font-size: 11px;\n  font-weight: 600;\n}\n\n.tab.active .tab-badge {\n  background: #e3f2fd;\n  color: #2196f3;\n}\n\n/* Tab Content */\n.tab-content {\n  flex: 1;\n  overflow-y: auto;\n  padding: 20px;\n}\n\n/* Overview Tab */\n.overview-tab {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.result-hero {\n  background: white;\n  border-radius: 12px;\n  padding: 32px;\n  text-align: center;\n  border: 3px solid #e0e0e0;\n}\n\n.result-hero.passed {\n  background: #e8f5e9;\n  border-color: #4caf50;\n}\n\n.result-hero.failed {\n  background: #ffebee;\n  border-color: #f44336;\n}\n\n.result-icon {\n  font-size: 64px;\n  margin-bottom: 16px;\n}\n\n.result-hero.passed .result-icon {\n  color: #4caf50;\n}\n\n.result-hero.failed .result-icon {\n  color: #f44336;\n}\n\n.result-text h2 {\n  margin: 0 0 12px 0;\n  font-size: 32px;\n  font-weight: 700;\n  color: #333;\n}\n\n.result-score {\n  font-size: 20px;\n  font-weight: 600;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.result-checks {\n  font-size: 16px;\n  color: #999;\n}\n\n.check-results {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.check-results h3 {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.check-list {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.check-item {\n  display: flex;\n  gap: 12px;\n  padding: 12px;\n  border-radius: 8px;\n  border: 2px solid #e0e0e0;\n}\n\n.check-item.passed {\n  background: #f1f8f4;\n  border-color: #c8e6c9;\n}\n\n.check-item.failed {\n  background: #fef5f5;\n  border-color: #ffcdd2;\n}\n\n.check-icon {\n  font-size: 20px;\n  flex-shrink: 0;\n}\n\n.check-item.passed .check-icon {\n  color: #4caf50;\n}\n\n.check-item.failed .check-icon {\n  color: #f44336;\n}\n\n.check-content {\n  flex: 1;\n}\n\n.check-name {\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 4px;\n}\n\n.check-details {\n  font-size: 13px;\n  color: #666;\n  line-height: 1.4;\n}\n\n.check-weight {\n  font-size: 12px;\n  color: #999;\n  margin-top: 4px;\n}\n\n.comparison-section {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.comparison-section h3 {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.comparison-tabs {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 16px;\n  border-bottom: 2px solid #e0e0e0;\n}\n\n.comparison-tab {\n  padding: 10px 20px;\n  border: none;\n  background: transparent;\n  color: #666;\n  font-size: 14px;\n  font-weight: 500;\n  cursor: pointer;\n  border-bottom: 3px solid transparent;\n  margin-bottom: -2px;\n  transition: all 0.2s ease;\n}\n\n.comparison-tab:hover {\n  color: #2196f3;\n}\n\n.comparison-tab.active {\n  color: #2196f3;\n  border-bottom-color: #2196f3;\n}\n\n.comparison-content {\n  background: #1e1e1e;\n  border-radius: 8px;\n  padding: 16px;\n  max-height: 400px;\n  overflow-y: auto;\n}\n\n.comparison-content pre {\n  margin: 0;\n  font-family: 'Courier New', monospace;\n  font-size: 13px;\n  line-height: 1.5;\n  color: #e0e0e0;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n\n/* Details Tab */\n.details-tab {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.details-grid {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: 16px;\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.detail-item {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n\n.detail-label {\n  font-size: 12px;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #999;\n}\n\n.detail-value {\n  font-size: 14px;\n  color: #333;\n  word-wrap: break-word;\n}\n\n.detail-value a {\n  color: #2196f3;\n  text-decoration: none;\n}\n\n.detail-value a:hover {\n  text-decoration: underline;\n}\n\n.error-message, .result-details-json {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.error-message h4, .result-details-json h4 {\n  margin: 0 0 12px 0;\n  font-size: 16px;\n  font-weight: 600;\n  color: #333;\n}\n\n.error-message pre, .result-details-json pre {\n  margin: 0;\n  font-family: 'Courier New', monospace;\n  font-size: 13px;\n  line-height: 1.5;\n  color: #333;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n  background: #f5f7fa;\n  padding: 16px;\n  border-radius: 8px;\n}\n\n/* AI Runs Tab */\n.ai-runs-tab {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.ai-runs-section {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.ai-runs-section h3 {\n  margin: 0 0 16px 0;\n  font-size: 18px;\n  font-weight: 600;\n  color: #333;\n}\n\n.ai-run-list {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.ai-run-card {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 16px;\n  background: #f8f9fa;\n  border: 2px solid transparent;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.ai-run-card:hover {\n  background: #e3f2fd;\n  border-color: #90caf9;\n}\n\n.ai-run-icon {\n  width: 40px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: #2196f3;\n  color: white;\n  border-radius: 8px;\n  font-size: 18px;\n  flex-shrink: 0;\n}\n\n.ai-run-icon.prompt {\n  background: #9c27b0;\n}\n\n.ai-run-content {\n  flex: 1;\n}\n\n.ai-run-name {\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 4px;\n}\n\n.ai-run-meta {\n  display: flex;\n  gap: 12px;\n  font-size: 12px;\n  color: #666;\n}\n\n.ai-run-card > i {\n  color: #999;\n  font-size: 14px;\n}\n\n/* Feedback Tab */\n.feedback-tab {\n  background: white;\n  border-radius: 12px;\n  padding: 20px;\n}\n\n.feedback-list {\n  display: flex;\n  flex-direction: column;\n  gap: 16px;\n}\n\n.feedback-item {\n  padding: 16px;\n  background: #f8f9fa;\n  border-radius: 8px;\n  border: 1px solid #e0e0e0;\n}\n\n.feedback-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 12px;\n}\n\n.feedback-user {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 14px;\n  font-weight: 600;\n  color: #333;\n}\n\n.feedback-date {\n  font-size: 12px;\n  color: #999;\n}\n\n.feedback-rating {\n  font-size: 14px;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.feedback-correct {\n  font-size: 14px;\n  color: #666;\n  margin-bottom: 8px;\n}\n\n.feedback-comments {\n  font-size: 14px;\n  line-height: 1.5;\n  color: #333;\n  padding: 12px;\n  background: white;\n  border-radius: 6px;\n  border-left: 3px solid #2196f3;\n}\n\n/* No Data State */\n.no-data {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 60px 20px;\n  color: #999;\n  text-align: center;\n}\n\n.no-data i {\n  font-size: 48px;\n  margin-bottom: 16px;\n  opacity: 0.3;\n}\n\n.no-data p {\n  margin: 0;\n  font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n  .metrics-bar {\n    grid-template-columns: repeat(3, 1fr);\n  }\n}\n\n@media (max-width: 768px) {\n  .metrics-bar {\n    grid-template-columns: repeat(2, 1fr);\n  }\n\n  .details-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .header-content {\n    flex-direction: column;\n    gap: 16px;\n  }\n\n  .tabs {\n    overflow-x: auto;\n  }\n}\n"] }]
    }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }], null); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestRunFormComponentExtended, { className: "TestRunFormComponentExtended", filePath: "src/lib/custom/Tests/test-run-form.component.ts", lineNumber: 26 }); })();
export function LoadTestRunFormComponentExtended() {
    // Prevents tree-shaking
}
LoadTestRunFormComponentExtended();
//# sourceMappingURL=test-run-form.component.js.map